首先决定暂时不考虑DX9/OGL了,我不可能在不了解一个库的时候就给它留好接口。耽误我挺多时间了,虽然有重大收获……
今天的成就是把Shader启动起来了,做了一个花的三角形。
不管怎么说,抛弃Framework不谈,本周完成界面显示还是没什么大问题的。剩下的时间我还是去读读ConfigSystem(DXSDK里一个很囧的小球Sample)的整体结构,还有读读DXUT的代码了。
如果顺利的话,我也决定采用DXUT开发,因为我没有必要在对整体流程已经了解的情况下,对每个细节了如指掌。我的关注点还是:资源管理、框架、Shader。不能偏离了学习DX的目的。
没弄明白怎么粘图,那就不管了,反正一个破三角形也没什么好看的……
随便改了改代码,用RenderMonkey时写的一些vs和ps的东西还记得。
另外Dx10的用于输出的一些Semantics的名字改了:
Direct3D 10 Semantic |
Direct3D 9 Equivalent Semantic |
SV_Depth |
DEPTH |
SV_Position |
POSITION |
SV_Target |
COLOR |
不管怎么说总是麻烦了一点。讨厌的是RenderMonkey在我的电脑上没装起来,不能方便的编辑shader然后输出fx了。明天还是研究下如何输出编译的错误信息。好歹编不过要能告诉我是哪行编不过才行……
现在的Shader代码:(就随便搞了下,显示出一个暗红色的怪东西:)
struct VS_OUTPUT
{
float4 Pos : SV_POSITION;
float4 Color: COLOR0;
};
VS_OUTPUT VS( float4 Pos : POSITION )
{
VS_OUTPUT Output;
Output.Pos = Pos;
Output.Color = float4( 0.3f, Pos.y, Pos.x, 1.0f );
return Output;
}
struct PS_OUTPUT
{
float4 RGBColor : SV_Target; // Pixel color
};
PS_OUTPUT PS( float4 Pos : SV_POSITION,
float4 Color: COLOR0 )
{
PS_OUTPUT Output;
Output.RGBColor = Color;
return Output;
}
technique10 R0
{
pass P0
{
SetVertexShader( CompileShader( vs_4_0, VS() ) );
SetGeometryShader( NULL );
SetPixelShader( CompileShader( ps_4_0, PS() ) );
}
}
主要是把Tutorial2里的fx拿出来,把两个输出从单纯的float4变成了一个结构体,然后给VS的输出增加了一个Color,最后再把坐标的一部分当作颜色输出了出去。
posted on 2008-11-14 00:30
正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷 阅读(254)
评论(0) 编辑 收藏 引用 所属分类:
天地之灵