Russian Qt Forum
Ноябрь 01, 2024, 16:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGLShaderProgram controlShader и evaluationShader  (Прочитано 3586 раз)
Disa
Гость
« : Декабрь 22, 2012, 01:28 »

Доброй ночи.
Руки потихонечку дотягиваются до тесселяции в OpenGL. Вопрос, как правильно подгружать контрол и евал шейдер? Флагов для QGLShaderProgram я не нашел, видимо нужно что-то типа:

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

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

В общем буду благодарен за любую помощь.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Декабрь 22, 2012, 12:55 »

Связкой Qt + OpenGL пока не пользовался. Юзал это (толковые исходники)
http://www.opengl.org/sdk/docs/tutorials/ClockworkCoders/downloads/GLSL_Lighting.zip
Просматривая QGLShaderProgram вижу что он делает те же самые обвязки. Смысл простой: шейдера грузятся, компилируются и линкуются один раз (удовольствие дорогое). Для использования (перед рендером) вызывается glUseProgram(id), в конце соответственно glUseProgram(0). (см QGLShaderProgram::bind). После glUseProgram можно передавать переменные. По смыслу флажков QGLShaderProgram иметь не должен и низкоуровневые вызовы gl не нужны
Записан
Disa
Гость
« Ответ #2 : Декабрь 23, 2012, 23:48 »

Спасибо, я раньше не знал, что шейдер можно не делить на файлы. Сейчас буду ковыряться в обертке
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Декабрь 24, 2012, 10:11 »

Спасибо, я раньше не знал, что шейдер можно не делить на файлы. Сейчас буду ковыряться в обертке
Пример: есть vertex shader + fragment shader. Обычно их исходники - это 2 разных файла. Однако оба загружаются в один QGLShaderProgram, компилируются и линкуются. Получается одна "боевая единица" с общими переменными для обоих исходных
Записан
Disa
Гость
« Ответ #4 : Декабрь 25, 2012, 21:00 »

Понял, спасибо!)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.291 секунд. Запросов: 23.