2012-05-19 3 views
-2

Я смущен. Я пытался начать с OpenGL, и у меня не было никакого успеха.Для всех, кто понимает OpenGL

подробнее: Я, похоже, пытался использовать Mesa 3D, который даже не является официальной версией OpenGL. Mesa 3D даже использует gpu? и у меня есть версия 4.0 (которая похожа на реализацию OpenGL версии 1.3). Я не знаю, как получить другую библиотеку реализации; Я даже не знаю, что там есть. (Mesa 3D был снабжен моим компилятором dev-cpp)

На самом деле, я действительно не совсем понимаю, что такое OpenGL.

Кроме того, я не могу получить freeglut или glut или glu для работы. Они называют несуществующие функции, такие как gluOrtho и gluPerspective. Это связано с использованием Mesa 3D? Есть ли способ, которым я мог бы на самом деле работать над этими целыми библиотеками?

+3

Пожалуйста, напишите _specific_ вопросы здесь, один вопрос ... вопрос. У вас там есть смесь вещей. Если вы получаете ошибки компоновщика, _read the docs_ и _follow учебники и образцы, которые вы нашли_. Что касается «что такое OpenGL», используйте поисковую систему, пожалуйста, есть тонны информации. – Mat

+0

Я пробовал использовать чат! но никто не слушает. – Codesmith

ответ

3

Фактически, я действительно не совсем понимаю, что такое OpenGL.

OpenGL сам по себе является лишь спецификацией API: набор функций, которые вы можете вызывать, а также специальные значения и токены и каковы эффекты каждого вызова. Затем реализации следуют этой спецификации, чтобы обеспечить рабочий OpenGL.

OpenGL - это растрирующий API для рисования, оптимизированный для рисования примитивов в 3D-пространстве. То есть вы предоставляете поток трехмерных координат и режим рисования, т. е. нарисуйте точки, линии или треугольники, а OpenGL затем преобразует 3D-данные в пространство 2D-экрана и нарисует плоские примитивы на холсте. Более поздние версии OpenGL уже не являются строго 3D-2D, но требуют так называемых шейдеров, которые представляют собой небольшие программы, которые описывают преобразование произвольной размерной геометрии в 2D экранное пространство.

Дополнительная функциональность - это выборка и интерполяция данных изображения (текстурирование) в качестве дополнительного источника данных при рисовании.


детали: Кажется, я пытался использовать Mesa 3D, который даже не является строго официальной реализации OpenGL в любом случае.

Почему? Если вы работаете в Windows, то вы должны использовать реализацию OpenGL, предоставляемую драйвером GPU, а не какую-то случайную библиотеку (хотя Mesa3D не является полностью случайным).

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

Может ли Mesa 3D использовать gpu?

Зависит. В Windows Mesa3D - только программный растеризатор. Однако для X.org (Linux, FreeBSD и т. Д.) Mesa3D является открытым исходным кодом OpenGL для графических процессоров, поэтому вы получаете ускорение GPU через mesa, если X.org настроен на использование драйвера, который может использовать Mesa3D.

Я не знаю, как получить другую библиотеку реализации; Я даже не знаю, что там есть.(Mesa 3D был снабжен моим компилятором dev-cpp)

Обычно вы получаете OpenGL как часть драйверов GPU. В Linux при установке драйверов с открытым исходным кодом это автоматически устанавливает Mesa3D. Но есть и закрытые исходные драйверы, и они используют совершенно другую кодовую базу.

Это действительно важно: Для разработки OpenGL вам не нужна специализированная библиотека OpenGL.

Обычно ваш компилятор поставляется с «opengl32.lib» (если в Windows - на других платформах вы просто указываете компоновщику ссылку на систему OpenGL). Однако это всего лишь оглавление для компоновщика, что может предложить реальная реализация OpenGL.

В Windows система opengl32.dll экспортирует только OpenGL-1.1. Для любой функциональности выше этого существует так называемый механизм расширения для загрузки функций более высокой версии. Вы обычно делаете это через библиотеку (в данном случае на самом деле библиотеку), например GLEW

+0

спасибо за ваш ответ; Наверное, так как никто больше не вежлив, как вы, я не могу ответить на мой вопрос. – Codesmith

+0

@AUTO: Я немного расширил свой ответ – datenwolf

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

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