//----------------------------------------------------------------------------// void OpenGL3GeometryBuffer::appendGeometry(const Vertex* const vbuff, uint vertex_count) { performBatchManagement(); // update size of current batch d_batches.back().vertexCount += vertex_count; // buffer these vertices GLVertex vd; const Vertex* vs = vbuff; for (uint i = 0; i < vertex_count; ++i, ++vs) { // copy vertex info the buffer, converting from CEGUI::Vertex to // something directly usable by OpenGL as needed. vd.tex[0] = vs->tex_coords.d_x; vd.tex[1] = vs->tex_coords.d_y; vd.colour[0] = vs->colour_val.getRed(); vd.colour[1] = vs->colour_val.getGreen(); vd.colour[2] = vs->colour_val.getBlue(); vd.colour[3] = vs->colour_val.getAlpha(); vd.position[0] = vs->position.d_x; vd.position[1] = vs->position.d_y; vd.position[2] = vs->position.d_z; d_vertices.push_back(vd); } updateOpenGLBuffers(); }
//----------------------------------------------------------------------------// void Direct3D9GeometryBuffer::appendGeometry(const Vertex* const vbuff, uint vertex_count) { performBatchManagement(); // update size of current batch d_batches.back().second += vertex_count; // buffer these vertices D3DVertex vd; const Vertex* vs = vbuff; for (uint i = 0; i < vertex_count; ++i, ++vs) { // copy vertex info the buffer, converting from CEGUI::Vertex to // something directly usable by D3D as needed. vd.x = vs->position.d_x - 0.5f; vd.y = vs->position.d_y - 0.5f; vd.z = vs->position.d_z; vd.diffuse = vs->colour_val.getARGB(); vd.tu = vs->tex_coords.d_x; vd.tv = vs->tex_coords.d_y; d_vertices.push_back(vd); } }