Основные образцы шейдеров в Managed DirectX - PullRequest
0 голосов
/ 17 ноября 2009

Я недавно написал пиксельный шейдер и использую его в своем проекте управляемого DirectX, где я могу получить базовый пример для его запуска.

1 Ответ

1 голос
/ 19 июня 2010

Я предполагаю, что вы знаете, как создать устройство.

Сначала нужно подготовить сам шейдер.

Вот небольшой пример пиксельного шейдера (который использует пиксельный шейдер 1.4, как видно из ps_1_4; r0 - это регистр, который читается как конечный результат; v0 - это регистр, который хранит основной цвет (диффузного освещения)):

ps_1_4
mov r0, v0

Этот шейдер, который находится в сборке шейдера, должен быть собран. Вы можете сделать это следующим образом (обратите внимание, что вам нужна ссылка на библиотеку D3DX, иначе вы не увидите класс ShaderLoader):

Imports Microsoft.DirectX

' other code

Dim graphicsStream As GraphicsStream = Direct3D.ShaderLoader.FromString(shaderText, Nothing, Direct3D.ShaderFlags.None)

' other code.

После сборки шейдера вы можете наконец создать объект PixelShader следующим образом:

' other code

Dim p As Direct3D.PixelShader = New Direct3D.PixelShader(Device, graphicsStream)

' other code

Чтобы применить пиксельный шейдер, используйте:

' other code

Device.PixelShader = p

' other code

где Device - это устройство Direct3D.

Аналогичный процесс применяется для компиляции шейдеров, если вы используете HLSL.

Edit: Просто заметил, что это был летний вопрос.

...