На главную Наши проекты:
Журнал   ·   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
  
> Какой 3D-API вы предпочитаете?
   
Какой 3D-API вы предпочитаете?
Гости не могут просматривать результаты голосования.
Гости не могут голосовать 
    Собственно, вот :) Хотелось бы выяснить, что сейчас более популярно среди разработчиков 3D. Огромная просьба не начинать холивары. Если у вас есть предпочтения к какой-то конкретной версии одного из API, просьба уточнить, к какой именно и почему
      Проголосовал за D3D. В первую очередь за ООП интерфейс.
        Предпочитаю OpenGL (как это ни странно :D ). DirectX начал изучать только месяц назад, и после OpenGL он мне кажется не очень удобным.
          Цитата Mikle @
          В первую очередь за ООП интерфейс.

          Подружился с OSG (Open Scene Graph) - ОО-библиотека на базе OpenGL. Доволен. :)
            OpenGL. На всех компах с разными видеокртами можно получить дополнительные расширение и соответственно аппаратную поддержку. Не нужно с собой приносить кучу дллок(d3dx_XX.dll)или полный DXSetup для того просто показать чего накодил на другом ПК. Новые фишки видеокарт всегда доступны после установки последних дровишек, и не обязательно устанавливать Windows 7.(Правда такими нововедениями как аппаратная тесселяция ещё ни разу не пользовался....пока)
              Честно говоря, жаль, что нельзя выбрать пару пунктов сразу.
              Я, например, в зависимости от потребностей использую либо OpenGL, либо программный рендеринг.
                проголосовал за OpenGl из-за того что использую надстройку GLScene, это движек ставящийся на делфи
                  OpenGL. На существующих мобильных устройствах (iPhone, iPad, всякие штуки под управлением ОС Андроид...) нет D3D.
                    Зато он, и только он, есть в Windows Phone 7
                      Поэтому я и написал: существующих мобильных устройствах.
                        OpenGL - он есть везде, а не только в виндах.
                          Помню где-то писали, как выбрать между DirectX и OpenGL: начинайте с того, что красивее звучит. :D
                            проголосовал за D3D, но если бы была возможность, проголосовал еще бы за OpenGL, так как считаю, что в программе должен поддерживаться рендеринг обоими API )
                              А я думал OpenGL это ерунда! Потому-что так в книгах написано! А оказывается кто то им пользуется! :)
                                Цитата CJ190 @
                                А я думал OpenGL это ерунда! Потому-что так в книгах написано! А оказывается кто то им пользуется! :)

                                Просили же без холиваров, а вы дяденька провокатор. OpenGL это графический API, а ерунда это ваши книги, где такое написано.

                                iOs, android, sony ps 3, psp, gnu/linux, Mac OS, мне продолжать? Вы не поверите, они ничего не знают про d3dx. Если вы являетесь профессиональным разработчиком игр под xbox360 или win mobile, то только тогда следовало бы знать dx, в остальных случаях поверхностного изучения достаточно, так для галочки. А вот openGL, знать нужно хорошо, как минимум, чтоб не попасть в просак, когда проект пишется не под мастдай.
                                Отдельно хотелось бы упомянуть про технологию WebGL. Как думаю ясно опять таки необходимо знать API OpenGL.
                                  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,0465 ]   [ 18 queries used ]   [ Generated: 29.03.24, 13:34 GMT ]