|
|
大家都知道用完一个接口后就释放掉它,比如一个顶点缓冲区接口p_vb->release();我不知道这里的释放什么含义,是把顶点缓冲区那块内存都删除了吗,本来我一直是这样认为的,直到我看到了下面的一个代码就不确定了:
LPDIRECT3DVERTEXBUFFER9 pVB;
if( SUCCEEDED( g_pMesh->GetVertexBuffer( &pVB ) ) )
{
struct VERTEX { FLOAT x,y,z,tu,tv;};
VERTEX* pVertices;
DWORD dwNumVertices = g_pMesh->GetNumVertices();
pVB->Lock( 0, 0, (void**)&pVertices, 0 );
for( DWORD i=0; i<dwNumVertices; i++ )
pVertices.y = HeightField( pVertices.x, pVertices.z );
pVB->Unlock();
pVB->Release();//注意这里改完就释放了接口(接口指针指向的数据会释放吗)
}
g_pMesh是一个已经创建好的MESH对象,已经加载了数据,上面代码的含义是从MESH中读出顶点数据,然后根据顶点的X,Z值修改Y值,然后就释放掉了顶点缓冲区。其实这里就出现问题了,如果把接口简单的当成指针来理解的话, 那么释放掉接口后那整个缓冲区内容就丢失了, 之后我的MESH就不可能渲染出来, 但是事实是释放后MESH依然可以渲染,所以我就想这里的释放不能理解为销毁缓冲区,但是又具体不知道什么含义,请大家说说 [em7] |
|