2010-01-16 11 views
4

Я начал играть с OpenGL в Python, используя PyOpenGL 3.0.1b.Новое для OpenGL и устаревание

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

В функции http://pyopengl.sourceforge.net/documentation/manual-3.0/index.xhtml перечислены функции OpenGL, а также устарели ли они. Поэтому я подумал, что мне просто нужно найти некоторые современные учебники, которые не используют все это устаревшее дерьмо.

Позже, нет такой удачи! Устаревший образец кода после устаревшего образца кода ... есть ли где-нибудь я могу пойти на устаревшие учебники?

+1

Не пример, но этот пост на форуме имеет немного «помощь, я ничего не могу нарисовать!» вид помощи: http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=252272 –

+1

Хотя, если вы новичок в OpenGL, я бы серьезно рекомендовал сначала изучить стиль OpenGL 2 (много учебников на том). 2.x для начинающих гораздо проще, и его не так сложно переключить на 3.x позже. –

+2

Я считаю, что начать с OpenGL 2.x опасно. Есть много способов сделать что-то в 2.x, и есть шанс, что вы начнете изучать те, которые устарели в 3.x. –

ответ

2

OpenGL ES 2.0 на самом деле очень похож на OpenGL 3, при этом некоторые функциональные возможности удалены (например, множественные целевые объекты визуализации, некоторые команды шейдера и т. Д.). В книге руководства по программированию OpenGL ES 2.0 есть несколько руководств и исходных кодов, доступных для загрузки, что может помочь вам приступить к работе с OpenGL 3.0. Компиляции в ES 2.0 также будут скомпилированы для новых спецификаций OpenGL. Вы также можете найти учебники ES 2.0 в Интернете.

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

+2

minor nit-pick. GL3 очень похож на GL ES 2.0. В конце концов, ES 2.0 был первым. – Bahbar

+0

@ Бахбар Я не знаю, почему сходство должно быть хронологическим. Разве это не симметричное свойство? –

+0

Я бы предпочел не изучать рабочий стол GL через GLES, так как это создает гораздо больше проблем. @OP Посмотрите на ответ tomriddle, если вы все еще заинтересованы и еще не сделали ошибку, чтобы купить книгу по API, который вы не собираетесь использовать. –

2

Как я рекомендую обучения это взять фиксированный и медленно начинайте превращать его в основной профиль, добавляя каждый бит за раз. В основном есть 3 основные вещи, которые вам нужно решать, и, к сожалению, там все довольно большие и привязываются друг к другу таким образом, что, если вы ничего не получаете на экране, вы не знаете, какой бит сломан. Но если вы можете сделать это правильно, вы должны быть в порядке.

Сначала изучите объекты буфера вершин и объект вершинного массива. Для того, чтобы угробить glBegin, glEnd, glVertex3f, glColor4f, glNormal3f, glTexCoord2f и т.д ...

Learn ручные матричные преобразования в канаву glRotatef, glTranslate, glPushMatrix, glPopMatrix, glMatrixMode, glLoadIdentity, GL_PROJECTION, GL_MODELVIEW, glFrustum, glOrtho, gluLookAt, gluPerspective, gluOrtho2. Я рекомендую посмотреть на glm, который упоминает сайт OpenGL в своем SDK. Хотя вы по-прежнему используете фиксированные функциональные компоненты в непрофильном профиле, вы можете вручную загрузить матрицу с помощью glLoadMatrixf, позже вам понадобится привязать матрицы к шейдерам.

Изучите основные шейдеры GLSL. Есть устаревшие gl_vertex, gl_normal, ftransform(), которые все еще должны работать с VBO, вы можете использовать их до тех пор, пока не будет полностью настроена привязка шейдеров.

Затем выполните все привязки шейдеров, используйте атрибуты вершин вместо фиксированных gl_vertex и gl_position. Используйте форму для загрузки модели и матриц проекции, а ftransform(). и такие вещи, как огни и свойства материала (я, как правило, загружаю проект modelviewprojection, а не только проецирование, поэтому шейдер не вычисляет это каждый раз).

Наконец, используйте основной профиль, вам понадобится инструментарий для окон, который поддерживает его создание. GLUT, GLFW. SMFL этого не делает. SDL 1.3-dev делает. К сожалению, я не думаю, что pygame. Основной профиль будет препятствовать любой устаревшей функциональности, которая осталась лежащей.

+1

Принимая во внимание, что это довольно хорошая идея, это скорее тренировочное упражнение, когда он нашел некоторые учебные ресурсы и поэтому не отвечает на этот вопрос. –

 Смежные вопросы

  • Нет связанных вопросов^_^