|
|

楼主 |
发表于 2006-8-5 19:56:00
|
显示全部楼层
Re:请教问题:关于纹理坐标。
顺序:坐标,法线向量,纹理坐标。
顶点元素:x=坐标,y=法线向量,wl=纹理。
nczzdz2[0].x=D3DXVECTOR3(-2.0f,0.0f,-2.0f);// -2 0 -2
nczzdz2[1].x=D3DXVECTOR3(2.0f,0.0f,-2.0f);// 2 0 -2
nczzdz2[2].x=D3DXVECTOR3(2.0f,0.0f,2.0f);// 2 0 2
nczzdz2[3].x=D3DXVECTOR3(-2.0f,0.0f,2.0f);// -2 0 2
nczzdz2[0].y=D3DXVECTOR3(0.0f,1.0f,1.0f);
nczzdz2[1].y=D3DXVECTOR3(0.0f,1.0f,1.0f);
nczzdz2[2].y=D3DXVECTOR3(0.0f,1.0f,1.0f);
nczzdz2[3].y=D3DXVECTOR3(0.0f,1.0f,1.0f);
nczzdz2[0].wl=D3DXVECTOR2(0.0f,1.0f);
nczzdz2[1].wl=D3DXVECTOR2(1.0f,1.0f);
nczzdz2[2].wl=D3DXVECTOR2(1.0f,0.0f);
nczzdz2[3].wl=D3DXVECTOR2(0.0f,0.0f);
索引:0,1,2,0,2,3,
指令:
char xrzl[]="vs_2_0 \n dcl_position v0 \n dcl_normal v1 \n dcl_texcoord0 v2 def c4,0.9f,0.9f,0.9f,0.0f \n def c5,0.5f,0.7f,0.2f,0.0f m4x4 oPos,v0,c0 \n dp3 r1,v1,c5 mul r2,r1,c4 mul oD0,r2,c6 mov oT0.xy,v2";
char xszl[]="ps_2_0 \n def c1,0.9f,0.5f,0.3f,0.0f \n dcl_2d s0 dcl v0 \n dcl t0 texld r0,t0,s0 add r0,r0,v0 mov oC0,r0";
创建纹理: dxsbzz->CreateTexture(100,100,1,0,D3DFMT_A8R8G8B8,D3DPOOL_MANAGED,&wldxzz,0);
对于这个函数的 参数3 的意义不明, 参数6 必须设置为系统调度才能显示纹理。
如果要设置为显存,参数3是不是要设成其他值才能显示纹理?
关联纹理层:dxsbzz->SetTexture( 0, wldxzz );
填充纹理:
D3DLOCKED_RECT lsxx;
wldxzz->LockRect( 0,&lsxx,0,0);
byte *wlncdz=(byte *)lsxx.pBits;//纹理内存地址。
for(int i=1;i<10000;i=i+4)
{
wlncdz[i+1]=255;
}
wldxzz->UnlockRect(0);
|
|