Компьютерная графика

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Компьютерная графика » Программирование графики и GPU » Как использовать GL_ARB_separate_shader_objects


Как использовать GL_ARB_separate_shader_objects

Сообщений 1 страница 16 из 16

1

Как использовать это расширение? В англоязычной спецификации не получилось разобраться. Пишу мульти API движок с DX9 и OpenGL, но мешает то, что в OpenGL нужно объединять шейдеры в программы. Я слышал, что есть расширение GL_ARB(и EXT)_separate_shader_objects. И ещё вопрос: оно поддерживается везде, где поддерживается GLSL или может не работать на некоторых видеокартах с поддержкой GLSL?

0

2

Насчет поддержки - официально вошло в OpenGL 4.1, но скорее всего лучше проверять по расширениям, т.е. работать явно будет не всюду.
Сам пока не разбирался - руки просто не дошли, надеюсь сделать статью

0

3

То есть это расширение появилось совсем недавно? Странно. В DirectX 9 это уже давным-давно есть. Должно и в OpenGL поддерживаться. Если расширение вышло совсем недавно, я так понимаю, что нужно по-любому иметь последние драйвера видеокарты?
Кстати, вопрос по расширениям: если расширение реализовано в какой-либо версии OpenGL и эта версия поддерживается видеокартой, то всегда ли будет поддерживаться это расширение? Например, в этом случае: если компьютер поддерживает OpenGL 4.1 то может ли он не поддерживать GL_ARB_separate_shader_objects?

Отредактировано gammaker (2011-03-28 13:45:18)

0

4

Было NV-расширение уже года два и как я понимаю никаких особенных требований к железу оно не накладывает.
Почему оно вошло именно в OpenGL 4.1, а не 3.3 не знаю, но если карточка и жрайвера поддерживают OpenGL 4.1, то это расширение будет обязатиельно поддержано.
Но оно может быть поддержано и для более старых версий

0

5

Может ли быть такое, например, что OpenGL 2.1 поддерживается, а расширение GLSL шейдеров - нет? А то я не знаю, можно ли использовать только расширения? Сейчас я проверяю сначала версию OpenGL, если в ней нет поддержки каких-то возможностей, то пытаюсь загрузить расширение. Меня интересует не только эта ситуация, но все остальные.

Отредактировано gammaker (2011-05-13 17:07:06)

0

6

Расширения могут поддержэиваться независимо, просто дляо каждой версии OpenGL какие-то расширение входят в состав OpenGL и тем самым их поддержка становится обязательной.
Обычно всегда есть поддержка большого числа различных расширений.
В принципе можно работать только через расширения - все развитие OpenGL идет в значительной степени путем добавления расширений

0

7

Когда будет статья? А то мне очень скоро понадобится использовать это расширение.

0

8

Постараюсь поскорее

0

9

Ну как дела со статьёй? Уже полтора месяца прошло.

0

10

Я так понял, статью по GL_ARB(EXT)_separate_shader_objects можно не ждать?

0

11

Обязтально будет. Как раз сейчас работаю над примерами. Просто со временем иногда бывает очень напряженно :(

0

12

О, наконец-то! Правда, оказалось, я не совсем к этому готов... Я делаю мультиапи движок, а там в DX шейдеры почему-то не работают. Ищу ошибку.
Кстати, у меня есть пара вопросов:
1. Что требуется для этого расширения? На каких видеокартах (интересует и ATI, и NVidia, и даже Intel) оно поддерживается? Ведь, это функционал DX9(если не раньше), он по идее должен работать везде, где поддерживается Direct3D 9, и всё зависит от драйверов?
2. С GLSL 1.00 будет работать?

0

13

Для того, чтобы использовать это как расширение, то если оно поддерживается в начале шейдера пишется
#extension GL_ARB_separate_shader_objects : enable

0

14

Старый 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)

0

15

Попробовал реализовать у себя в движке, но не получается! Вершинная программа не хочет линковаться! Она пишет про то, что идентификаторы 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

0

16

Всё решилось. На gamedev.ru помогли. Это оказался баг AMD, из-за которого он при компоновке программы не видит gl_Position и gl_TexCoord. Текстурные координаты стал передавать через in\out, а gl_Position объявил сам.

0


Вы здесь » Компьютерная графика » Программирование графики и GPU » Как использовать GL_ARB_separate_shader_objects


создать форум