Конференция "Игры" » Переход с DX8 на DX9
 
  • Rembo (25.04.09 22:16) [0]
    Делал значит игру в 8-й простенькую, 2д, обучался а потом решил а почему бы не перейти на 9-ю...
    Вроде бы все подправил, везде вместо 8-ки 9-ку дописал, и тут застрял на строке
    FD3DDevice.SetVertexShader(D3DFVF_XYZrhw or D3DFVF_TEX1);

    Вощем насколько я понял в 8-й был один  стандартный верт. шейдер, а теперь нужно создавать свой, писать для него код на ассемблере, потом компилить в программе... 0_о
    Это обязательно? Хотелось бы отложить изучение этого аспекта, а то ваще руки опускаються от этих нововведений.
  • Sapersky (26.04.09 00:05) [1]
    Используй SetFVF вместо SetVertexShader.
    О других различиях между 8 и 9 для простого 2D-рендера - см. модуль DX89_Core отсюда:
    http://sapersky.narod.ru/files/AnyDX2D_v0.6.rar
    Собственно, уже по тому, что для двух версий используется один модуль видно, что различия весьма несущественны (выделены IFDEF'ами).

    Шейдеры что в 8-ке, что в 9-ке опциональны, хочешь используй, хочешь нет. В 8-ке шейдеры ассемблерные, а в 9-ке - HLSL, С-подобный язык (хотя наверное asm тоже работает).
  • Rembo (26.04.09 02:55) [2]
    Спасибо, скомпилировал. Была проблема с Present, который отказывался работать между BeginScene; EndScene;
    Теперь проблема в том что ничего не рисуется кроме как заливки FD3DDevice.Clear
    У всех функций директа проверяю результат и везде "The function completed successfully"
    Может я чтото еще упустил?
  • @!!ex © (26.04.09 08:06) [3]
    > [2] Rembo   (26.04.09 02:55)

    Может быть. Код в студию.
  • Sapersky (26.04.09 09:44) [4]
    В SetStreamSource у 9-ки параметры немного по-другому пишутся... может, там чего напутал?
    {$IFDEF D3D8}
     FDevice.SetStreamSource( 0, VBuffer.VBuf, VBuffer.ElementSize );
    {$ENDIF}
    {$IFDEF D3D9}
     FDevice.SetStreamSource( 0, VBuffer.VBuf, 0, VBuffer.ElementSize );
    {$ENDIF}

    И, кстати, зачем вообще переходить на 9-ку, если шейдеры не нужны? Вроде никаких заметных преимуществ кроме HLSL у 9-ки нет.
  • Rembo (26.04.09 19:03) [5]
    Sapersky прям телепат! Пасиба, точно там накосячил
 
Конференция "Игры" » Переход с DX8 на DX9
Есть новые Нет новых   [134430   +4][b:0][p:0]