>>Вообще хорошо бы чтоб и монитор не требовал
ну а как ты будешь рисовать два разных места за один проход?
Телевизор - другое дело, тебе надо всего лишь отрисовать содержание авишки.
Итак, бродя по просторам инета, я наткнулся на код. Это код для ХЛ, код прорисовки видеотекстуры, в нём использован авикит. Но это только отрывок. Вот он:
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) {
Имея этот код и исходники демок авикита можно написать видеоплеер для ХЛ. Тут меня тормозит недостаток знаний C++ и OpenGL, а также недостаточное знание структуры клиентской дллки ХЛ(С сервером я намного дружнее). Но я буду думать, постараюсь сделать, тем более что есть образцы мониторов в Xash.
>>ну а как ты будешь рисовать два разных места за один проход?
А если мне надо нарисовать две разных авишки на одной карте? (Маловероятно, но чего в жизни не бывает )
Значит и у монитора можно ограничиться одним проходом, но лимит мониторов на карте будет более чем скромный: не более одного. Или не более одного в поле зрения игрока?
>>А если мне надо нарисовать две разных авишки на одной карте?
да хоть сто! ты ведь берешь картинку из видеофайла.
>>Значит и у монитора можно ограничиться одним проходом
Xash сам регулирует кол-во проходов в зависимости от кол-ва мониторов в непосредственной видимости игрока.
Например на карте Breakable Demo при непосредственной видимости 3х мониторов делается 4 прохода.
Ku2zoff не в игровом экране дело.
Представь себе ДВА места, которые никоим образом не видны друг из друга. Как же их можно нарисовать иначе, если не за два раза?
Итак, сегодня я полночи провозился с авикитом. В результате при инициализации рендера(в самом конце загрузки) игра повисает и завершается только диспетчером задач. Но прогресс уже есть: играется звук из ролика, чего раньше не было. Вызвал я это дело из V_CalcRefdef. Может надо инициализировать авишку чуть пораньше, например из Худ_ВидИнит, а обновление вызывать из КалкРефдеф? А то я всё из Рефдефа вызвал.
Дядя Миша с нуля у меня написать не получится, если использовать виндовый, то мне надо найти исходники... Ещё немного подумаю, не хочется всё бросать, ведь только начал понимать как авикит работает(и как фмод работает)
Добавлено 20-03-2008 в 17:07:
Итак, прогресс налицо. Ролик нормально открывается, воспроизводится и ставится на паузу(если это можно назвать паузой). Но слышен только звук - ОпенГЛ текстура не генерируется. Но думаю с этим можно разобраться.
>>я к чему говорил-то: авикит дллка, да плюс sdl, да еще fmod а ни дохрена ли мусора ради проигрывания видео?
Дядя Миша я решил авикит не использовать. Т.К. он действительно глючный. Нашёл статью некоего Джеффа Молофи(Jeff Molofee aka NeHe) Всё тоже самое, тока мусора нету. Используется виндовый видео декомпрессор. Правда, в примере нет проигрования звука, но это не суть важно, его можно воспроизводить через фмод, который уже подключен к спириту Killar'oм.
Ku2zoff что-ни день - удивительные открытия у тебя
совет тебе дам добрый - не юзай асм из этой статьи, GL_BGR будет вполне достаточно, просто тутору уже лет 6-7.