![]() |
Различие между OpenGL и DirectX?
Вопрос заслуживающий быть занесенным в FAQ для начинающих.
Есть некоторый опыт работы с DELPHI (простые утилиты походу) Нужно: реализовать простые динамические 2D эффекты с изображением - изменение прозрачности, масштабирование, вращение и пр. Скорость довольно важна, нужно чтобы все было плавненько. Вопрос: что выбрать - OpenGL или DirectX? критерии - что проще в осовоении, более доступно. Как я понимаю, это 2 разных подхода, один специфически борландовский и вроде бы заглохший, второй процветающий микрософтовский. Спасибо заранее за ответы. |
The Pig, неправильно понимаешь...
Сколько помню, OpenGL является развитием открытой версии GL, специфического API для работы с 3D-графикой от SGI (ранее Silicon Graphics Inc.) и никакого отношения к Borland/Inprise (а уж тем более ко мне! ;)) не имеет. В отличие от проприетарного DirectX разработки одной малоизвестной фирмы, OpenGL имеет порты под большинство (практически под любую) существующих ОС, т.е. является кроссплатформенным. С другой стороны, даже в рамках Windows корректнее сравнивать OpenGL не с DirectX в целом, а с одной из его составляющих Direct3D (ибо в состав DX входят, кроме D3D, ещё и DirectDraw, DirectMusic и DirectPlay, аналогов которых в OpenGL просто нет). Использование API трёхмерной графики при создании "простых динамических 2D эффектов с изображением" - стрельба из пушки по воробьям, если не планируется написание кроссплатформенного приложения. Под Windows достаточно DirectDraw... |
Основная разница между OpenGL и Direct3D - в том что первый это скорее С, а второй С++. Т.е Direct3D объектно ориентирован со всеми вытекающими. Хотя для OpenGL есть надстройки, которые добавляют ему ОО. Что именно использовать - обычно дело вкуса.
по задаче: 1 вариант (Borland уже предложил) юзать DirecDraw, там через IDirectDrawSurface::Lock получаешь указатель на саму поверхность (пиксели) и работаешь с ней как с массивом. Все трансформации писать придется самому (или это и нужно?). Все будет происходить на проце. 2 вариант - юзая Direct3D или OpenGL (абсолютно не важно, что именно) загнать в текстуру исходное изображение, отобразить ее во весь экран и работать с картинкой используя готовые методы - теже повороты, блендинг и тд. Все вычисления будут в видюхе, если тебе не нужно каких-то мудреных преобразований (хотя тут шейдеры спасут), то этот вариант однозначно быстрее и пишется и работает |
еще 5 копеек:
DirectX - Microsoft Specific (читай Windows), Wine не в счет. OpenGL - по сути кроссплатформенный. |
PSyton, БОЯН!
Цитата:
|
Вопрос, в принципе, не особо относится к программированию, но вот нашёл через поиск такую тему, может, кто просветит? :help:
Я уже очень давно пользуюсь гну/линукс (неважно каким, там уже мало осталось от исходника). Так вот, любое опенгл-виндовс-приложение, пущенное через вайн, работает просто на все 110%. А директх, естественно, нет. Мне, как продвинутому пользователю, для полного понимания этого вопроса, хотелось бы узнать, почему разработчик стремится использовать директх. Можно дать ссылочку на ресурс даже на английском, я понимаю. |
Цитата:
|
Цитата:
А вот в плане технической составляющей, поддержки всяческих новомодных технологий как дело обстоит и огл и дх? |
Цитата:
|
Цитата:
|
Кстати, вбив в гугел "DX 9.0 vs OGL 2.0" я прямиком вышел на статью от 2005 года в Компьютерре :biggrin: Хех, до этого все мои заклинашки, содержащие "opengl" "directx" и "vs/versus" в разных вариациях такого результата не дали.
В принципе, там, всё, что мне нужно, рассматривается. И мне, тупому, объясняется. Короче, я теперь знаю, почему большинство игр пишется под ДХ и в которые я не могу поиграть. Потому что разработчик, как и я, существо ленивое! ;) |
Часовой пояс GMT +4, время: 22:00. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.