Так и не осилил запустить тремулуос под линуксом. Получаю от него bad getprocaddress без какого-либо объснения какую именно функцию не удалось загрузить.
Может, кто другой поймёт в чем дело, хотя подозреваю, что в расширении GL_ARB_multitexture, которое не используется с qeffects. Для запуска tremulous с другой библиотекой нужно в своём autogen.cfg изменить квар r_glDriver на libQeffectsGL.so.1 (после установки, разумеется).
FreeSlave
Ты смотри в лог QEffectsGL. В винде он перехватывает и логгирует все вызовы wglGetProcAddress, а в линуксе, соответственно, надо было сделать логгирование вызовов glXGetProcAddress. Там будет инфа о том, что игра запросила какое-то расширение, которое враппер не знает.
Цитата:
FreeSlave писал: что в расширении GL_ARB_multitexture, которое не используется с qeffects
Должно использоваться, QEffectsGL реализует его. Под виндой ку3 его охотно использует.
XaeroX
Действительно, InitializeExtensions вызывается в OnMakeCurrent, а я его заключил в #ifdef, ибо пока не разбирался с оконными функциями.
Добавлено 23-06-2013 в 21:40:
Переписал OnMakeCurrent. Теперь в лог выводятся расширения, в том числе Using extension: GL_ARB_multitexture (4 TMU). Но tremulous по-прежнему выдаёт то же самое.
Т.е. вместо glXGetProcAddress они тут используют обычный dlsym, и кастомная либа, разумеется, этих функций не предоставляет. В виндовых исходниках, как положено, используется wglGetProcAddress, так что проблемы не возникает. Дело в том, что glXGetProcAddress появилась позже всех остальных glX-функций, поэтому старые игры её и не используют. Похоже, придется включать проверку этого расширения в кастомную либу. Ну или перекомпилировать tremulous, но это плохой вариант
Добавлено 01-07-2013 в 03:54:
Tremulous запустился, правда изменений особых невидно. Нужен гуру X11, который сможет переписать ChooseMultisamplePixelFormat, да и проверить как я переписал остальное.
FreeSlave хороший грамотный код представляет собою самописную функцию GetProcAddress, которая по очереди пробует оба варианта.
Вот для примера в ксаше:
C++ Source Code:
1
/*
2
=================
3
GL_GetProcAddress
4
=================
5
*/
6
void *GL_GetProcAddress( constchar *name )
7
{
8
void *p = NULL;
9
10
if( pwglGetProcAddress != NULL )
11
p = (void *)pwglGetProcAddress( name );
12
if( !p ) p = (void *)Sys_GetProcAddress( &opengl_dll, name );
13
14
return p;
15
}
А не сидеть, как идиот и не прописывать условия для каждого расширения.
Сидел, пытался понять, к чему ты мне об этом говоришь. Так и не понял. Разве что сделать такую версию для поддержки более старого glx, где glXGetProcAddress не было. Только к делу это сейчас не относится. В плане, у Ксерокса проверок на существование wglGetProcAddress не было, так что я с glXGetProcAddress также написал. Можно конечно добавить описанный тобой вариант потом.
But the problem is, that Quake 3 is not generating the .LOG file.
Is very very extrange!
I put the files into the Quake 3 directory (next to the quake3.exe) and nothing happens.
I'm executing the 1.32 version of the Quake 3
I'm under Windows 7 64 bits
Mi specs are:
ATi HD 7950
Drivers CATALYST 13.9
However, in Doom 3 QeffectsGL work, but with glitches and visual errors.
And in Doom 3, when I take a screenshot, occur a terrible distorcion in the image.
I've attached the .LOG from Doom 3 and from Heretic II. The Quake 3 .LOG doesn't exist.
Cataflexia писал: I put the files into the Quake 3 directory (next to the quake3.exe) and nothing happens.
This is very very strange.
Looks like quake3 doesn't hook qeffects at all.
Did you download qeffects from the official repository as an archived dll, or you have compiled it yourself?
Is your quake3.exe a 32-bit executable? (I don't know if there are 64-bit versions of quake3 but who knows since it is opensource?)
By the way, both doom3 glitches look like driver-related bugs.
What is the level of Catalyst AI? Have you tried to disable it?
Well, have you got ANY QeffectsGL's effects working with ANY game (certainly except antialiasing and anisotropy, they are quite trivial)? If not, this definitely means driver incompatibility.