OpenGL и Direct3D - PullRequest
       9

OpenGL и Direct3D

3 голосов
/ 10 июня 2009

В чем разница между OpenGL и Direct3D? Являются ли они действительно разными реализациями для достижения одних и тех же целей (например, Java и Mirosoft CLR [.NET])?

Ответы [ 3 ]

9 голосов
/ 10 июня 2009

Они очень разные графические API. Но справедливо сказать, что они в основном выполняют одно и то же. DirectX, вероятно, является предпочтительным API, если вы разрабатываете игру под Windows (или игру для XBOX), а OpenGL - это выбор, если вы хотите кросс-платформенную поддержку. Mac OS использует GL, как, например, iPhone, и многие игры для Windows также поддерживают OpenGL.

Поскольку OpenGL разрабатывался в течение долгого времени и «комитетом», он поставляется с большим количеством багажа - у API есть несколько старых вариантов, которые на самом деле не актуальны сегодня. Это одна из причин OpenGL ES; он убирает весь мусор и делает платформу более легкой.

С другой стороны, DirectX контролируется Microsoft, и поэтому он выглядит более «современно» (он основан на COM-компонентах, поэтому является высоко объектно-ориентированным). MS часто обновляет API, чтобы соответствовать новому оборудованию.

Иногда у вас нет такой роскоши (например, iphone не поддерживает DX). Но часто все сводится к личным предпочтениям / опыту. Если вы давний графический программист, вы, как правило, хорошо знакомы с обоими ...

3 голосов
/ 31 августа 2011

Direct3D и OpenGL - это разные API, используемые для достижения одной и той же цели.

Основное различие между D3D и GL заключается в том, что D3D является объектно-ориентированным, а GL - нет. D3D9 и GLES2 в основном имеют одинаковые функции. Фактически, если вы планируете использовать OpenGL и вам не нужны какие-либо функции GL3 или GL4, вы должны основывать весь свой код на API GLES2 (все функции GLES2 представлены в GL2, но не наоборот).

Если возможно, вы всегда должны использовать D3D поверх GL в Windows, так как поддержка многопоточности и драйверов ненадежна. Возьмите, например, нетбуки, они поддерживают HLSL от D3D в ShaderModel 2, но не поддерживают эквивалент для GLSL, они поддерживают только фиксированный конвейер для GL.

3 голосов
/ 10 июня 2009

Google - ваш друг в этом случае ... есть хорошая статья в Википедии, которая противопоставляет две библиотеки:

Сравнение OpenGL и Direct3D

Если память служит, OpenGL была открытой реализацией до выхода Direct3D. Direct3D был тогда основан на OpenGL ... но быстро разошелся и стал своей собственной отдельной библиотекой.

UPDATE

Похоже, у меня память снята ...

Direct3D был разработан независимо от OpenGL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...