На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование графики"
1) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с чтением, сохранением, обработкой, созданием, отрисовкой графической информации (в том числе - 3D [OpenGL, Direct3D] и анимации [в т.ч. VFW, DirectShow, OpenDML]).
Флэш обсуждают здесь!.

2) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе.

3) Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно.



Ваше мнение о модераторах: user posted imageBarazuk, user posted imageOpenGL, user posted imageMikle
Модераторы: OpenGL, Mikle
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Какой 3D-API вы предпочитаете?
   
Какой 3D-API вы предпочитаете?
Гости не могут просматривать результаты голосования.
Гости не могут голосовать 
    OpenGL - интуитивно понятен, проще в освоении, малобукаф, кроссплатформенный. Много мануалов и учебников на русском.
    Direct3D - сложнее в освоении, многабукаф, нет кроссплатформенности. Крайне мало мануалов на русском. Однако если в нем разобраться, то он может понравиться. Многие фичи в нем реализованы проще и удобнее. С недавнего времени решил попробовать, и мне прикипел. Хотя опять же...примеры...
    Рисуем точку OpenGL:
    ExpandedWrap disabled
      glBegin(GL_POINTS);
          glVertex(0,0,0);
      glEnd();

    Рисуем точку Direct3D:
    ExpandedWrap disabled
      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:
    ExpandedWrap disabled
      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:
    ExpandedWrap disabled
      IDirect3DTexture9* texture[1];
       
      D3DXCreateTextureFromFile(dev,"texture.jpg",&texture[0]);

    Думайте сами,
    Решайте сами,
    OpenGL или Direct3D...
    :thanks:
      ...использую OpenGL.
        Хотелось бы шире взглянуть на вопрос: "Какой 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, - смещается на второй план.
          Цитата AesmaDiv @
          glBegin(GL_POINTS);
          glVertex(0,0,0);
          glEnd();

          AesmaDiv, не надо путать Immediate mode с VBO, непосредственный режим рисования
          это устаревший принцип, постоянная гонка из системной памяти в видеопамять, северный мост лучше
          оставить "прохладным". В Immediate Direct3D начиная от базовой версии до Direct3D7 было тоже самое когда рисовать можно было непосредственно, но это вчерашний день, как и лягание стэковыми операциями. То что нет надобности в спорах что лучше а что хуже.
            Я думал чистым API уже ни кто не пользуется, а пользуются движками.
            Мне например irrLicht нравится.
              HardRock, пользуются и движками. Но движками пользоваться неинтересно. Ручками всё )
              По теме: сначала освоил OpenGL, недавно DirectX. И то и то хорошие API. Но может быть из-за того, что DirectX был последний - то больше понравился он.
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,5258 ]   [ 17 queries used ]   [ Generated: 28.03.24, 19:01 GMT ]