|

楼主 |
发表于 2007-10-30 10:23:00
|
显示全部楼层
Re:正交投影矩阵变换后屏幕上目标的移动问题!
请问修改坐标是锁住vb修改的么,即每次要渲染之前,将vb锁住,改其坐标,再渲染么?小弟这么做过了,那个点不动啊,不知怎么回事。附代码:麻烦了!
bool Display(float timeDelta) //渲染函数 timeDelta为两帧时间间隔
{
if( Device ) //
{
//
thta+=timeDelta; //thta 是static float 型全局变量
static float xx=10*cosf(thta);
static float yy=10*sinf(thta);
Device->CreateVertexBuffer( //这个写vb的操作应该是在初始化里进行的, 随时间改变 ,故放到这里来了,不知道是不是这个原因导致没有效果
1 * sizeof(Vertex2),
D3DUSAGE_WRITEONLY,
Vertex2::FVF,
D3DPOOL_MANAGED,
&point,
0);
Vertex2* vp;
point->Lock(0, 0, (void**)&vp, 0);
vp[0] = Vertex2(250.0f+xx, 250.0f+yy, 1.0f, 1.0f, 0.0f, 1.0f);
point->Unlock();
Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xffffffff, 1.0f, 0);
Device->BeginScene();
//
//render other objects
//
Device->SetStreamSource(0, point, 0, sizeof(Vertex2));
Device->SetFVF(Vertex2::FVF);
Device->DrawPrimitive(D3DPT_POINTLIST, 0, 2);//前面已经设置了正交投影矩阵了
Device->EndScene();
Device-> resent(0, 0, 0, 0);
d3d::Release<IDirect3DVertexBuffer9*>(point);
}
return true;
}
这样渲染的结果是在屏幕的区域上有一个点,但是这个点不随时间运动。各位高手指教了! |
|