HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Телевизор в ХЛ
Помощь всех желающих
Страницы (8): « 1 [2] 3 4 5 6 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



>>Вообще хорошо бы чтоб и монитор не требовал
ну а как ты будешь рисовать два разных места за один проход?
Телевизор - другое дело, тебе надо всего лишь отрисовать содержание авишки.

Сообщить модератору | | IP: Записан
Сообщение: 27571

Старое сообщение 18-03-2008 15:24
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Итак, бродя по просторам инета, я наткнулся на код. Это код для ХЛ, код прорисовки видеотекстуры, в нём использован авикит. Но это только отрывок. Вот он:

C++ Source Code:
1
// Only setup the avi if it's actually a video screen
2
 
3
if (isVideoScreen && replacement[0] != '\0') {
4
  char *error_msg = NULL;
5
  long xres = 0;
6
  long yres = 0;
7
  float duration = 0.0f;
8
 
9
  movie = new AVIKit( absolute_replacement, false );
10
  if (movie->getError( &error_msg ) != AVIKIT_NOERROR) {
11
    gEngfuncs.Con_DPrintf( "SetupAvisFromEntities: Error opening %s: %s\n", absolute_replacement, error_msg );
12
    delete movie;
13
    break;
14
  }
15
  movie->getVideoInfo( &xres, &yres, &duration );
16
  gEngfuncs.Con_DPrintf( "SetupAvisFromEntities: Opened %s: %ld x %ld (%f secs)\n", replacement, xres, yres, duration );
17
  gEngfuncs.Con_DPrintf( "Video screen at (%d %d %d), with extents (%d %d %d)\n",
18
  (int)origin[0], (int)origin[1], (int)origin[2],
19
  (int)extents[0], (int)extents[1], (int)extents[2] );
20
 
21
  // Create the OpenGL texture
22
  GLuint texnum;
23
  glGenTextures( 1, &texnum );
24
 
25
  if (!AddComplexAvi( movie, texnum, origin, angles, extents, &error_msg )) {
26
    gEngfuncs.Con_DPrintf( "SetupAvisFromEntities: Error adding movie: %s\n", error_msg );
27
    delete movie;
28
  }
29
} else if (isVideoScreen) {
30
  gEngfuncs.Con_DPrintf( "SetupAvisFromEntities: Video screen didn't have a movie specified!\n" );
31
}
32
 
33
//Setting up the texture:
34
 
35
movie->getVideoInfo( &data->width, &data->height, &data->total_length );
36
glEnable( GL_TEXTURE_2D );
37
glBindTexture( GL_TEXTURE_2D, data->texture_index );
38
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
39
glTexImage2D( GL_TEXTURE_2D, 0, 3, data->width, data->height, 0, GL_RGB, GL_UNSIGNED_BYTE, tmpbuffer );
40
 
41
//Updating the texture each frame:
42
 
43
// Calculate the frame needed
44
int frame = i->movie->getVideoFrameNumber( i->current_time );
45
 
46
// If the frame has changed, re-upload it
47
if (frame != i->current_frame) {
48
  i->current_frame = frame;
49
  i->movie->getVideoFrame( (char*)i->buffer, frame );
50
 
51
  // If the video isn't a power of two on all sides, we need to resize it... <img src="images/smilies/frown.gif" border="0" alt="">
52
  if (i->resized_buffer) {
53
    gluScaleImage( GL_RGB, i->realwidth, i->realheight, GL_UNSIGNED_BYTE, i->buffer, i->width, i->height, GL_UNSIGNED_BYTE, i->resized_buffer );
54
    // ... and update the OpenGL texture ...
55
    glEnable(GL_TEXTURE_2D);
56
    glBindTexture( GL_TEXTURE_2D, i->texture_index );
57
    glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, i->width, i->height, GL_RGB, GL_UNSIGNED_BYTE, i->resized_buffer );
58
  } else {
59
    // ... and update the OpenGL texture ...
60
    glEnable(GL_TEXTURE_2D);
61
    glBindTexture( GL_TEXTURE_2D, i->texture_index );
62
    glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, i->width, i->height, GL_RGB, GL_UNSIGNED_BYTE, i->buffer );
63
  }
64
}
65
 
66
// If this is a complex movie, draw the polygons
67
if (i->texture_type == AVI_TEXTURE_USER) {
68
 
69
  glEnable( GL_TEXTURE_2D );
70
  glBindTexture( GL_TEXTURE_2D, i->texture_index );
71
  glDisable( GL_BLEND );
72
  glBegin( GL_QUADS );
73
 
74
  // Top left
75
  glColor3f( 1.0f, 1.0f, 1.0f );
76
  glTexCoord2f( 0.0f, 1.0f );
77
  glVertex3f( i->vertexes[0].x, i->vertexes[0].y, i->vertexes[0].z );
78
 
79
  // Bottom left
80
  glColor3f( 1.0f, 1.0f, 1.0f );
81
  glTexCoord2f( 0.0f, 0.0f );
82
  glVertex3f( i->vertexes[1].x, i->vertexes[1].y, i->vertexes[1].z );
83
 
84
  // Bottom right
85
  glColor3f( 1.0f, 1.0f, 1.0f );
86
  glTexCoord2f( 1.0f, 0.0f );
87
  glVertex3f( i->vertexes[2].x, i->vertexes[2].y, i->vertexes[2].z );
88
 
89
  // Top right
90
  glColor3f( 1.0f, 1.0f, 1.0f );
91
  glTexCoord2f( 1.0f, 1.0f );
92
  glVertex3f( i->vertexes[3].x, i->vertexes[3].y, i->vertexes[3].z );
93
 
94
  glEnd();
95
}

Имея этот код и исходники демок авикита можно написать видеоплеер для ХЛ. Тут меня тормозит недостаток знаний C++ и OpenGL, а также недостаточное знание структуры клиентской дллки ХЛ(С сервером я намного дружнее). Но я буду думать, постараюсь сделать, тем более что есть образцы мониторов в Xash.


>>ну а как ты будешь рисовать два разных места за один проход?

А если мне надо нарисовать две разных авишки на одной карте? (Маловероятно, но чего в жизни не бывает )
Значит и у монитора можно ограничиться одним проходом, но лимит мониторов на карте будет более чем скромный: не более одного. Или не более одного в поле зрения игрока?

Отредактировано Ku2zoff 18-03-2008 в 16:07

Сообщить модератору | | IP: Записан
Сообщение: 27572

Старое сообщение 18-03-2008 16:01
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



>>А если мне надо нарисовать две разных авишки на одной карте?
да хоть сто! ты ведь берешь картинку из видеофайла.
>>Значит и у монитора можно ограничиться одним проходом
Xash сам регулирует кол-во проходов в зависимости от кол-ва мониторов в непосредственной видимости игрока.
Например на карте Breakable Demo при непосредственной видимости 3х мониторов делается 4 прохода.

Сообщить модератору | | IP: Записан
Сообщение: 27573

Старое сообщение 18-03-2008 16:06
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



>>да хоть сто! ты ведь берешь картинку из видеофайла.

Точно! Что же я несу! Проходы нужны для извлечения картинки из игрового экрана, а в видеофайле кадр уже есть.

Сообщить модератору | | IP: Записан
Сообщение: 27574

Старое сообщение 18-03-2008 16:10
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Ku2zoff не в игровом экране дело.
Представь себе ДВА места, которые никоим образом не видны друг из друга. Как же их можно нарисовать иначе, если не за два раза?

Сообщить модератору | | IP: Записан
Сообщение: 27577

Старое сообщение 18-03-2008 17:34
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Итак, сегодня я полночи провозился с авикитом. В результате при инициализации рендера(в самом конце загрузки) игра повисает и завершается только диспетчером задач. Но прогресс уже есть: играется звук из ролика, чего раньше не было. Вызвал я это дело из V_CalcRefdef. Может надо инициализировать авишку чуть пораньше, например из Худ_ВидИнит, а обновление вызывать из КалкРефдеф? А то я всё из Рефдефа вызвал.

Сообщить модератору | | IP: Записан
Сообщение: 27632

Старое сообщение 19-03-2008 21:31
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Ku2zoff да забрось ты этот глючный авикит, лучше с нуля написать декомпрессор или использовать виндовый.

Сообщить модератору | | IP: Записан
Сообщение: 27641

Старое сообщение 20-03-2008 06:12
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Дядя Миша с нуля у меня написать не получится, если использовать виндовый, то мне надо найти исходники... Ещё немного подумаю, не хочется всё бросать, ведь только начал понимать как авикит работает(и как фмод работает)

Добавлено 20-03-2008 в 17:07:

Итак, прогресс налицо. Ролик нормально открывается, воспроизводится и ставится на паузу(если это можно назвать паузой). Но слышен только звук - ОпенГЛ текстура не генерируется. Но думаю с этим можно разобраться.

Сообщить модератору | | IP: Записан
Сообщение: 27645

Старое сообщение 20-03-2008 11:07
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



ну значит нарисовал неверна!
я к чему говорил-то: авикит дллка, да плюс sdl, да еще fmod а ни дохрена ли мусора ради проигрывания видео?

Сообщить модератору | | IP: Записан
Сообщение: 27688

Старое сообщение 20-03-2008 15:57
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Дядя Миша а sdl обязательно надо? Мож из-за того, что я его отцепил ничё и не работает?

Сообщить модератору | | IP: Записан
Сообщение: 27704

Старое сообщение 20-03-2008 18:25
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Ku2zoff я уже и не помню. Посмотри мод для хл - есть он там или нету?

Сообщить модератору | | IP: Записан
Сообщение: 27735

Старое сообщение 21-03-2008 07:46
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Дядя Миша sdl в моде нет, как я понял, он нужен для создания окна и управления сценой - движения камеры и т.п.

Сообщить модератору | | IP: Записан
Сообщение: 27750

Старое сообщение 21-03-2008 10:34
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Ku2zoff ну значит что-то неверно сделал. Может вертексы у тебя не в том порядке обходятся.

Сообщить модератору | | IP: Записан
Сообщение: 27762

Старое сообщение 21-03-2008 15:37
-
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



>>я к чему говорил-то: авикит дллка, да плюс sdl, да еще fmod а ни дохрена ли мусора ради проигрывания видео?

Дядя Миша я решил авикит не использовать. Т.К. он действительно глючный. Нашёл статью некоего Джеффа Молофи(Jeff Molofee aka NeHe) Всё тоже самое, тока мусора нету. Используется виндовый видео декомпрессор. Правда, в примере нет проигрования звука, но это не суть важно, его можно воспроизводить через фмод, который уже подключен к спириту Killar'oм.

Сообщить модератору | | IP: Записан
Сообщение: 27767

Старое сообщение 21-03-2008 17:19
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Ku2zoff что-ни день - удивительные открытия у тебя
совет тебе дам добрый - не юзай асм из этой статьи, GL_BGR будет вполне достаточно, просто тутору уже лет 6-7.

Сообщить модератору | | IP: Записан
Сообщение: 27768

Старое сообщение 21-03-2008 19:21
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 10:09. Новая тема    Ответить
Страницы (8): « 1 [2] 3 4 5 6 » ... Последняя »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Телевизор в ХЛ
Помощь всех желающих
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024