2014-02-17 3 views
0

Я заинтересован в том, чтобы поднять OpenGL, и я знаю, что он определяется как кроссплатформенность . Означает ли это, что я бы вводил код так же, как и в Windows, Mac или Linux?Является ли OpenGL тем же, независимо от платформы?

//example pseudocode to make a circle with a radius of 500 pixels and 5 pixels wide 
createCircle(500,5); 

Если набрано тем же это означает, что OpenGL имеет наборы API, сохраненные для Windows, и Mac, и на базе платформы программы выполняется на нем вызывает соответствующий один? Если это не так, то какой процесс здесь происходит?

ответ

1

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

+0

OpenGL не является библиотекой, это спецификация. API одинаковый для всех платформ, но он придерживается соглашений о вызовах хоста и базовых типов. – datenwolf

1

Из официальной документации: https://www.opengl.org/documentation/implementations/

Да, это так кажется. Его привязки API для большинства языков, по-видимому, одинаковы, по большей части. Тем не менее, поведение для некоторых языков может быть другим. Вам нужно будет посмотреть справочное руководство.

Для одного языка, такого как Java, Python и т. Д., Который использует интерпретаторы, такие как JVM. Он должен быть таким же для любой системы, поскольку это было частью дизайнерского решения.

2

Для аспектов 3D-чертежа, да. Но практически, если не используется промежуточное программное обеспечение, API/использование, необходимое для полного приложения OpenGL, различаются. В частности, в 3-х областях:

1) Зависимость от ОС. Способ отображения графики на экране зависит от драйверов дисплея, и это делает графику также зависимой от ОС. Таким образом, вы будете использовать разные API для создания подключения к адаптеру дисплея.

2) Зависимость оконной системы - Вновь зависит от ОС. Например, в Linux вы можете иметь Xorg, Wayland или простой фреймбуфер и т. Д. В зависимости от этого способ создания поверхности для изменения чертежа

3) Расширения для платформы - некоторые высокопроизводительные расширения полагаются на поведение конкретной ОС , и не являются перекрестной платформой. Они имеют форму GL_ARB, GL_OES и т. Д.

+0

Это меня смущает. Вы бы написали что-то вроде #include thisAPI или #include thatAPI, а затем какой код, который вы вводили, будет использовать этот «заголовок» (из-за отсутствия лучшего слова и знания) для использования соответствующего API? – Scott

0

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

Таким образом, функция void glPixelStorei(GLenum, GLint) называется одинаковой на всех пластинах, но GLenum и GLint точные типы могут зависеть от целевой платформы.

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