Work on new OpenGL example - Splitting into several files.
This commit is contained in:
parent
bd5acdb4cd
commit
877396af31
@ -5,7 +5,7 @@
|
|||||||
using namespace PolyVox;
|
using namespace PolyVox;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
void renderRegion(PolyVox::IndexedSurfacePatch& isp)
|
void renderRegionImmediateMode(PolyVox::IndexedSurfacePatch& isp)
|
||||||
{
|
{
|
||||||
const vector<SurfaceVertex>& vecVertices = isp.getVertices();
|
const vector<SurfaceVertex>& vecVertices = isp.getVertices();
|
||||||
const vector<uint32>& vecIndices = isp.getIndices();
|
const vector<uint32>& vecIndices = isp.getIndices();
|
||||||
|
@ -5,6 +5,6 @@
|
|||||||
|
|
||||||
#include "glew/glew.h"
|
#include "glew/glew.h"
|
||||||
|
|
||||||
void renderRegion(PolyVox::IndexedSurfacePatch& isp);
|
void renderRegionImmediateMode(PolyVox::IndexedSurfacePatch& isp);
|
||||||
|
|
||||||
#endif //__OpenGLExample_OpenGLImmediateModeSupport_H__
|
#endif //__OpenGLExample_OpenGLImmediateModeSupport_H__
|
||||||
|
@ -95,4 +95,24 @@ OpenGLSurfacePatch BuildOpenGLSurfacePatch(IndexedSurfacePatch& isp)
|
|||||||
glUnmapBuffer(GL_ARRAY_BUFFER);
|
glUnmapBuffer(GL_ARRAY_BUFFER);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void renderRegionVertexBufferObject(const OpenGLSurfacePatch& openGLSurfacePatch)
|
||||||
|
{
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, openGLSurfacePatch.vertexBuffer);
|
||||||
|
glVertexPointer(3, GL_FLOAT, 36, 0);
|
||||||
|
glNormalPointer(GL_FLOAT, 36, (GLvoid*)12);
|
||||||
|
glColorPointer(3, GL_FLOAT, 36, (GLvoid*)24);
|
||||||
|
|
||||||
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, openGLSurfacePatch.indexBuffer);
|
||||||
|
|
||||||
|
glEnableClientState(GL_VERTEX_ARRAY);
|
||||||
|
glEnableClientState(GL_NORMAL_ARRAY);
|
||||||
|
glEnableClientState(GL_COLOR_ARRAY);
|
||||||
|
|
||||||
|
glDrawElements(GL_TRIANGLES, openGLSurfacePatch.noOfIndices, GL_UNSIGNED_INT, 0);
|
||||||
|
|
||||||
|
glDisableClientState(GL_COLOR_ARRAY);
|
||||||
|
glDisableClientState(GL_NORMAL_ARRAY);
|
||||||
|
glDisableClientState(GL_VERTEX_ARRAY);
|
||||||
}
|
}
|
@ -13,5 +13,6 @@ struct OpenGLSurfacePatch
|
|||||||
};
|
};
|
||||||
|
|
||||||
OpenGLSurfacePatch BuildOpenGLSurfacePatch(PolyVox::IndexedSurfacePatch& isp);
|
OpenGLSurfacePatch BuildOpenGLSurfacePatch(PolyVox::IndexedSurfacePatch& isp);
|
||||||
|
void renderRegionVertexBufferObject(const OpenGLSurfacePatch& openGLSurfacePatch);
|
||||||
|
|
||||||
#endif //__OpenGLExample_OpenGLVertexBufferObjectSupport_H__
|
#endif //__OpenGLExample_OpenGLVertexBufferObjectSupport_H__
|
||||||
|
@ -97,27 +97,12 @@ void display ( void ) // Create The Display Function
|
|||||||
{
|
{
|
||||||
if(g_bUseOpenGLVertexBufferObjects)
|
if(g_bUseOpenGLVertexBufferObjects)
|
||||||
{
|
{
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, g_openGLSurfacePatches[uRegionX][uRegionY][uRegionZ].vertexBuffer);
|
renderRegionVertexBufferObject(g_openGLSurfacePatches[uRegionX][uRegionY][uRegionZ]);
|
||||||
glVertexPointer(3, GL_FLOAT, 36, 0);
|
|
||||||
glNormalPointer(GL_FLOAT, 36, (GLvoid*)12);
|
|
||||||
glColorPointer(3, GL_FLOAT, 36, (GLvoid*)24);
|
|
||||||
|
|
||||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, g_openGLSurfacePatches[uRegionX][uRegionY][uRegionZ].indexBuffer);
|
|
||||||
|
|
||||||
glEnableClientState(GL_VERTEX_ARRAY);
|
|
||||||
glEnableClientState(GL_NORMAL_ARRAY);
|
|
||||||
glEnableClientState(GL_COLOR_ARRAY);
|
|
||||||
|
|
||||||
glDrawElements(GL_TRIANGLES, g_openGLSurfacePatches[uRegionX][uRegionY][uRegionZ].noOfIndices, GL_UNSIGNED_INT, 0);
|
|
||||||
|
|
||||||
glDisableClientState(GL_COLOR_ARRAY);
|
|
||||||
glDisableClientState(GL_NORMAL_ARRAY);
|
|
||||||
glDisableClientState(GL_VERTEX_ARRAY);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
IndexedSurfacePatch* ispCurrent = g_indexedSurfacePatches[uRegionX][uRegionY][uRegionZ];
|
IndexedSurfacePatch* ispCurrent = g_indexedSurfacePatches[uRegionX][uRegionY][uRegionZ];
|
||||||
renderRegion(*ispCurrent);
|
renderRegionImmediateMode(*ispCurrent);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -198,7 +183,7 @@ default:
|
|||||||
|
|
||||||
void main ( int argc, char** argv ) // Create Main Function For Bringing It All Together
|
void main ( int argc, char** argv ) // Create Main Function For Bringing It All Together
|
||||||
{
|
{
|
||||||
g_bUseOpenGLVertexBufferObjects = true;
|
g_bUseOpenGLVertexBufferObjects = false;
|
||||||
glutInit ( &argc, argv ); // Erm Just Write It =)
|
glutInit ( &argc, argv ); // Erm Just Write It =)
|
||||||
glutInitDisplayMode ( GLUT_RGB | GLUT_DOUBLE ); // Display Mode
|
glutInitDisplayMode ( GLUT_RGB | GLUT_DOUBLE ); // Display Mode
|
||||||
glutInitWindowSize ( 500, 500 ); // If glutFullScreen wasn't called this is the window size
|
glutInitWindowSize ( 500, 500 ); // If glutFullScreen wasn't called this is the window size
|
||||||
|
Loading…
x
Reference in New Issue
Block a user