Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.15.190.144] |
|
Сообщ.
#1
,
|
|
|
Собственно, вот Хотелось бы выяснить, что сейчас более популярно среди разработчиков 3D. Огромная просьба не начинать холивары. Если у вас есть предпочтения к какой-то конкретной версии одного из API, просьба уточнить, к какой именно и почему
|
Сообщ.
#2
,
|
|
|
Проголосовал за D3D. В первую очередь за ООП интерфейс.
|
Сообщ.
#3
,
|
|
|
Предпочитаю OpenGL (как это ни странно ). DirectX начал изучать только месяц назад, и после OpenGL он мне кажется не очень удобным.
|
Сообщ.
#4
,
|
|
|
Цитата Mikle @ В первую очередь за ООП интерфейс. Подружился с OSG (Open Scene Graph) - ОО-библиотека на базе OpenGL. Доволен. |
Сообщ.
#5
,
|
|
|
OpenGL. На всех компах с разными видеокртами можно получить дополнительные расширение и соответственно аппаратную поддержку. Не нужно с собой приносить кучу дллок(d3dx_XX.dll)или полный DXSetup для того просто показать чего накодил на другом ПК. Новые фишки видеокарт всегда доступны после установки последних дровишек, и не обязательно устанавливать Windows 7.(Правда такими нововедениями как аппаратная тесселяция ещё ни разу не пользовался....пока)
|
Сообщ.
#6
,
|
|
|
Честно говоря, жаль, что нельзя выбрать пару пунктов сразу.
Я, например, в зависимости от потребностей использую либо OpenGL, либо программный рендеринг. |
Сообщ.
#7
,
|
|
|
проголосовал за OpenGl из-за того что использую надстройку GLScene, это движек ставящийся на делфи
|
Сообщ.
#8
,
|
|
|
OpenGL. На существующих мобильных устройствах (iPhone, iPad, всякие штуки под управлением ОС Андроид...) нет D3D.
|
Сообщ.
#9
,
|
|
|
Зато он, и только он, есть в Windows Phone 7
|
Сообщ.
#10
,
|
|
|
Поэтому я и написал: существующих мобильных устройствах.
|
Сообщ.
#11
,
|
|
|
OpenGL - он есть везде, а не только в виндах.
|
Сообщ.
#12
,
|
|
|
Помню где-то писали, как выбрать между DirectX и OpenGL: начинайте с того, что красивее звучит.
|
Сообщ.
#13
,
|
|
|
проголосовал за D3D, но если бы была возможность, проголосовал еще бы за OpenGL, так как считаю, что в программе должен поддерживаться рендеринг обоими API )
|
Сообщ.
#14
,
|
|
|
А я думал OpenGL это ерунда! Потому-что так в книгах написано! А оказывается кто то им пользуется!
|
Сообщ.
#15
,
|
|
|
Цитата CJ190 @ А я думал OpenGL это ерунда! Потому-что так в книгах написано! А оказывается кто то им пользуется! Просили же без холиваров, а вы дяденька провокатор. OpenGL это графический API, а ерунда это ваши книги, где такое написано. iOs, android, sony ps 3, psp, gnu/linux, Mac OS, мне продолжать? Вы не поверите, они ничего не знают про d3dx. Если вы являетесь профессиональным разработчиком игр под xbox360 или win mobile, то только тогда следовало бы знать dx, в остальных случаях поверхностного изучения достаточно, так для галочки. А вот openGL, знать нужно хорошо, как минимум, чтоб не попасть в просак, когда проект пишется не под мастдай. Отдельно хотелось бы упомянуть про технологию WebGL. Как думаю ясно опять таки необходимо знать API OpenGL. |
Сообщ.
#16
,
|
|
|
OpenGL - интуитивно понятен, проще в освоении, малобукаф, кроссплатформенный. Много мануалов и учебников на русском.
Direct3D - сложнее в освоении, многабукаф, нет кроссплатформенности. Крайне мало мануалов на русском. Однако если в нем разобраться, то он может понравиться. Многие фичи в нем реализованы проще и удобнее. С недавнего времени решил попробовать, и мне прикипел. Хотя опять же...примеры... Рисуем точку OpenGL: glBegin(GL_POINTS); glVertex(0,0,0); glEnd(); Рисуем точку Direct3D: IDirect3DVertexBuffer* vb; struct Vertex { float x,y,z; }; device->CreateVertexBuffer(sizeof(Vertex),D3DUSAGE_WRITEONLY,D3DFVF_XYZ,D3DPOOL_MANAGED,&vb,0); Vertex* v; vb->Lock(0,0,(VOID**)&v,0); v[0]={0,0,0}; vb->Unlock(); device->SetStreamSource(0,vb,0,sizeof(Vertex)); device->SetFVF(D3DFVF_XYZ); device->DrawPrimitive(D3DPT_POINTLIST,0,1); или загружаем текстуру OpenGL: GLuint texture[1]; glPixelStorei(GL_UNPACK_ALIGNMENT, 1); my_texture =auxDIBImageLoad("texture.bmp"); glGenTextures(1, &texture[0]); glBindTexture(GL_TEXTURE_2D, texture[0]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexImage2D(GL_TEXTURE_2D,0,3,my_texture->sizeX,my_texture->sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,my_texture->data); загружаем текстуру Direct3D: IDirect3DTexture9* texture[1]; D3DXCreateTextureFromFile(dev,"texture.jpg",&texture[0]); Думайте сами, Решайте сами, OpenGL или Direct3D... |
Сообщ.
#17
,
|
|
|
...использую OpenGL.
|
Сообщ.
#18
,
|
|
|
Хотелось бы шире взглянуть на вопрос: "Какой 3D-API вы предпочитаете?". IMHO, все очень сильно зависит от ситуации. Вот, к примеру, как было у меня. Я разрабатываю приборы с применением встроенной PC-совместимой материнки. Графика тоже встроенная, с некоторой аппаратной акселерацией.
Сначала я написал модуль рендеринга на OpenGL. Применяемая нами в то время материнка была довольно слабенькой. Я попробовал вариант того же рендера на Direct3D и получил более чем двухкратный прирост быстродействия. Было похоже, что китайские производители выполняли в драйверах поддержку в первую очередь Direct3D, а OpenGL - по остаточному принципу. С годами ситуация изменилась и теперь разница двух движков практически нивелировалась. Казалось бы, вот и славно, применяй то, к чему привык. Но не тут-то было! Начали мы пробовать другую аппаратную базу с ориентацией на Windows Embedded CE 6.0. Мало того, рассматривается вариант применения вообще другой процессорной платформы (семейство медиа-процессоров OMAP фирмы Texas Instruments). Попробовал разобраться. Выяснилось, что в этом секторе Direct3D представляет из себя почти ноль. Рулит OpenGL ES. Причем рулит абсолютно: только для него имеется поддержка аппаратного ускорения графики. Резюме. 3D-API всякие нужны, 3D-API всякие важны :-) Выбор того или иного варианта, наряду с другими факторами, сильнейшим образом зависит от условий применения, используемой аппаратной платформы. P.S. В последнее время "шейдеры шагают по стране", все самое закрученное сосредотачивается в них. А вопрос кто является оберткой, Direct3D или OpenGL, - смещается на второй план. |
Сообщ.
#19
,
|
|
|
Цитата AesmaDiv @ glBegin(GL_POINTS); glVertex(0,0,0); glEnd(); AesmaDiv, не надо путать Immediate mode с VBO, непосредственный режим рисования это устаревший принцип, постоянная гонка из системной памяти в видеопамять, северный мост лучше оставить "прохладным". В Immediate Direct3D начиная от базовой версии до Direct3D7 было тоже самое когда рисовать можно было непосредственно, но это вчерашний день, как и лягание стэковыми операциями. То что нет надобности в спорах что лучше а что хуже. |
Сообщ.
#20
,
|
|
|
Я думал чистым API уже ни кто не пользуется, а пользуются движками.
Мне например irrLicht нравится. |
Сообщ.
#21
,
|
|
|
HardRock, пользуются и движками. Но движками пользоваться неинтересно. Ручками всё )
По теме: сначала освоил OpenGL, недавно DirectX. И то и то хорошие API. Но может быть из-за того, что DirectX был последний - то больше понравился он. |