Покажите пожалуйста, как выглядит простейший пример pixel shader на HLSL. У меня есть минимальное приложение, которое создает D3D9 контекст и рендерит треугольник. Мне нужно на этот треугольник натянуть HLSL пиксельный шейдер. Вертексный не нужен. Интересует: создание и загрузка из файла на стороне C++, получение текста ошибки компиляции, вид простейшего пиксельного шейдера, возвращающего черный цвет. Гуглил, смотрел SDK, но, как ни странно - ничего не нашел. Везде только монстрообразные примеры где юзаются много-pass-ные эффекты в которых оба типа шейдера, и все поверх MFC/ATL/прочий гуан фреймворков. Ковыряться в 10000 строчках ради того чтобы найти 10 нужных - не хочется. Поможите кто чем смогёт.
Booster Все это конечно великолепно, но главный гемор - это как загрузить и зааплаить это со стороны C++. В SDK-то все есть, только у меня нет недели для процеживания over9000 сорцов в поиках 5-ти нужных вызовов.
Cказанул тоже, неделя. Прочить раз и написать. Если с DirectX проблемы, то я вряд ли смогу тут в чём-то помочь. З.Ы Что такое зааплаить?
Вот ответ на мой вопрос. Код (Text): IDirect3DPixelShader9* shader = 0; LPD3DXBUFFER code = 0; LPD3DXBUFFER error = 0; D3DXCompileShaderFromFileA("shader.ps", 0, 0, "main", "ps_3_0", 0, &code, &error, 0); // Загрузка и компиляция (имя, функция, профайл) if(error) { MessageBoxA(0, reinterpret_cast<char const*>(error->GetBufferPointer()), 0, 0); // Сообщение об ощибке, если таковая была return 0; } d3d_device->CreatePixelShader(reinterpret_cast<DWORD*>(code->GetBufferPointer()), &shader); // Создание, собственно, шейдера code->Release(); Далее, HLSL (файл shader.ps): Код (Text): float4 main() : COLOR { return float4(0, 0, 0, 0); } Booster, спасибо за увлекательный разговор на отвлеченные темы.