三维GIS的渲染不得不考虑的是效率问题,显卡的工作方式是可以高效的处理大量少批次的三角面,而不是处理少量大批次的三角面。所以为了保证效率,将相同渲染规格的渲染实体合并到一个批次去渲染,会大大提高渲染效率。但是这样也带来一个问题,就是虽然效率提高了,但是可编辑性降低了,合并在一起的实体很难去编辑。
本文介绍一种大量矢量渲染的快速更新颜色的方法,重点是更新颜色,因为合并矢量渲染实体很简单,这里不做太多的介绍。
首先说一下思想,在顶点缓存中加入颜色缓存,加入纹理坐标缓存(用一维纹理坐标代替矢量的ID)。在修改颜色时,锁定纹理坐标缓存,和颜色缓存,根据ID遍历,将颜色赋值即可。
添加颜色缓存代码如下:
//创建颜色数据
vbuf =
HardwareBufferManager::getSingleton().createVertexBuffer(
decl->getVertexSize(COLOURBUFFER),
vertexCount,
HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY);
//绑定颜色顶点
mRenderO