-
Делал значит игру в 8-й простенькую, 2д, обучался а потом решил а почему бы не перейти на 9-ю... Вроде бы все подправил, везде вместо 8-ки 9-ку дописал, и тут застрял на строке FD3DDevice.SetVertexShader(D3DFVF_XYZrhw or D3DFVF_TEX1);
Вощем насколько я понял в 8-й был один стандартный верт. шейдер, а теперь нужно создавать свой, писать для него код на ассемблере, потом компилить в программе... 0_о Это обязательно? Хотелось бы отложить изучение этого аспекта, а то ваще руки опускаються от этих нововведений.
-
Используй SetFVF вместо SetVertexShader. О других различиях между 8 и 9 для простого 2D-рендера - см. модуль DX89_Core отсюда: http://sapersky.narod.ru/files/AnyDX2D_v0.6.rarСобственно, уже по тому, что для двух версий используется один модуль видно, что различия весьма несущественны (выделены IFDEF'ами). Шейдеры что в 8-ке, что в 9-ке опциональны, хочешь используй, хочешь нет. В 8-ке шейдеры ассемблерные, а в 9-ке - HLSL, С-подобный язык (хотя наверное asm тоже работает).
-
Спасибо, скомпилировал. Была проблема с Present, который отказывался работать между BeginScene; EndScene; Теперь проблема в том что ничего не рисуется кроме как заливки FD3DDevice.Clear У всех функций директа проверяю результат и везде "The function completed successfully" Может я чтото еще упустил?
-
> [2] Rembo (26.04.09 02:55)
Может быть. Код в студию.
-
В 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-ки нет.
-
Sapersky прям телепат! Пасиба, точно там накосячил
|