Small crash fixes.

This commit is contained in:
David Williams 2011-02-05 18:19:15 +00:00
parent 754690e251
commit 21490c5228
2 changed files with 20 additions and 4 deletions

View File

@ -7,6 +7,9 @@ using namespace std;
OpenGLWidget::OpenGLWidget(QWidget *parent) OpenGLWidget::OpenGLWidget(QWidget *parent)
:QGLWidget(parent) :QGLWidget(parent)
,m_uBeginIndex(0)
,m_uEndIndex(0)
,noOfIndices(0)
,m_xRotation(0) ,m_xRotation(0)
,m_yRotation(0) ,m_yRotation(0)
{ {
@ -14,6 +17,12 @@ OpenGLWidget::OpenGLWidget(QWidget *parent)
void OpenGLWidget::setSurfaceMeshToRender(const PolyVox::SurfaceMesh<PositionMaterialNormal>& surfaceMesh) void OpenGLWidget::setSurfaceMeshToRender(const PolyVox::SurfaceMesh<PositionMaterialNormal>& surfaceMesh)
{ {
if((surfaceMesh.getNoOfIndices() == 0) || (surfaceMesh.getNoOfVertices() == 0))
{
//We don't have a valid mesh
return;
}
//Convienient access to the vertices and indices //Convienient access to the vertices and indices
const vector<uint32_t>& vecIndices = surfaceMesh.getIndices(); const vector<uint32_t>& vecIndices = surfaceMesh.getIndices();
const vector<PositionMaterialNormal>& vecVertices = surfaceMesh.getVertices(); const vector<PositionMaterialNormal>& vecVertices = surfaceMesh.getVertices();
@ -77,6 +86,12 @@ void OpenGLWidget::resizeGL(int w, int h)
void OpenGLWidget::paintGL() void OpenGLWidget::paintGL()
{ {
if(noOfIndices == 0)
{
//Nothing to render
return;
}
//Clear the screen //Clear the screen
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

View File

@ -51,9 +51,6 @@ namespace PolyVox
{ {
//Create a volume of the right size. //Create a volume of the right size.
resize(uWidth, uHeight, uDepth, uBlockSideLength); resize(uWidth, uHeight, uDepth, uBlockSideLength);
//Create the border block
m_pBorderBlock.fill(VoxelType());
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -329,6 +326,10 @@ namespace PolyVox
m_pBlocks[i].resize(m_uBlockSideLength); m_pBlocks[i].resize(m_uBlockSideLength);
} }
//Create the border block
m_pBorderBlock.resize(uBlockSideLength);
m_pBorderBlock.fill(VoxelType());
//Other properties we might find useful later //Other properties we might find useful later
m_uLongestSideLength = (std::max)((std::max)(m_uWidth,m_uHeight),m_uDepth); m_uLongestSideLength = (std::max)((std::max)(m_uWidth,m_uHeight),m_uDepth);
m_uShortestSideLength = (std::min)((std::min)(m_uWidth,m_uHeight),m_uDepth); m_uShortestSideLength = (std::min)((std::min)(m_uWidth,m_uHeight),m_uDepth);