diff --git a/examples/OpenGL/OpenGLWidget.cpp b/examples/OpenGL/OpenGLWidget.cpp index 8217bfed..b8c4362f 100644 --- a/examples/OpenGL/OpenGLWidget.cpp +++ b/examples/OpenGL/OpenGLWidget.cpp @@ -8,62 +8,15 @@ using namespace std; OpenGLWidget::OpenGLWidget(QWidget *parent) :QGLWidget(parent) { - g_bUseOpenGLVertexBufferObjects = true; - - m_volData = new Volume(g_uVolumeSideLength); - - //Make our volume contain a sphere in the center. - uint16 minPos = 0; - uint16 midPos = m_volData->getSideLength() / 2; - uint16 maxPos = m_volData->getSideLength() - 1; - createCubeInVolume(*m_volData, Vector3DUint16(minPos, minPos, minPos), Vector3DUint16(maxPos, maxPos, maxPos), 0); - - createSphereInVolume(*m_volData, 50.0f, 5); - createSphereInVolume(*m_volData, 40.0f, 4); - createSphereInVolume(*m_volData, 30.0f, 3); - createSphereInVolume(*m_volData, 20.0f, 2); - createSphereInVolume(*m_volData, 10.0f, 1); - - createCubeInVolume(*m_volData, Vector3DUint16(minPos, minPos, minPos), Vector3DUint16(midPos-1, midPos-1, midPos-1), 0); - createCubeInVolume(*m_volData, Vector3DUint16(midPos+1, midPos+1, minPos), Vector3DUint16(maxPos, maxPos, midPos-1), 0); - createCubeInVolume(*m_volData, Vector3DUint16(midPos+1, minPos, midPos+1), Vector3DUint16(maxPos, midPos-1, maxPos), 0); - createCubeInVolume(*m_volData, Vector3DUint16(minPos, midPos+1, midPos+1), Vector3DUint16(midPos-1, maxPos, maxPos), 0); + + } void OpenGLWidget::setVolume(PolyVox::Volume* volData) { -} - -void OpenGLWidget::initializeGL() -{ - if(g_bUseOpenGLVertexBufferObjects) - { -#ifdef WIN32 - //If we are on Windows we will need GLEW to access recent OpenGL functionality - GLenum err = glewInit(); - if (GLEW_OK != err) - { - /* Problem: glewInit failed, something is seriously wrong. */ - cout << "Error: " << glewGetErrorString(err) << endl; - } -#endif - } - - glShadeModel(GL_SMOOTH); // Enable Smooth Shading - glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Black Background - glClearDepth(1.0f); // Depth Buffer Setup - glEnable(GL_DEPTH_TEST); // Enables Depth Testing - glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do - glEnable ( GL_COLOR_MATERIAL ); - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); - - glEnable(GL_LIGHTING); - glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE); - glEnable(GL_LIGHT0); - - glShadeModel(GL_SMOOTH); + m_volData = volData; //Our volume is broken down into cuboid regions, and we create one mesh for each region. //This three-level for loop iterates over each region. @@ -113,6 +66,37 @@ void OpenGLWidget::initializeGL() } } +void OpenGLWidget::initializeGL() +{ + g_bUseOpenGLVertexBufferObjects = true; + if(g_bUseOpenGLVertexBufferObjects) + { +#ifdef WIN32 + //If we are on Windows we will need GLEW to access recent OpenGL functionality + GLenum err = glewInit(); + if (GLEW_OK != err) + { + /* Problem: glewInit failed, something is seriously wrong. */ + cout << "Error: " << glewGetErrorString(err) << endl; + } +#endif + } + + glShadeModel(GL_SMOOTH); // Enable Smooth Shading + glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Black Background + glClearDepth(1.0f); // Depth Buffer Setup + glEnable(GL_DEPTH_TEST); // Enables Depth Testing + glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do + glEnable ( GL_COLOR_MATERIAL ); + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); + + glEnable(GL_LIGHTING); + glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE); + glEnable(GL_LIGHT0); + + glShadeModel(GL_SMOOTH); +} + void OpenGLWidget::resizeGL(int w, int h) { glViewport ( 0, 0, w, h ); diff --git a/examples/OpenGL/main.cpp b/examples/OpenGL/main.cpp index ac8d9a7d..2d46930d 100644 --- a/examples/OpenGL/main.cpp +++ b/examples/OpenGL/main.cpp @@ -13,14 +13,41 @@ #include +//Some namespaces we need +using namespace std; +using namespace PolyVox; +using namespace std; int main(int argc, char *argv[]) { + Volume volData(g_uVolumeSideLength); + + //Make our volume contain a sphere in the center. + uint16 minPos = 0; + uint16 midPos = volData.getSideLength() / 2; + uint16 maxPos = volData.getSideLength() - 1; + createCubeInVolume(volData, Vector3DUint16(minPos, minPos, minPos), Vector3DUint16(maxPos, maxPos, maxPos), 0); + + createSphereInVolume(volData, 50.0f, 5); + createSphereInVolume(volData, 40.0f, 4); + createSphereInVolume(volData, 30.0f, 3); + createSphereInVolume(volData, 20.0f, 2); + createSphereInVolume(volData, 10.0f, 1); + + createCubeInVolume(volData, Vector3DUint16(minPos, minPos, minPos), Vector3DUint16(midPos-1, midPos-1, midPos-1), 0); + createCubeInVolume(volData, Vector3DUint16(midPos+1, midPos+1, minPos), Vector3DUint16(maxPos, maxPos, midPos-1), 0); + createCubeInVolume(volData, Vector3DUint16(midPos+1, minPos, midPos+1), Vector3DUint16(maxPos, midPos-1, maxPos), 0); + createCubeInVolume(volData, Vector3DUint16(minPos, midPos+1, midPos+1), Vector3DUint16(midPos-1, maxPos, maxPos), 0); + QApplication app(argc, argv); OpenGLWidget openGLWidget(0); + openGLWidget.show(); + + openGLWidget.setVolume(&volData); + return app.exec(); }