У меня есть некоторые фундаментальные моменты/вопросы об 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 не дружат с методами в пространствах имен (как я видел в других вопросах).