首先決定暫時不考慮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
正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(281)
評論(0) 編輯 收藏 引用 所屬分類:
天地之靈