赞
踩
![]()
- 根据这个图进行解释
- 1、最上面的hardwarevertexbuffer
- 读写:如果mesh使用的所有子mesh共享buffer的形式,则用mesh的sharedvertexdata,否则用submesh的vertexdata来得到vertexdata结构,vertexdata封装了对该mesh的顶点缓存数据的访问方式,但是却不直接包含这些顶点缓存数据。vertexdata中的vettexbufferbinding可以知道当前的vertexdata对应了确切的硬件上的哪块buffer,可以通过vettexbufferbinding的getBuffer确切的得到该顶点缓存,而vertexdata中的vertexdeclaration则是一个对他对应的buffer进行各种访问的接口,里面有访问的格式等。如果要开始操纵这个buffer,需要将getbuffer得到的hardwarevertexbuffer调用lock,然后将这片缓存上锁,这个lock返回了一个void指针,指向的就是缓存数据。拿着这个指针就可以读取改写等
- 创建:使用hardwarebuffermanager的create来创建,创建后利用hardwarevertexbuffer的write写入数据
- 2.中间的hardwareindexbuffer
- 读写:直接使用submesh的indexdata来得到一个indexdata结构,再调用它的hardwareindexbuffer的来得到这个顶点缓存,童年顶点缓存一样再调用lock来进行读写操作
创建:同顶点缓存
3最下面的hardwarepixelbuffer
读写:从texture中可以直接得到这个hardwarepixelbuffer,然后对它lock后就可以得到一个pixelbox的数据,pixebox封装了所有纹理数据及其各种属性信息
创建:texture是由texturemanager创建的
下面是一些具体的使用硬件缓存的例子
读取顶点和索引缓存
Ogre::MeshPtr meshPtr=mainEntity->getMesh();
//假设这里使用的是share的形式
Ogre::VertexData* vertex_data=meshPtr->sharedVertexData;//得到位置数据的信息
const Ogre::VertexElement* posElem =
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。