Qt 4.6 OpenGL GLSL - PullRequest
       14

Qt 4.6 OpenGL GLSL

2 голосов
/ 03 мая 2010

Я пытаюсь найти учебники NeHe для Qt, которые есть в GLSL.Поскольку давайте посмотрим правде в глаза, в старые времена OpenGL мертвы, а шейдеры - единственный выход.И с Qt-4.6 они представили классы QMatrix4x4, QVector3 и Shader.Но я не могу найти никаких учебных пособий для этого.

Все те, которые я нахожу, все используют дрянной SDL и / или GLUT (которые просто бесполезны).

1 Ответ

2 голосов
/ 04 мая 2010

Портирование кода OpenGL между языками и платформами GUI не должно сильно менять код. Например, при переходе от GLUT к Qt вы перемещаете код изменения формы GLUT в функцию resizeGL QGLWidget, а функцию отображения GLUT - в функцию paintGL QGLWidget. Это самое большое изменение от GLUT к Qt, помимо настроек.

Кроме того, все в значительной степени привязано к небольшому количеству бонусных утилит и классов. Вы в основном должны искать класс, когда вам это нужно. Например, «Я собираюсь использовать шейдер, так что давайте посмотрим, есть ли в Qt какие-либо вспомогательные классы». Вы найдете класс с именем QGLShader, который, кажется, помогает, но у него нет никакой документации, поэтому вы должны попробовать другой класс, который может иметь документацию, такую ​​как QGLShaderProgram.

http://doc.trolltech.com/4.6/qglshaderprogram.html#details

Если перейти к деталям, то приведем пример / руководство по его использованию и классу QGLShader.

Для небольших классов, таких как векторы и матрицы, вам нужно просто прочитать документацию по их функциям, что достаточно просто. Векторы, например, имеют класс QVector3. Я могу посмотреть на его страницу класса и увидеть, что она обладает нормальной функциональностью, которую я ожидал бы в векторном классе, таком как нормализация, добавление и т. Д. Учебник по чему-то так простому мне не очень помог бы.

По моему опыту, это стандартный способ использования оберток в OpenGL. В JOGL, например, есть большой класс Texture, который полезен для текстуры io. Когда мне нужно было добавить текстуры, я нашел это, просто выполнив поиск по «текстуре» в javadoc.

...