11月13日_今天没啥收获_By Gardon

11月13日_今天没啥收获_By Gardon
首先决定暂时不考虑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,最后再把坐标的一部分当作颜色输出了出去。

你可能感兴趣的:(11月13日_今天没啥收获_By Gardon)