Конференция "Игры" » OpenGL или DirectX
 
  • @!!ex © (23.02.07 19:17) [200]

    > Как насчет OpenAL?

    Надстройка над DS.


    > DJ KARIES   (23.02.07 11:48) [198]

    Не совсем верное понимание.
    DX 10 - включает в себя все остальные иксы.
    Хочешь использовать возможности девтяки?
    Юзай 9 интерфейс. Хочешь 10? Юзай 10.
  • DJ KARIES (24.02.07 20:54) [201]
    2@!!ex:

    > Не совсем верное понимание.

    Насчёт юзанья заголовков от предыдущих версий мне оно понятно.
    Просто интересно, что в инете народ пишет, что на машинах с DX10 некоторая часть игр, юзающая DX меньший 10, не идёт. И не потому, типа, что это Vista, а из-за самого DX.
    ХЗ.

    А OpenAL, как и SDL, чегой-то меня не влекут.
  • ElectriC © (10.03.07 00:09) [202]
    DirectX конечно!
    P.S. Если руки ПРЯМЫЕ!)))
  • megabyte-Ceercop © (13.03.07 15:22) [203]
    >DirectX - это интерфейс для "общения" с видеокартой основанный на >использовании классов.

    В 8 и 9 DX  Все управление через процедуры и структуры. Никаких классов не видел. И не думаю что увижу в DX10.
  • Mre (13.03.07 15:46) [204]
    > [203] megabyte-Ceercop ©   (13.03.07 15:22)

    LOL.
    Пример можно?
  • Megabyte-ceercop © (14.03.07 15:51) [205]

    > Mre   (13.03.07 15:46) [204]
    > > [203] megabyte-Ceercop ©   (13.03.07 15:22)LOL.Пример
    > можно?


    Открой заголовок d3d9.h в котором декларируется LPDIRECT3D9
    и увидишь что это структура объеденяющая в себе несколько функций.
    Открой тот же самый заголовок и посмотри описание LPDIRECT3DDEVICE9.
    Тебя все еще тянет посмеяться? ТОгда приведи мне пример класса из D3D?
  • homm © (14.03.07 16:09) [206]
    > и увидишь что это структура объеденяющая в себе несколько
    > функций.
    Т.е. интерфейс класса? :)
  • megabyte-Ceercop © (14.03.07 16:13) [207]
    Интерфейс структуры.
  • homm © (14.03.07 16:17) [208]
    > Интерфейс структуры.
    Чушь сморозил.
  • homm © (14.03.07 16:19) [209]
    что такое интерфейс ты по видимому не представляещ (хотя с ними судя по всему работаещь)
  • ANTPro © (14.03.07 17:24) [210]
    > [205] Megabyte-ceercop ©   (14.03.07 15:51)

    В С++ структура(struct) =(Нельзя наследоваться) классу(class)
    Хотя, я только начинаю в С++ разбиратся может чего и не так понял.
  • @!!ex © (14.03.07 22:26) [211]
    > [205] Megabyte-ceercop ©   (14.03.07 15:51)

    Уважаемый, да у вас проблемы с пониманием С и С++.
    Основное отличие struct и class состоит в уровне доступа по умолчанию. Если нет явного указания уровня доступа, то все члены структуры считаются общими, а класса - собственными. Явное указание уровней доступа делает слова struct и class равнозначными.
    http://ad.cctpu.edu.ru/cpp/glava18_1.htm
    Найдите мне обратное утверждение. :)
    LOL. LOL.

    P.S.
    DirectX построен на COM. COM это объекты.
    Заголовки DirectX на С, но это не делает его менее объектно ориентированным.

    P.P.S
    Народ, достало, что вы меня вечно пытаетесь поймать на некомпетентности и лжи.
  • homm © (14.03.07 22:29) [212]
    > Народ, достало, что вы меня вечно пытаетесь поймать на некомпетентности
    > и лжи.
    Я на твоей стороне! :)
  • ANTPro © (14.03.07 22:58) [213]
    > [211] @!!ex ©   (14.03.07 22:26)

    Спасибо. Кое что прояснилось :)
  • @!!ex © (14.03.07 23:09) [214]
    > [212] homm ©   (14.03.07 22:29)
    > Я на твоей стороне! :)

    Теперь нас двоих будут ловить на некомпетентности и лжи? :))
  • megabyte-Ceercop © (15.03.07 07:46) [215]
    @!!ex
    > DirectX построен на COM. COM это объекты.


    Direct3D не построен на COM, COM присутствует только в Input, Sound, Play и Show ветвях DirectX`a. За что я последние и не люблю.
    Когда я говорю о интерфейсе Direct3D Я имею в виду интерфейс Direct3D а не слово из C++ "interface".

    Вот выдержка из SDK

    The LPDIRECT3D9 and PDIRECT3D9 types are defined as pointers to the IDirect3D9 interface.
    typedef struct IDirect3D9 *LPDIRECT3D9, *PDIRECT3D9;



    Как видите описан интерфейс D3D но в коде никакого слова interface нет и слова class нет. Не падайте со стула @!!ex.
    Это указатель на набор полей к которым никакой доступ не разграничивается, и доступ прямой, без методов-оболечек, которые между прочим и являются основным отличием классов от структур.

    >Уважаемый, да у вас проблемы с пониманием С и С++.
    У меня нет проблем. У вас же проблемы с пониманием D3D. А ветка какраз о D3D и OGL а не о проблемах C++... (Даже сайт не о C++).

    Любой из доводов изложеный вами никак не утверждает использование классов в D3D. И любой из них может быть в равной степени применен и к OGL.

    >@!!ex
    не точная цитата.
    >я устал что меня пытаются поймать на обмане и некомпетентности.

    Вернемся на 10 стр:


    > Dimon550 ©   (18.02.07 18:21) [192]
    > Я так понял, что DX - это тот же OGL, только с кучей улучшений/модификаций/расширений,
    >  т.е. "кровь и плоть", а OGL - это просто "скелет"...



    > @!!ex ©   (18.02.07 21:11) [193]
    > > Dimon550 ©   (18.02.07 18:21) [192] Бред.OpenGL - это
    > интерфейс для "общения" с видеокартой основанный на использовании
    > процедур и функций.DirectX - это интерфейс для "общения"
    > с видеокартой основанный на использовании классов.


    DX - работает с 3D, звуком, сетью, контроллерами.
    Имеет реализацию скелетной анимации, форматы файлов разработанные специально для него, людьми которые сделали DX.

    А теперь приведите хоть один пункт отличающий OGL от скелета?
  • @!!ex © (15.03.07 13:04) [216]
    > Direct3D не построен на COM, COM присутствует только в Input,
    > Sound, Play и Show ветвях DirectX`a. За что я последние
    > и не люблю.
    > Когда я говорю о интерфейсе Direct3D Я имею в виду интерфейс
    > Direct3D а не слово из C++ "interface".

    LOL.LOL.LOL.
    DirectX - это COM. Везде. ИМХО глупо с этим спорить...


    > Как видите описан интерфейс D3D но в коде никакого слова
    > interface нет и слова class нет. Не падайте со стула @!!
    > ex.
    > Это указатель на набор полей к которым никакой доступ не
    > разграничивается, и доступ прямой, без методов-оболечек,
    > которые между прочим и являются основным отличием классов
    > от структур.

    Я привел цитату и указал источник. Не надо домыслов.
    Цитату и источник.


    > DX - работает с 3D, звуком, сетью, контроллерами.
    > Имеет реализацию скелетной анимации, форматы файлов разработанные
    > специально для него, людьми которые сделали DX.
    >
    > А теперь приведите хоть один пункт отличающий OGL от скелета?

    Так вы не в курсе, что для OGL есть куча надстроек позволяющих делать все тоже самое, что и DX? ^))
    В частности glut, openil, и т.д.
    Здесь не идет речи об этих надстройках. Речь идет о прицнципиальных отличиях. Принципиальных отличий нет, как я уже говорил.
  • homm © (15.03.07 13:13) [217]
    Удалено модератором
  • rydmi © (28.03.07 01:43) [218]
    OpenGL лучше D3D хотя бы тем, что D3D только под Виндовоз, а OGL под всё остальное. Взять к примеру DX 10: реализовывает все возможности новых 8800 и будущего R600 только под MS Vista, в то время как OGL при соответсвующем обновлении драйвера и под WinXP. То есть юзеру необходимо будет купить корявую Висту, чтобы насладиться красотой последних игр, написанных на DX 10. А для игр, написанных на OGL можно будет использовать и WinXP, на котором скорее всего останется ещё много народа после выхода Висты. К тому же Виста похоже всё таки будет поддерживать и OGL, так что разработчикам гораздо удобнее использовать OGL.

    Эти доводы конечно слабо связаны конкретно с программированием, но всё же они могут быть определяющими при отвоёвывании OGL-м позиций у D3D.

    Что же касается кодинга, то я не могу найти какую-либу "фичу", которую можно сделать на D3D и нельзя на OGL. Видюхе по-моему вообще всё равно какой API ты используешь: драйвер всё равно шлёт ей машинные коды.

    Шейдерный язык GLSL уже сейчас поддерживает Geometry Shaders (кстати его разработали так, что легко встроить поддержку и будующих типов шейдеров) и этот уже является стандартом OpenGL 2.0.
    В общем, мой ответ - OpenGL.
  • VRomanV (28.03.07 21:53) [219]
    Пишу тут в первый и последний раз :) Так как повода писать тут больше нет :)

    OpenGL, создававшийся для профессионального сектора, прочно в нем закрепился во многом благодаря своей переносимости.

    История OpenGL ведется с 1992 года. Компания Silicon Graphics создала его как открытый стандарт. Отсюда и первая часть названия, а GL означает Graphic Library (графическая библиотека). На данный момент OpenGL находится под контролем комитета Architectural Review Board (ARB), куда входят представители наиболее влиятельных в 3D-секторе корпораций - nVidia, ATI, SGI, Apple, Intel, id Software и, что особенно интересно, Microsoft. ARB является по сути некой бюрократической машиной, чья задача - вводить в стандарт OpenGL новые возможности. Для этого был создан механизм расширений.

    Перейдем к сравнению технологий. DirectX построен по объектно-ориентированной схеме, а OpenGL по процедурной. Что лучше? Программа на GL одинаково "хорошо" выглядит и на C++, и на чистом C, и на Delphi, и на любом другом языке, чего не скажешь о DX

    Как ни странно, ведутся споры о производительности. Проверить это проще простого, но зачем? - ведь результат легко предсказуем. Он будет почти одинаков для обеих библиотек у GL доступ порой быстрее из за спицифики самого OpenGL, но в целом для выполнения кода на GL и DX видеокарта должна выполнять одни и те же действия с одной скоростью, а значит, и дискуссии о быстродействии беспочвенны.

    Вот и пример :
    Простейшая программа на OpenGL и на Direct3D

    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_TRIANGLES);
    glColor3d(1,0,0);
    glVertex3d(1,2,3);
    glColor3d(0,1,0);
    glVertex3d(4,5,6);
    glColor3d(0,0,1);
    glVertex3d(7,8,9);
    glEnd();

    и ее аналог на DirectX

    struct CUSTOMVERTEX { FLOAT x, y, z, rhw; DWORD color;};
    CUSTOMVERTEX g_Vertices[] =
    {
    {1, 2, 3, 1, 0xffff0000},
    {4, 5, 6, 1, 0xff00ff00},
    {7, 8, 9, 1, 0xff0000ff},
    };
    LPDIRECT3DVERTEXBUFFER8 p_VertexBuffer = NULL;

    d3d_Device->Clear (0, 0, D3DCLEAR_TARGET, D3DCOLOR_XRGB (0, 0, 0), 0, 0);
    d3d_Device->CreateVertexBuffer (3*sizeof(CUSTOMVERTEX),
    0, D3DFVF_XYZRHW | D3DFVF_DIFFUSE, D3DPOOL_DEFAULT, &p_VertexBuffer);
    VOID* pVertices;
    p_VertexBuffer->Lock (0, sizeof(g_Vertices), (BYTE**)&pVertices, 0);
    memcpy (pVertices, g_Vertices, sizeof(g_Vertices));
    p_VertexBuffer->Unlock();

    d3d_Device->BeginScene ();
    d3d_Device->SetVertexShader (D3DFVF_CUSTOMVERTEX);
    d3d_Device->SetStreamSource (0, p_VertexBuffer, sizeof(CUSTOMVERTEX));
    d3d_Device->DrawPrimitive (D3DFVF_XYZRHW | D3DFVF_DIFFUSE, 0, 1);
    d3d_Device->EndScene ();

    а вывод каждый знает сам и знает о чем я думаю :)
    и еще рекомендую сравнить обращения на асме к DirectX и к OpenGL :)
    Хотя и на вид можно понять где больше выполнений пустой пересылки данных, собственно которая нам вообще не уперлась

    Ситуация в общем-то нормальная, если вспомнить, для чего создавалась каждая из технологий. Но если мы обратим внимание, что Doom III, самая нашумевшая игра последнего времени, написана на OpenGL, то поневоле закрадывается подозрение, что не все так просто. Может быть, в id Software знают какой-то секрет, делающий применение OpenGL предпочтительнее?
 
Конференция "Игры" » OpenGL или DirectX
Есть новые Нет новых   [134431   +10][b:0.001][p:0.001]