Как использовать это расширение? В англоязычной спецификации не получилось разобраться. Пишу мульти API движок с DX9 и OpenGL, но мешает то, что в OpenGL нужно объединять шейдеры в программы. Я слышал, что есть расширение GL_ARB(и EXT)_separate_shader_objects. И ещё вопрос: оно поддерживается везде, где поддерживается GLSL или может не работать на некоторых видеокартах с поддержкой GLSL?
Как использовать GL_ARB_separate_shader_objects
Сообщений 1 страница 16 из 16
Поделиться22011-03-28 12:30:00
Насчет поддержки - официально вошло в OpenGL 4.1, но скорее всего лучше проверять по расширениям, т.е. работать явно будет не всюду.
Сам пока не разбирался - руки просто не дошли, надеюсь сделать статью
Поделиться32011-03-28 13:44:31
То есть это расширение появилось совсем недавно? Странно. В DirectX 9 это уже давным-давно есть. Должно и в OpenGL поддерживаться. Если расширение вышло совсем недавно, я так понимаю, что нужно по-любому иметь последние драйвера видеокарты?
Кстати, вопрос по расширениям: если расширение реализовано в какой-либо версии OpenGL и эта версия поддерживается видеокартой, то всегда ли будет поддерживаться это расширение? Например, в этом случае: если компьютер поддерживает OpenGL 4.1 то может ли он не поддерживать GL_ARB_separate_shader_objects?
Отредактировано gammaker (2011-03-28 13:45:18)
Поделиться42011-03-28 20:25:30
Было NV-расширение уже года два и как я понимаю никаких особенных требований к железу оно не накладывает.
Почему оно вошло именно в OpenGL 4.1, а не 3.3 не знаю, но если карточка и жрайвера поддерживают OpenGL 4.1, то это расширение будет обязатиельно поддержано.
Но оно может быть поддержано и для более старых версий
Поделиться52011-03-28 20:41:12
Может ли быть такое, например, что OpenGL 2.1 поддерживается, а расширение GLSL шейдеров - нет? А то я не знаю, можно ли использовать только расширения? Сейчас я проверяю сначала версию OpenGL, если в ней нет поддержки каких-то возможностей, то пытаюсь загрузить расширение. Меня интересует не только эта ситуация, но все остальные.
Отредактировано gammaker (2011-05-13 17:07:06)
Поделиться62011-03-29 10:18:21
Расширения могут поддержэиваться независимо, просто дляо каждой версии OpenGL какие-то расширение входят в состав OpenGL и тем самым их поддержка становится обязательной.
Обычно всегда есть поддержка большого числа различных расширений.
В принципе можно работать только через расширения - все развитие OpenGL идет в значительной степени путем добавления расширений
Поделиться72011-04-01 18:37:53
Когда будет статья? А то мне очень скоро понадобится использовать это расширение.
Поделиться82011-04-02 10:41:35
Постараюсь поскорее
Поделиться92011-05-13 17:04:21
Ну как дела со статьёй? Уже полтора месяца прошло.
Поделиться102011-07-12 18:04:15
Я так понял, статью по GL_ARB(EXT)_separate_shader_objects можно не ждать?
Поделиться112011-07-14 15:50:11
Обязтально будет. Как раз сейчас работаю над примерами. Просто со временем иногда бывает очень напряженно
Поделиться122011-09-26 17:29:26
О, наконец-то! Правда, оказалось, я не совсем к этому готов... Я делаю мультиапи движок, а там в DX шейдеры почему-то не работают. Ищу ошибку.
Кстати, у меня есть пара вопросов:
1. Что требуется для этого расширения? На каких видеокартах (интересует и ATI, и NVidia, и даже Intel) оно поддерживается? Ведь, это функционал DX9(если не раньше), он по идее должен работать везде, где поддерживается Direct3D 9, и всё зависит от драйверов?
2. С GLSL 1.00 будет работать?
Поделиться132011-09-30 10:01:53
Для того, чтобы использовать это как расширение, то если оно поддерживается в начале шейдера пишется
#extension GL_ARB_separate_shader_objects : enable
Поделиться142012-07-20 18:42:13
Старый glUseProgram как-нибудь влияет на pipeline? Можно ли использовать glUseProgram для установки uniform'ов? Не испортит ли это pipeline-объект?
GL_EXT_direct_state_access точно будет поддерживается на всех компьютерах, где есть GL_ARB_separate_shader_objects?
Update: Насчёт glProgramXXX нашёл. Значит, они вводятся именно этим расширением? Тогда я не пойму, как вообще связаны SSO и DSA? Эти функции принадлежат одновременно двум расширениям? И вошло ли DSA в ядро какой-нибудь версии OpenGL?
Отредактировано gammaker (2012-07-20 22:40:22)
Поделиться152012-07-21 17:25:21
Попробовал реализовать у себя в движке, но не получается! Вершинная программа не хочет линковаться! Она пишет про то, что идентификаторы gl_Position и gl_TexCoord не объявлены. Примеры из статьи тоже не работают. Вот что они выводят:
4.1 Log : Shader Compile Log: Vertex shader failed to compile with the following errors: ERROR: 0:22: error(#143) Undeclared identifier gl_Position ERROR: error(#273) 1 compilation errors. No code generated Link status = 0 Log : Link status = 1 Log : Link status = 1 Set eye/light - OpenGL error: GL_INVALID_OPERATION
Поделиться162012-07-22 12:11:48
Всё решилось. На gamedev.ru помогли. Это оказался баг AMD, из-за которого он при компоновке программы не видит gl_Position и gl_TexCoord. Текстурные координаты стал передавать через in\out, а gl_Position объявил сам.