Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.217.116.183] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#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 был последний - то больше понравился он. |