D3D2 笔记五 compiling shaderOffline CompilationGenerated Assembly

mac2024-03-29  34

shader 程序先被编译成 a portable bytecode,然后 graphics driver把 bytecode 编译成 optimal native instruction for system’s GPU

compiling shaders at runtime

d3dUtil.h 定义 CompileShader() { hr=D3DCompileFromFile() // 最后一个参数得到错误,倒数第二个参数得到compiled shader return bytcode } 用来compile shader

mvsByteCode = d3dUtil::CompileShader(L"Shaders\\color.hlsl", nullptr, "VS", "vs_5_0"); mpsByteCode = d3dUtil::CompileShader(L"Shaders\\color.hlsl", nullptr, "PS", "ps_5_0");

Offline Compilation:at compile time

.cso 文件用来表示 compiled shder

使用 FXC tool 编译 ,输出错误到command window

with debugging

fxc "color.hlsl" /Od /Zi /T vs_5_0 /E "VS" /Fo "color_vs.cso" /Fc "color_vs.asm" fxc "color.hlsl" /Od /Zi /T ps_5_0 /E "VS" /Fo "color_ps.cso" /Fc "color_ps.asm"

for release

fxc "color.hlsl" /T vs_5_0 /E "VS" /Fo "color_vs.cso" /Fc "color_vs.asm" fxc "color.hlsl" /T ps_5_0 /E "VS" /Fo "color_ps.cso" /Fc "color_ps.asm"

LoadBinary 把 .cso文件中已编译的代码加载到app中


/Fc 产生 portable assembly code

最新回复(0)