Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Disa от Декабрь 22, 2012, 01:28



Название: QGLShaderProgram controlShader и evaluationShader
Отправлено: Disa от Декабрь 22, 2012, 01:28
Доброй ночи.
Руки потихонечку дотягиваются до тесселяции в OpenGL. Вопрос, как правильно подгружать контрол и евал шейдер? Флагов для QGLShaderProgram я не нашел, видимо нужно что-то типа:

Код:
glCreateShader(...);
glShaderSource(...);
glCompileShader(...);

В итоге получается немного некрасиво, то есть часть шейдеров загружается так, часть так.

В общем буду благодарен за любую помощь.


Название: Re: QGLShaderProgram controlShader и evaluationShader
Отправлено: Igors от Декабрь 22, 2012, 12:55
Связкой Qt + OpenGL пока не пользовался. Юзал это (толковые исходники)
http://www.opengl.org/sdk/docs/tutorials/ClockworkCoders/downloads/GLSL_Lighting.zip (http://www.opengl.org/sdk/docs/tutorials/ClockworkCoders/downloads/GLSL_Lighting.zip)
Просматривая QGLShaderProgram вижу что он делает те же самые обвязки. Смысл простой: шейдера грузятся, компилируются и линкуются один раз (удовольствие дорогое). Для использования (перед рендером) вызывается glUseProgram(id), в конце соответственно glUseProgram(0). (см QGLShaderProgram::bind). После glUseProgram можно передавать переменные. По смыслу флажков QGLShaderProgram иметь не должен и низкоуровневые вызовы gl не нужны


Название: Re: QGLShaderProgram controlShader и evaluationShader
Отправлено: Disa от Декабрь 23, 2012, 23:48
Спасибо, я раньше не знал, что шейдер можно не делить на файлы. Сейчас буду ковыряться в обертке


Название: Re: QGLShaderProgram controlShader и evaluationShader
Отправлено: Igors от Декабрь 24, 2012, 10:11
Спасибо, я раньше не знал, что шейдер можно не делить на файлы. Сейчас буду ковыряться в обертке
Пример: есть vertex shader + fragment shader. Обычно их исходники - это 2 разных файла. Однако оба загружаются в один QGLShaderProgram, компилируются и линкуются. Получается одна "боевая единица" с общими переменными для обоих исходных


Название: Re: QGLShaderProgram controlShader и evaluationShader
Отправлено: Disa от Декабрь 25, 2012, 21:00
Понял, спасибо!)