第乙個Shader程式

2021-09-06 11:46:24 字數 3004 閱讀 1979

fx檔案:

1

float4x4 matworld;

2float time=1.0f;3

4struct

vs_output5;

910vs_output vs(float4 pos:position,float4 color:color)

1119

20float4 ps(vs_output vsout): color

2124

25technique renderscene

2633 }

view code

c#編寫的託管**,基於ww的渲染框架用託管d3d9 呼叫:

1

using

system;

2using

system.collections.generic;

3using

system.linq;

4using

system.text;

5using

worldwind.renderable;

6using

utility;

7using

microsoft.directx.direct3d;

8using

system.io;

9using

microsoft.directx;

10using

system.drawing;

11using

system.windows.forms;

1213

namespace

1423

public

override

void

initialize(drawargs drawargs)

2454 vertexbuffer = new vertexbuffer(typeof(customvertex.positioncolored), 3, drawargs.device, 0

, customvertex.positioncolored.format, pool.default);

55 vertexbuffer.created += new

eventhandler(vertexbuffer_created);

56 vertexbuffer_created(vertexbuffer, null

);57 matrix worldmatrix =matrix.identity;

58 matrix viewmatrix = matrix.lookatlh(new vector3(0.0f, 3.0f, -9.0f), new vector3(0.0f, 0.0f, 0.0f), new vector3(0.0f, 1.0f, 0.0f

));59 matrix projmatrix = matrix.perspectivefovlh((float)math.pi / 4, 1.0f, 1.0f, 100.0f

);60 worldmatrix =drawargs.device.gettransform(transformtype.world);

61 viewmatrix =drawargs.device.gettransform(transformtype.view);

62 projmatrix =drawargs.device.gettransform(transformtype.projection);

6364 m_effect.setvalue("

matworld

", worldmatrix * viewmatrix *projmatrix);

65//

m_effect.setvalue("matviewprojection", viewmatrix * projmatrix);

66 isinitialized = true;67

}6869public

override

void

update(drawargs drawargs)

7077

catch

(exception ex)

7881}82

public

override

void

render(drawargs drawargs)

83102

m_effect.end();

103104

}105

106void vertexbuffer_created(object

sender, eventargs e)

107117

118public

override

void

dispose()

119124

}125

126public

override

bool

performselectionaction(drawargs drawargs)

127130

}131 }

view code

這裡出現乙個問題:

滑鼠在窗體上移動才能夠顯示上下移動的三角形。

有時候啟動了程式,三角形乾脆不顯示。開始還沒有這個問題,後來出現這個問題!

原來我以為是視域體的問題,但是這個三角形肯定在視域體內部啊。

是幀率控制的問題?需要控制幀率嗎,控制幀率是為了減少螢幕重新整理次數。不至於重新整理太頻繁畫面乾脆不顯示吧!

機器有沒有問題?

這個問題真是困擾人!

ww的渲染框架本身會有問題嗎,通過繼承構建的渲染列表對狀態機產生影響了?書上的示例程式是沒有問題的,為啥我寫到乙個renderobject中會出現問題?

後記:移植了nativemethod類後就好了,應該是訊息分發的問題。

我的第乙個shader程式

博主主要關注的是vertex fragment shader的學習,在 上也以此為主。第乙個shader程式如下 shader custom solidshader fixed4 frag sv target endcg 輸出結果如下 根據 gpu程式設計與cg語言之陽春白雪下里巴人 中的解釋 p7...

寫的第乙個Shader

第乙個茶壺是可以運動的紋理,用時間的正弦值和余弦值加在紋理座標上產生偏移實現的,可以考慮用來實現水面的各種效果 第二個茶壺是顏色和紋理的混合,多層紋理的混合應該也是同樣的道理,就是把顏色值相乘就可以了 anipass float4x4 matviewprojection float fsintime...

第乙個視窗程式

程式截圖 程式 include lresult callback wndproc hwnd,uint,wparam,lparam int winapi winmain hinstance hinstance,hinstance hprevinstance,pstr szcmdline,int icm...