void DX9LineRenderer::createBuffers(const Group& group) { #ifdef DX9LINERENDERER_AS_LINELIST ArrayBuffer<LineVertex>* lvBuffer = dynamic_cast<ArrayBuffer<LineVertex>*>(group.createBuffer(GPU_BUFFER_NAME,ArrayBufferCreator<LineVertex>(2),0,false)); #else DX9VertexBuffer<LineVertex>* lvBuffer = dynamic_cast<DX9VertexBuffer<LineVertex>*>(group.createBuffer(GPU_BUFFER_NAME,DX9VertexBufferCreator<LineVertex>((D3DFVF_XYZ|D3DFVF_DIFFUSE), 4),0,false)); #endif gpuIterator = gpuBuffer = lvBuffer->getData(); #ifndef DX9LINERENDERER_AS_LINELIST DX9IndexBuffer<short>* ibIndexBuffer = dynamic_cast<DX9IndexBuffer<short>*>(group.createBuffer(INDEX_BUFFER_NAME, DX9IndexBufferCreator<short>(D3DFMT_INDEX16, 6),0,false)); indexBuffer = ibIndexBuffer->getData(); int offsetIndex = 0; // initialisation de l'index buffer indexBuffer->Lock(0, group.getParticles().getNbReserved()*6*sizeof(short), (void**)&indexIterator, 0); for(size_t i = 0; i < group.getParticles().getNbReserved(); i++) { //#define _DX9LINERENDERER_CLOCKWISE_ #ifdef _DX9LINERENDERER_CLOCKWISE_ *(indexIterator++) = 0 + offsetIndex; *(indexIterator++) = 1 + offsetIndex; *(indexIterator++) = 2 + offsetIndex; *(indexIterator++) = 0 + offsetIndex; *(indexIterator++) = 2 + offsetIndex; *(indexIterator++) = 3 + offsetIndex; #else *(indexIterator++) = 0 + offsetIndex; *(indexIterator++) = 2 + offsetIndex; *(indexIterator++) = 1 + offsetIndex; *(indexIterator++) = 0 + offsetIndex; *(indexIterator++) = 3 + offsetIndex; *(indexIterator++) = 2 + offsetIndex; #endif offsetIndex += 4; } indexBuffer->Unlock(); offsetIndex = 0; #endif }
bool DX9LineRenderer::checkBuffers(const Group& group) { ArrayBuffer<LineVertex>* lvBuffer = NULL; if( (lvBuffer = dynamic_cast<ArrayBuffer<LineVertex>*>(group.getBuffer(GPU_BUFFER_NAME))) == NULL ) { gpuBuffer = NULL; return false; } gpuIterator = gpuBuffer = lvBuffer->getData(); #ifndef DX9LINERENDERER_AS_LINELIST DX9IndexBuffer<short>* ibIndexBuffer = NULL; if ((ibIndexBuffer = dynamic_cast<DX9IndexBuffer<short>*>(group.getBuffer(INDEX_BUFFER_NAME))) == NULL) { ibIndexBuffer = NULL; return false; } indexBuffer = ibIndexBuffer->getData(); #endif return true; }