Templatised code for example mesh conversion.

This commit is contained in:
David Williams 2014-05-23 16:26:56 +02:00
parent 79acf814db
commit 37bdf8e3ac
2 changed files with 21 additions and 6 deletions

View File

@ -16,6 +16,17 @@ OpenGLWidget::OpenGLWidget(QWidget *parent)
} }
void OpenGLWidget::setMeshToRender(const PolyVox::Mesh<CubicVertex<uint8_t> >& surfaceMesh) void OpenGLWidget::setMeshToRender(const PolyVox::Mesh<CubicVertex<uint8_t> >& surfaceMesh)
{
setMeshToRenderImpl(surfaceMesh);
}
void OpenGLWidget::setMeshToRender(const PolyVox::Mesh<MarchingCubesVertex<uint8_t> >& surfaceMesh)
{
setMeshToRenderImpl(surfaceMesh);
}
template <typename MeshType>
void OpenGLWidget::setMeshToRenderImpl(const MeshType& surfaceMesh)
{ {
//Convienient access to the vertices and indices //Convienient access to the vertices and indices
const auto& vecIndices = surfaceMesh.getIndices(); const auto& vecIndices = surfaceMesh.getIndices();

View File

@ -51,11 +51,15 @@ public:
// Convert a SurfaceMesh to OpenGL index/vertex buffers // Convert a SurfaceMesh to OpenGL index/vertex buffers
void setMeshToRender(const PolyVox::Mesh<PolyVox::CubicVertex<uint8_t> >& surfaceMesh); void setMeshToRender(const PolyVox::Mesh<PolyVox::CubicVertex<uint8_t> >& surfaceMesh);
void setMeshToRender(const PolyVox::Mesh<PolyVox::MarchingCubesVertex<uint8_t> >& surfaceMesh);
// The viewable region can be adjusted so that this example framework can be use for different volume sizes. // The viewable region can be adjusted so that this example framework can be use for different volume sizes.
void setViewableRegion(PolyVox::Region viewableRegion); void setViewableRegion(PolyVox::Region viewableRegion);
protected: protected:
template <typename MeshType>
void setMeshToRenderImpl(const MeshType& surfaceMesh);
// Qt OpenGL functions // Qt OpenGL functions
void initializeGL(); void initializeGL();
void resizeGL(int w, int h); void resizeGL(int w, int h);