вторник, 4 января 2011 г.

Basic HLSL

После нескольких часов отключения функционала Direct3D 10 из DXUT-а и ещё нескольких часов возни по замене stub-овых методов на dummy (т. е. на такие, что ничего реального не делают, но возвращают валидный указатель на объект), мне удалось запустить сэмпл из Direct3D 9 SDK - Basic HLSL.


Один из багов, из-за которого жирдяй DXUT отказывался стартовать, был в методе IDirect3D::GetDeviceCaps. Я реализовал его только частично, но выяснилось, что DXUT проверяет поле PixelShaderVersion структуры D3DCAPS9, которое я не заполнил. После исправления бага всё пошло как по-маслу. Теперь почти весь DXUT 9 реально работает с ложными интерфейсами Direct3D. Я отключил код, который загружает D3DX Effects и рисует через них интерфейс DXUT-a, и отключил ещё несколько функций загрузки, а в остальном "всё по-честному". В результате рисуется очищенное окно и текст :)

Т. к. почти все демки из DXSDK используют эффекты при рендеринге, увидеть их картинку "из-под" OpenGL вряд ли получится, но зато возня с демками поможет вылизать остальной функционал DirectGL и подготовить его для портирования реального проекта (надеюсь, хоть там эффектов не будет).

Комментариев нет:

Отправить комментарий