У меня есть некоторые фундаментальные моменты/вопросы об OpenGL, не все из которых связаны с кодом, но и с концепциями. Буду признателен, если вы сможете ответить, подтвердить или расширить любой из них. Я предупреждаю вас, некоторые могут быть наивными, поэтому, пожалуйста, несите меня.
-
Я понимаю, что OpenGL - это просто стандарт, а не часть программного обеспечения. Например, "получение" OpenGL на самом деле предполагает получение сторонней реализации, которая не обязательно должна быть одобрена Khronos.
-
OpenGL обычно ссылается на комбинацию GL-утилит (GLU) и инструментария GL-утилиты (GLUT). У них есть методы, начинающиеся с
glu
иglut
, соответственно. и "базовые" методы OpenGL, начинающиеся с простоgl
, реализуются теми, которые делают графические драйверы, т.е. NVIDIA? -
Я предполагаю, что методы
glut
- это помощники, специфичные для ОС, напримерglutKeyboardFunc()
должны интерпретировать клавиатуру. Поэтому, если бы я хотел использовать более мощный альтернативный способ интерпретации ввода с клавиатуры, я бы просто использовал OS API. OpenGL сам по себе является чисто графикой, ноglut
имеет такие вещи, поскольку графика не сильно отличается от контроля в реальном времени. -
Мне кажется, что методы
glu
могут быть идентичны вызову серии методов нижнего уровняgl
. Одним из примеров, который я хотел бы назвать, являетсяglOrtho()
иgluPerspective()
. Мне кажется, что у меня одинаковые способы работы, но расчет перспективы может быть более сложным, поэтомуgluPerspective()
для удобства, но может просто решить некоторые методыgl
. -
Я изучил базовый OpenGL, используя freeglut в университете, и у меня есть такое видение "хардкорного" способа использования OpenGL, используя только низкоуровневые методы. Я не знаю, является ли это абсолютно наивной мыслью, но есть ли "профессиональный" способ написать OpenGL, чтобы получить максимальную функциональность? Например, разработчики игр, например, не использовали бы
glutPostRedisplay()
, например, верно? Это кажется слишком простым и удобным, как будто он скрывает многое из того, что происходит. Я подозреваю, что это также верно для С++, поскольку обратные вызовы GLUT не дружат с методами в пространствах имен (как я видел в других вопросах).