Дядя Миша писал: Aynekko мб просто слишком долго анализирует?
Ага, так и есть. Просто я закинул 17 вадников общим размеров как 1 хл-вад (без хл-вада есесно) и почти моментально все открылось. Этот секунд 20 открывал.
Паранойя у меня сыпала ошибками опенгла, начал разбираться. Оказалось, что когда биндится tr.screencolor движковой функцией GL_Bind, то pglEnable(GL_TEXTURE_2D) порождает ошибку GL_INVALID_VALUE. Но, согласно документации, glEnable в принципе не может дать GL_INVALID_VALUE. Есть мысли, как такое может быть?
Дядя Миша включил, ясности не очень добавило
В логе бесконечное количество ошибок OpenGL Error: glGetObjectParameterivARB parameter <pname> has an invalid enum '0x8741' (GL_INVALID_ENUM)
Я не нашел никакой документации на glGetObjectParameterivARB, но также не нашел примеров использования, где бы в качестве pname стояло GL_PROGRAM_BINARY_LENGTH (0x8741).
Еще периодически вылазит Error: GL_SelectTexture: bad tmu state 3553, возможно это является причиной ошибки при glEnable(GL_TEXTURE_2D)? Куда копать? Tmu же должен быть в диапазоне 0-15 или что-то типа того?
ncuxonaT писал: но также не нашел примеров использования, где бы в качестве pname стояло GL_PROGRAM_BINARY_LENGTH
gl_shader.cpp->GL_SaveGPUBinaryShader
Поставь в opengl.cfg gl_binaryshader "0"
посмотри, исчезнет ли ошибка.
Цитата:
ncuxonaT писал: Еще периодически вылазит Error: GL_SelectTexture: bad tmu state 3553, возможно это является причиной ошибки при glEnable(GL_TEXTURE_2D)?
Именно так. Это движок ругается. Где-то в GL_BindTexture или GL_SelectTexture недопустимое значение.
Добавлено 24-10-2020 в 20:30:
Ты может новый юниформ добавлял и неправильно его настроил.
Я имел в виду, что в энторнетах никто такого не делает. GL_PROGRAM_BINARY_LENGTH используется только в glGetProgramiv.
Цитата:
Дядя Миша писал: Поставь в opengl.cfg gl_binaryshader "0"
посмотри, исчезнет ли ошибка.
Исчезла, но теперь в логе бесконечное число сообщений о том, что type = GL_BYTE size = 3 у VERTEX_ATTRIB[2] и VERTEX_ATTRIB[3] не поддерживается нативно, и что 15 и 18 не являются оптимальными оффсетами, используйте выравнивание по 4 байта.
Цитата:
Дядя Миша писал: Ты может новый юниформ добавлял и неправильно его настроил.
Не, новых не добавлял. Tmu не автоматом назначается?
Добавлено 24-10-2020 в 21:12:
Заменил в общем pglGetObjectParameterivARB на pglGetProgramivARB, теперь у меня работает кэш шейдеров
code:OpenGL Notify: glDrawRangeElements uses input attribute 'VERTEX_ATTRIB[2]' which is specified as 'type = GL_BYTE size = 3'; this combination is not a natively supported input attribute type
OpenGL Notify: glDrawRangeElements uses input attribute 'VERTEX_ATTRIB[2]' with offset '15' that is not optimally aligned; consider aligning on a 4-byte boundary
OpenGL Notify: glDrawRangeElements uses input attribute 'VERTEX_ATTRIB[3]' which is specified as 'type = GL_BYTE size = 3'; this combination is not a natively supported input attribute type
OpenGL Notify: glDrawRangeElements uses input attribute 'VERTEX_ATTRIB[3]' with offset '18' that is not optimally aligned; consider aligning on a 4-byte boundary
это править gl_studiovbo, gl_world_new и vertex_fmt?
Нашел у себя ошибку, которая вызывала bad tmu state 3553, я неправильно биндил текстуру из фбо, которая в конце на экран рисуется. Но к glEnable GL_INVALID_VALUE оно никак не относится, дело в чем-то еще.