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());
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -327,7 +324,11 @@ namespace PolyVox
for(uint32_t i = 0; i < m_uNoOfBlocksInVolume; ++i) for(uint32_t i = 0; i < m_uNoOfBlocksInVolume; ++i)
{ {
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);