|
From: <axl...@us...> - 2009-08-19 23:50:42
|
Revision: 501
http://hgengine.svn.sourceforge.net/hgengine/?rev=501&view=rev
Author: axlecrusher
Date: 2009-08-19 23:50:34 +0000 (Wed, 19 Aug 2009)
Log Message:
-----------
Poor man's OpenGL profiler.
I can't afford gDEBugger.
Modified Paths:
--------------
Mercury2/src/BoundingBox.cpp
Mercury2/src/FullscreenQuad.cpp
Mercury2/src/GLHeaders.h
Mercury2/src/GLHelpers.cpp
Mercury2/src/Light.cpp
Mercury2/src/Mercury2.cpp
Mercury2/src/MercuryAsset.cpp
Mercury2/src/MercuryFBO.cpp
Mercury2/src/MercuryNode.cpp
Mercury2/src/MercuryVBO.cpp
Mercury2/src/Orthographic.cpp
Mercury2/src/RenderBuffer.cpp
Mercury2/src/RenderDifferedLights.cpp
Mercury2/src/RenderGraph.cpp
Mercury2/src/Shader.cpp
Mercury2/src/Texture.cpp
Mercury2/src/TransformNode.cpp
Mercury2/src/Viewport.cpp
Mercury2/src/X11Window.cpp
Modified: Mercury2/src/BoundingBox.cpp
===================================================================
--- Mercury2/src/BoundingBox.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/BoundingBox.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -14,7 +14,9 @@
OcclusionResult::~OcclusionResult()
{
if ( m_occlusionQuery != 0 )
- glDeleteQueriesARB( 1, &m_occlusionQuery );
+ {
+ GLCALL( glDeleteQueriesARB( 1, &m_occlusionQuery ) );
+ }
m_occlusionQuery = 0;
}
@@ -23,7 +25,7 @@
if (m_occlusionQuery == 0) return ~0;
uint32_t samples;
- glGetQueryObjectuivARB(m_occlusionQuery, GL_QUERY_RESULT_ARB, &samples);
+ GLCALL( glGetQueryObjectuivARB(m_occlusionQuery, GL_QUERY_RESULT_ARB, &samples) );
return samples;
}
@@ -144,36 +146,36 @@
const float* center = GetCenter();
const float* extend = GetExtend();
- glPushAttrib( GL_CURRENT_BIT | GL_ENABLE_BIT | GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
- glDisable(GL_CULL_FACE);
+ GLCALL( glPushAttrib( GL_CURRENT_BIT | GL_ENABLE_BIT | GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT) );
+ GLCALL( glDisable(GL_CULL_FACE) );
- glPushMatrix();
- glTranslatef(center[0], center[1], center[2]);
- glScalef(extend[0],extend[1],extend[2]);
+ GLCALL( glPushMatrix() );
+ GLCALL( glTranslatef(center[0], center[1], center[2]) );
+ GLCALL( glScalef(extend[0],extend[1],extend[2]) );
if (m_vboID == 0) InitVBO();
if ( MercuryVBO::m_lastVBOrendered != &m_vboID )
{
MercuryVBO::m_lastVBOrendered = &m_vboID;
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_vboID); // once
- glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0); // once
- glVertexPointer(3, GL_FLOAT, 0, 0); // once
+ GLCALL( glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_vboID) ); // once
+ GLCALL( glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0) ); // once
+ GLCALL( glVertexPointer(3, GL_FLOAT, 0, 0) ); // once
}
- if (result.GetQueryID() == 0) glGenQueriesARB(1, &result.GetQueryID());
- glBeginQueryARB(GL_SAMPLES_PASSED_ARB, result.GetQueryID());
+ if (result.GetQueryID() == 0) { GLCALL( glGenQueriesARB(1, &result.GetQueryID()) ); }
+ GLCALL( glBeginQueryARB(GL_SAMPLES_PASSED_ARB, result.GetQueryID()) );
- glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
- glDepthMask(GL_FALSE);
+ GLCALL( glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE) );
+ GLCALL( glDepthMask(GL_FALSE) );
- glDrawArrays(GL_QUADS, 0, 24);
+ GLCALL( glDrawArrays(GL_QUADS, 0, 24) );
- glEndQueryARB(GL_SAMPLES_PASSED_ARB);
-// glGetQueryObjectuivARB(q, GL_QUERY_RESULT_ARB, &samples);
+ GLCALL( glEndQueryARB(GL_SAMPLES_PASSED_ARB) );
+// GLCALL( glGetQueryObjectuivARB(q, GL_QUERY_RESULT_ARB, &samples) );
- glPopMatrix();
- glPopAttrib( );
+ GLCALL( glPopMatrix() );
+ GLCALL( glPopAttrib( ) );
}
void BoundingBox::RenderFaces() const
@@ -181,22 +183,22 @@
const float* center = GetCenter();
const float* extend = GetExtend();
- glPushMatrix();
- glTranslatef(center[0], center[1], center[2]);
- glScalef(extend[0],extend[1],extend[2]);
+ GLCALL( glPushMatrix() );
+ GLCALL( glTranslatef(center[0], center[1], center[2]) );
+ GLCALL( glScalef(extend[0],extend[1],extend[2]) );
if (m_vboID == 0) InitVBO();
// if ( MercuryVBO::m_lastVBOrendered != &m_vboID )
{
MercuryVBO::m_lastVBOrendered = &m_vboID;
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_vboID); // once
- glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0); // once
- glVertexPointer(3, GL_FLOAT, 0, 0); // once
+ GLCALL( glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_vboID) ); // once
+ GLCALL( glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0) ); // once
+ GLCALL( glVertexPointer(3, GL_FLOAT, 0, 0) ); // once
}
- glDrawArrays(GL_QUADS, 0, 24);
- glPopMatrix();
+ GLCALL( glDrawArrays(GL_QUADS, 0, 24) );
+ GLCALL( glPopMatrix() );
}
void BoundingBox::Render()
@@ -209,85 +211,85 @@
const float* center = GetCenter();
const float* extend = GetExtend();
- glPushMatrix();
-// glLoadIdentity();
- glPushAttrib( GL_CURRENT_BIT );
- glBegin(GL_LINES);
- glColor3f(0,1.0f,0);
+ GLCALL( glPushMatrix() );
+// GLCALL( glLoadIdentity() );
+ GLCALL( glPushAttrib( GL_CURRENT_BIT ) );
+ GLCALL( glBegin(GL_LINES) );
+ GLCALL( glColor3f(0,1.0f,0) );
//front
- glVertex3f(center[0]-extend[0], center[1]+extend[1], center[2]+extend[2]);
- glVertex3f(center[0]-extend[0], center[1]-extend[1], center[2]+extend[2]);
- glVertex3f(center[0]+extend[0], center[1]-extend[1], center[2]+extend[2]);
- glVertex3f(center[0]-extend[0], center[1]-extend[1], center[2]+extend[2]);
- glVertex3f(center[0]+extend[0], center[1]-extend[1], center[2]+extend[2]);
- glVertex3f(center[0]+extend[0], center[1]+extend[1], center[2]+extend[2]);
- glVertex3f(center[0]+extend[0], center[1]+extend[1], center[2]+extend[2]);
- glVertex3f(center[0]-extend[0], center[1]+extend[1], center[2]+extend[2]);
+ GLCALL( glVertex3f(center[0]-extend[0], center[1]+extend[1], center[2]+extend[2]) );
+ GLCALL( glVertex3f(center[0]-extend[0], center[1]-extend[1], center[2]+extend[2]) );
+ GLCALL( glVertex3f(center[0]+extend[0], center[1]-extend[1], center[2]+extend[2]) );
+ GLCALL( glVertex3f(center[0]-extend[0], center[1]-extend[1], center[2]+extend[2]) );
+ GLCALL( glVertex3f(center[0]+extend[0], center[1]-extend[1], center[2]+extend[2]) );
+ GLCALL( glVertex3f(center[0]+extend[0], center[1]+extend[1], center[2]+extend[2]) );
+ GLCALL( glVertex3f(center[0]+extend[0], center[1]+extend[1], center[2]+extend[2]) );
+ GLCALL( glVertex3f(center[0]-extend[0], center[1]+extend[1], center[2]+extend[2]) );
//back
- glVertex3f(center[0]-extend[0], center[1]+extend[1], center[2]-extend[2]);
- glVertex3f(center[0]-extend[0], center[1]-extend[1], center[2]-extend[2]);
- glVertex3f(center[0]+extend[0], center[1]-extend[1], center[2]-extend[2]);
- glVertex3f(center[0]-extend[0], center[1]-extend[1], center[2]-extend[2]);
- glVertex3f(center[0]+extend[0], center[1]-extend[1], center[2]-extend[2]);
- glVertex3f(center[0]+extend[0], center[1]+extend[1], center[2]-extend[2]);
- glVertex3f(center[0]+extend[0], center[1]+extend[1], center[2]-extend[2]);
- glVertex3f(center[0]-extend[0], center[1]+extend[1], center[2]-extend[2]);
+ GLCALL( glVertex3f(center[0]-extend[0], center[1]+extend[1], center[2]-extend[2]) );
+ GLCALL( glVertex3f(center[0]-extend[0], center[1]-extend[1], center[2]-extend[2]) );
+ GLCALL( glVertex3f(center[0]+extend[0], center[1]-extend[1], center[2]-extend[2]) );
+ GLCALL( glVertex3f(center[0]-extend[0], center[1]-extend[1], center[2]-extend[2]) );
+ GLCALL( glVertex3f(center[0]+extend[0], center[1]-extend[1], center[2]-extend[2]) );
+ GLCALL( glVertex3f(center[0]+extend[0], center[1]+extend[1], center[2]-extend[2]) );
+ GLCALL( glVertex3f(center[0]+extend[0], center[1]+extend[1], center[2]-extend[2]) );
+ GLCALL( glVertex3f(center[0]-extend[0], center[1]+extend[1], center[2]-extend[2]) );
//top
- glVertex3f(center[0]-extend[0], center[1]+extend[1], center[2]-extend[2]);
- glVertex3f(center[0]-extend[0], center[1]+extend[1], center[2]+extend[2]);
- glVertex3f(center[0]+extend[0], center[1]+extend[1], center[2]-extend[2]);
- glVertex3f(center[0]+extend[0], center[1]+extend[1], center[2]+extend[2]);
+ GLCALL( glVertex3f(center[0]-extend[0], center[1]+extend[1], center[2]-extend[2]) );
+ GLCALL( glVertex3f(center[0]-extend[0], center[1]+extend[1], center[2]+extend[2]) );
+ GLCALL( glVertex3f(center[0]+extend[0], center[1]+extend[1], center[2]-extend[2]) );
+ GLCALL( glVertex3f(center[0]+extend[0], center[1]+extend[1], center[2]+extend[2]) );
//bottom
- glVertex3f(center[0]-extend[0], center[1]-extend[1], center[2]-extend[2]);
- glVertex3f(center[0]-extend[0], center[1]-extend[1], center[2]+extend[2]);
- glVertex3f(center[0]+extend[0], center[1]-extend[1], center[2]-extend[2]);
- glVertex3f(center[0]+extend[0], center[1]-extend[1], center[2]+extend[2]);
+ GLCALL( glVertex3f(center[0]-extend[0], center[1]-extend[1], center[2]-extend[2]) );
+ GLCALL( glVertex3f(center[0]-extend[0], center[1]-extend[1], center[2]+extend[2]) );
+ GLCALL( glVertex3f(center[0]+extend[0], center[1]-extend[1], center[2]-extend[2]) );
+ GLCALL( glVertex3f(center[0]+extend[0], center[1]-extend[1], center[2]+extend[2]) );
- glEnd();
+ GLCALL( glEnd() );
- glPointSize(4);
- glBegin(GL_POINTS);
+ GLCALL( glPointSize(4) );
+ GLCALL( glBegin(GL_POINTS) );
//center
- glVertex3f(center[0], center[1], center[2]);
+ GLCALL( glVertex3f(center[0], center[1], center[2]) );
//max point
- glColor3f(1,1,0);
- glVertex3f(center[0]+extend[0], center[1]+extend[1], center[2]+extend[2]);
+ GLCALL( glColor3f(1,1,0) );
+ GLCALL( glVertex3f(center[0]+extend[0], center[1]+extend[1], center[2]+extend[2]) );
//min point
-// glColor3f(1,0,0);
- glVertex3f(center[0]-extend[0], center[1]-extend[1], center[2]-extend[2]);
- glEnd();
+// GLCALL( glColor3f(1,0,0) );
+ GLCALL( glVertex3f(center[0]-extend[0], center[1]-extend[1], center[2]-extend[2]) );
+ GLCALL( glEnd() );
//normals
MercuryVertex c;
- glBegin(GL_LINES);
+ GLCALL( glBegin(GL_LINES) );
- glColor3f(1.0f,0,0);
- glVertex3f(center[0], center[1], center[2]);
+ GLCALL( glColor3f(1.0f,0,0) );
+ GLCALL( glVertex3f(center[0], center[1], center[2]) );
c = center;
c += m_normals[0];
- glVertex3f(c.GetX(), c.GetY(), c.GetZ());
+ GLCALL( glVertex3f(c.GetX(), c.GetY(), c.GetZ()) );
- glColor3f(0,1.0f,0);
- glVertex3f(center[0], center[1], center[2]);
+ GLCALL( glColor3f(0,1.0f,0) );
+ GLCALL( glVertex3f(center[0], center[1], center[2]) );
c = center;
c += m_normals[1];
- glVertex3f(c.GetX(), c.GetY(), c.GetZ());
+ GLCALL( glVertex3f(c.GetX(), c.GetY(), c.GetZ()) );
- glColor3f(0,0,1.0f);
- glVertex3f(center[0], center[1], center[2]);
+ GLCALL( glColor3f(0,0,1.0f) );
+ GLCALL( glVertex3f(center[0], center[1], center[2]) );
c = center;
c += m_normals[2];
- glVertex3f(c.GetX(), c.GetY(), c.GetZ());
+ GLCALL( glVertex3f(c.GetX(), c.GetY(), c.GetZ()) );
- glEnd();
+ GLCALL( glEnd() );
- glPopAttrib( );
- glPopMatrix();
+ GLCALL( glPopAttrib( ) );
+ GLCALL( glPopMatrix() );
}
void BoundingBox::PopulateVertices()
@@ -336,11 +338,11 @@
void BoundingBox::InitVBO()
{
- glGenBuffersARB(1, &m_vboID);
+ GLCALL( glGenBuffersARB(1, &m_vboID) );
//vertex VBO
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_vboID);
- glBufferDataARB(GL_ARRAY_BUFFER_ARB, m_vertexData.LengthInBytes(), m_vertexData.Buffer(), GL_STATIC_DRAW_ARB);
+ GLCALL( glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_vboID) );
+ GLCALL( glBufferDataARB(GL_ARRAY_BUFFER_ARB, m_vertexData.LengthInBytes(), m_vertexData.Buffer(), GL_STATIC_DRAW_ARB) );
}
AlignedBuffer<float> BoundingBox::m_vertexData;
Modified: Mercury2/src/FullscreenQuad.cpp
===================================================================
--- Mercury2/src/FullscreenQuad.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/FullscreenQuad.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -13,20 +13,20 @@
void FullscreenQuad::Render(const MercuryNode* node)
{
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
-// glLoadIdentity();
- glLoadMatrixf( m_matrix.Ptr() ); //this is OK
+ GLCALL( glMatrixMode(GL_MODELVIEW) );
+ GLCALL( glPushMatrix() );
+// GLCALL( glLoadIdentity() );
+ GLCALL( glLoadMatrixf( m_matrix.Ptr() ) ); //this is OK
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
-// glLoadIdentity();
+ GLCALL( glMatrixMode(GL_PROJECTION) );
+ GLCALL( glPushMatrix() );
+// GLCALL( glLoadIdentity() );
Quad::Render( node );
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
+ GLCALL( glPopMatrix() );
+ GLCALL( glMatrixMode(GL_MODELVIEW) );
+ GLCALL( glPopMatrix() );
}
FullscreenQuad* FullscreenQuad::Generate()
Modified: Mercury2/src/GLHeaders.h
===================================================================
--- Mercury2/src/GLHeaders.h 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/GLHeaders.h 2009-08-19 23:50:34 UTC (rev 501)
@@ -23,17 +23,19 @@
#include <MercuryLog.h>
+#define GLCALL(x) x; ++GLCALLCOUNT;
+
#define GLERRORCHECK { \
-uint32_t e = glGetError(); \
+uint32_t e = GLCALL( glGetError() ); \
if ( e != GL_NO_ERROR ) { \
LOG.Write(ssprintf("GL Error:%s", GlError2String(e).c_str())); \
assert(0); } }
#define CHECKFBO { \
-uint32_t e = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER); \
+uint32_t e = GLCALL( glCheckFramebufferStatusEXT(GL_FRAMEBUFFER) ); \
if ( e != GL_FRAMEBUFFER_COMPLETE ) { \
LOG.Write(ssprintf("GL FBO Error:%s", GlError2String(e).c_str())); \
assert(0); } }
-
+extern uint32_t GLCALLCOUNT;
#endif
Modified: Mercury2/src/GLHelpers.cpp
===================================================================
--- Mercury2/src/GLHelpers.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/GLHelpers.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -1,6 +1,8 @@
#include <GLHeaders.h>
#include <GLHelpers.h>
+uint32_t GLCALLCOUNT = 0;
+
MString GlError2String(uint32_t e)
{
switch (e)
@@ -63,13 +65,13 @@
GLdouble modelview[16];
GLdouble projection[16];
- glGetIntegerv(GL_VIEWPORT, viewport);
- glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
- glGetDoublev(GL_PROJECTION_MATRIX, projection);
+ GLCALL( glGetIntegerv(GL_VIEWPORT, viewport) );
+ GLCALL( glGetDoublev(GL_MODELVIEW_MATRIX, modelview) );
+ GLCALL( glGetDoublev(GL_PROJECTION_MATRIX, projection) );
winX = (float)screen_x;
winY = (float)viewport[3] - (float)screen_y;
- glReadPixels( screen_x, (int)winY, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ );
+ GLCALL( glReadPixels( screen_x, (int)winY, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ ) );
gluUnProject(
winX, winY, winZ,
Modified: Mercury2/src/Light.cpp
===================================================================
--- Mercury2/src/Light.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/Light.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -131,7 +131,7 @@
void Light::DifferedRender()
{
- glLoadMatrix( m_worldPosition );
+ GLCALL( glLoadMatrix( m_worldPosition ) );
if ( !m_boundingVolume ) return;
if ( m_shader.IsValid() )
@@ -169,9 +169,9 @@
if (m_fullscreen)
{
- glCullFace(GL_BACK);
+ GLCALL( glCullFace(GL_BACK) );
m_fullScreenQuad.Render( this );
- glCullFace(GL_FRONT);
+ GLCALL( glCullFace(GL_FRONT) );
}
else
bb->RenderFaces();
Modified: Mercury2/src/Mercury2.cpp
===================================================================
--- Mercury2/src/Mercury2.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/Mercury2.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -106,8 +106,11 @@
float batches = MercuryVBO::ResetBatchCount()/(float)m_count;
float VBinds = MercuryVBO::ResetBindCount()/(float)m_count;
float Tbinds = Texture::ReadAndResetBindCount()/(float)m_count;
+ float GLcalls = GLCALLCOUNT/(float)m_count;
LOG.Write( ssprintf("FPS: %f, VBO batches %f, TBinds %f, VBinds %f", m_count/fpsTimer.Age(), batches, Tbinds, VBinds) );
+ LOG.Write( ssprintf("GL/f: %f", GLcalls) );
m_count = 0;
+ GLCALLCOUNT = 0;
fpsTimer = timer;
}
}
Modified: Mercury2/src/MercuryAsset.cpp
===================================================================
--- Mercury2/src/MercuryAsset.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/MercuryAsset.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -71,18 +71,18 @@
void MercuryAsset::DrawAxes()
{
- glBegin(GL_LINES);
- glColor3f(1,0,0);
- glVertex3f(0,0,0);
- glVertex3f(0.5,0,0);
- glColor3f(0,1,0);
- glVertex3f(0,0,0);
- glVertex3f(0,0.5,0);
- glColor3f(0,0,1);
- glVertex3f(0,0,0);
- glVertex3f(0,0,0.5);
- glColor3f(1,1,1);
- glEnd();
+ GLCALL( glBegin(GL_LINES) );
+ GLCALL( glColor3f(1,0,0) );
+ GLCALL( glVertex3f(0,0,0) );
+ GLCALL( glVertex3f(0.5,0,0) );
+ GLCALL( glColor3f(0,1,0) );
+ GLCALL( glVertex3f(0,0,0) );
+ GLCALL( glVertex3f(0,0.5,0) );
+ GLCALL( glColor3f(0,0,1) );
+ GLCALL( glVertex3f(0,0,0) );
+ GLCALL( glVertex3f(0,0,0.5) );
+ GLCALL( glColor3f(1,1,1) );
+ GLCALL( glEnd() );
}
MercuryAssetInstance::MercuryAssetInstance(MercuryAsset* asset)
Modified: Mercury2/src/MercuryFBO.cpp
===================================================================
--- Mercury2/src/MercuryFBO.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/MercuryFBO.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -24,8 +24,8 @@
void MercuryFBO::Clean()
{
- if (m_fboID != 0) glDeleteFramebuffersEXT(1, &m_fboID);
- if (m_depthBufferID != 0) glDeleteRenderbuffersEXT( 1, &m_depthBufferID );
+ if (m_fboID != 0) { GLCALL( glDeleteFramebuffersEXT(1, &m_fboID) ); }
+ if (m_depthBufferID != 0) { GLCALL( glDeleteRenderbuffersEXT( 1, &m_depthBufferID ) ); }
m_fboID = m_depthBufferID = 0;
m_initiated = false;
for (uint8_t i = 0; i < 4; ++i) m_textures[i] = NULL;
@@ -43,8 +43,8 @@
void MercuryFBO::GenerateFBO()
{
- if( m_useDepth ) glGenRenderbuffersEXT( 1, &m_depthBufferID );
- glGenFramebuffersEXT( 1, &m_fboID );
+ if( m_useDepth ) { GLCALL( glGenRenderbuffersEXT( 1, &m_depthBufferID ) ); }
+ GLCALL( glGenFramebuffersEXT( 1, &m_fboID ) );
for (uint8_t i = 0; i < m_numTextures; ++i)
{
@@ -58,16 +58,20 @@
{
if( m_useDepth )
{
- glBindRenderbufferEXT( GL_RENDERBUFFER_EXT, m_fboID );
- glRenderbufferStorageEXT( GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, m_width, m_height );
+ GLCALL( glBindRenderbufferEXT( GL_RENDERBUFFER_EXT, m_fboID ) );
+ GLCALL( glRenderbufferStorageEXT( GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, m_width, m_height ) );
}
- glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, m_fboID );
+ GLCALL( glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, m_fboID ) );
for (uint8_t i = 0; i < m_numTextures; ++i)
- glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT + i, GL_TEXTURE_2D, m_textures[i]->TextureID(), 0 );
-
+ {
+ GLCALL( glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT + i, GL_TEXTURE_2D, m_textures[i]->TextureID(), 0 ) );
+ }
+
if( m_useDepth )
- glFramebufferRenderbufferEXT( GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, m_depthBufferID );
+ {
+ GLCALL( glFramebufferRenderbufferEXT( GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, m_depthBufferID ) );
+ }
}
@@ -75,7 +79,7 @@
void MercuryFBO::InitFBOBeforeRender()
{
m_initiated = true;
- glGenFramebuffersEXT(1, &m_fboID);
+ GLCALL( glGenFramebuffersEXT(1, &m_fboID) );
CHECKFBO;
GLERRORCHECK;
}
@@ -104,19 +108,19 @@
GLERRORCHECK;
}
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_fboID);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ GLCALL( glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_fboID) );
+ GLCALL( glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) );
GLERRORCHECK;
const GLenum buffers[8] = { GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT1_EXT, GL_COLOR_ATTACHMENT2_EXT,
GL_COLOR_ATTACHMENT3_EXT, GL_COLOR_ATTACHMENT4_EXT, GL_COLOR_ATTACHMENT5_EXT,
GL_COLOR_ATTACHMENT6_EXT, GL_COLOR_ATTACHMENT7_EXT };
- glDrawBuffersARB( m_numTextures, buffers );
+ GLCALL( glDrawBuffersARB( m_numTextures, buffers ) );
- glPushAttrib(GL_VIEWPORT_BIT);
+ GLCALL( glPushAttrib(GL_VIEWPORT_BIT) );
- if ( !m_useScreenSize ) glViewport(0,0,m_width, m_height);
+ if ( !m_useScreenSize ) { GLCALL( glViewport(0,0,m_width, m_height) ); }
GLERRORCHECK;
MercuryNode::Render(matrix);
@@ -125,19 +129,19 @@
void MercuryFBO::PostRender(const MercuryMatrix& matrix)
{
- glPopAttrib();
+ GLCALL( glPopAttrib() );
MercuryNode::PostRender(matrix);
// for( uint8_t i = 0; i < m_numTextures; i++ )
// {
-// glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT + i, GL_TEXTURE_2D, 0, 0 );
-// glActiveTextureARB( GL_TEXTURE0_ARB + i );
-// glDisable( GL_TEXTURE_2D );
+// GLCALL( glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT + i, GL_TEXTURE_2D, 0, 0 ) );
+// GLCALL( glActiveTextureARB( GL_TEXTURE0_ARB + i ) );
+// GLCALL( glDisable( GL_TEXTURE_2D ) );
// }
// CURRENTRENDERGRAPH->DoDifferedLightPass();
- glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, 0 );
-// glBindRenderbufferEXT( GL_RENDERBUFFER_EXT, 0 );
+ GLCALL( glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, 0 ) );
+// GLCALL( glBindRenderbufferEXT( GL_RENDERBUFFER_EXT, 0 ) );
// CURRENTRENDERGRAPH->DoDifferedLightPass();
CHECKFBO;
Modified: Mercury2/src/MercuryNode.cpp
===================================================================
--- Mercury2/src/MercuryNode.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/MercuryNode.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -198,7 +198,7 @@
//the alpha render path requires that all things things happen, so
//it is just easier to leave it here than to duplicate this code in
//RenderGraph::RenderAlpha
- glLoadMatrix( modelView );
+ GLCALL( glLoadMatrix( modelView ) );
ShaderAttribute sa;
sa.type = ShaderAttribute::TYPE_MATRIX;
@@ -216,7 +216,7 @@
child->RecursiveRender();
}
- glLoadMatrix( modelView );
+ GLCALL( glLoadMatrix( modelView ) );
Shader::SetAttribute("HG_ModelMatrix", sa);
PostRender( modelView ); //calls on children assets
}
Modified: Mercury2/src/MercuryVBO.cpp
===================================================================
--- Mercury2/src/MercuryVBO.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/MercuryVBO.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -19,7 +19,7 @@
MercuryVBO::~MercuryVBO()
{
- if (m_bufferIDs[0]) glDeleteBuffersARB(2, m_bufferIDs);
+ if (m_bufferIDs[0]) { GLCALL( glDeleteBuffersARB(2, m_bufferIDs) ); }
m_bufferIDs[0] = m_bufferIDs[1] = 0;
}
@@ -39,24 +39,24 @@
if( m_bDirtyIndices )
UpdateIndices();
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_bufferIDs[0]);
- glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, m_bufferIDs[1]);
- glVertexPointer(3, GL_FLOAT, stride, BUFFER_OFFSET(sizeof(float)*5));
+ GLCALL( glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_bufferIDs[0]) );
+ GLCALL( glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, m_bufferIDs[1]) );
+ GLCALL( glVertexPointer(3, GL_FLOAT, stride, BUFFER_OFFSET(sizeof(float)*5)) );
++m_vboBinds;
}
//apply all the active Textures
for (uint8_t i = 0; i < numTextures; ++i)
{
- glActiveTexture( GL_TEXTURE0+i );
- glClientActiveTextureARB(GL_TEXTURE0+i);
- glTexCoordPointer(2, GL_FLOAT, stride, BUFFER_OFFSET(sizeof(float)*0));
+ GLCALL( glActiveTexture( GL_TEXTURE0+i ) );
+ GLCALL( glClientActiveTextureARB(GL_TEXTURE0+i) );
+ GLCALL( glTexCoordPointer(2, GL_FLOAT, stride, BUFFER_OFFSET(sizeof(float)*0)) );
}
- glEnableClientState( GL_NORMAL_ARRAY );
- glNormalPointer(GL_FLOAT, stride, BUFFER_OFFSET(sizeof(float)*2));
+ GLCALL( glEnableClientState( GL_NORMAL_ARRAY ) );
+ GLCALL( glNormalPointer(GL_FLOAT, stride, BUFFER_OFFSET(sizeof(float)*2)) );
- glDrawRangeElements(GL_TRIANGLES, 0, m_indexData.Length()-1, m_indexData.Length(), GL_UNSIGNED_SHORT, NULL);
+ GLCALL( glDrawRangeElements(GL_TRIANGLES, 0, m_indexData.Length()-1, m_indexData.Length(), GL_UNSIGNED_SHORT, NULL) );
m_vboBatches++;
if (m_boundingVolume && SHOWBOUNDINGVOLUME) m_boundingVolume->Render();
@@ -67,27 +67,27 @@
{
if (!m_bufferIDs[0])
{
- glGenBuffersARB(2, m_bufferIDs);
+ GLCALL( glGenBuffersARB(2, m_bufferIDs) );
}
UpdateIndices();
UpdateVertices();
- glEnableClientState(GL_VERTEX_ARRAY);
+ GLCALL( glEnableClientState(GL_VERTEX_ARRAY) );
m_initiated = true;
}
void MercuryVBO::UpdateIndices()
{
- glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, m_bufferIDs[1]);
- glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, m_indexData.LengthInBytes(), m_indexData.Buffer(), GL_STATIC_DRAW_ARB);
+ GLCALL( glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, m_bufferIDs[1]) );
+ GLCALL( glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, m_indexData.LengthInBytes(), m_indexData.Buffer(), GL_STATIC_DRAW_ARB) );
m_bDirtyIndices = 0;
}
void MercuryVBO::UpdateVertices()
{
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_bufferIDs[0]);
- glBufferDataARB(GL_ARRAY_BUFFER_ARB, m_vertexData.LengthInBytes(), m_vertexData.Buffer(), GL_STATIC_DRAW_ARB);
+ GLCALL( glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_bufferIDs[0]) );
+ GLCALL( glBufferDataARB(GL_ARRAY_BUFFER_ARB, m_vertexData.LengthInBytes(), m_vertexData.Buffer(), GL_STATIC_DRAW_ARB) );
m_bDirtyVertices = 0;
}
Modified: Mercury2/src/Orthographic.cpp
===================================================================
--- Mercury2/src/Orthographic.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/Orthographic.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -13,9 +13,9 @@
FRUSTUM = &m_frustum;
//Load the frustum into the projection
- glMatrixMode(GL_PROJECTION);
- glLoadMatrix( m_frustum.GetMatrix() );
- glMatrixMode(GL_MODELVIEW);
+ GLCALL( glMatrixMode(GL_PROJECTION) );
+ GLCALL( glLoadMatrix( m_frustum.GetMatrix() ) );
+ GLCALL( glMatrixMode(GL_MODELVIEW) );
VIEWMATRIX = matrix;
MercuryNode::PreRender(matrix);
@@ -26,9 +26,9 @@
FRUSTUM = &m_frustum;
//Load the frustum into the projection
- glMatrixMode(GL_PROJECTION);
- glLoadMatrix( m_frustum.GetMatrix() );
- glMatrixMode(GL_MODELVIEW);
+ GLCALL( glMatrixMode(GL_PROJECTION) );
+ GLCALL( glLoadMatrix( m_frustum.GetMatrix() ) );
+ GLCALL( glMatrixMode(GL_MODELVIEW) );
VIEWMATRIX = matrix;
MercuryNode::Render(matrix);
Modified: Mercury2/src/RenderBuffer.cpp
===================================================================
--- Mercury2/src/RenderBuffer.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/RenderBuffer.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -14,28 +14,28 @@
RenderBuffer::~RenderBuffer()
{
- if (m_bufferID != 0) glDeleteRenderbuffersEXT(1, &m_bufferID);
+ if (m_bufferID != 0) { GLCALL( glDeleteRenderbuffersEXT(1, &m_bufferID) ); }
}
void RenderBuffer::Render(const MercuryNode* node)
{
if ( !m_initiated ) InitRenderBuffer();
- glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, m_bufferID);
+ GLCALL( glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, m_bufferID) );
if ( NeedResize() ) AllocateSpace();
if ( m_type == TEXTURE )
{
- glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GLAttachPoint(), GL_TEXTURE_2D, m_textureID, 0);
+ GLCALL( glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GLAttachPoint(), GL_TEXTURE_2D, m_textureID, 0) );
}
else
{
- glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GLAttachPoint(), GL_RENDERBUFFER_EXT, m_bufferID);
+ GLCALL( glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GLAttachPoint(), GL_RENDERBUFFER_EXT, m_bufferID) );
}
CHECKFBO;
- glClearColor(0.0, 0.0, 0.0, 0.0);
- glClear(GL_COLOR_BUFFER_BIT );
+ GLCALL( glClearColor(0.0, 0.0, 0.0, 0.0) );
+ GLCALL( glClear(GL_COLOR_BUFFER_BIT ) );
GLERRORCHECK;
}
@@ -44,57 +44,57 @@
GLERRORCHECK;
if ( m_type == TEXTURE )
{
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
- glLoadIdentity();
+ GLCALL( glMatrixMode(GL_MODELVIEW) );
+ GLCALL( glPushMatrix() );
+ GLCALL( glLoadIdentity() );
GLERRORCHECK;
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
+ GLCALL( glMatrixMode(GL_PROJECTION) );
+ GLCALL( glPushMatrix() );
+ GLCALL( glLoadIdentity() );
GLERRORCHECK;
// printf("active %d\n", Texture::NumberActiveTextures() );
//this works with a "normal" texture, FBO texture is still white
- glActiveTexture( GL_TEXTURE0 );
- glClientActiveTextureARB(GL_TEXTURE0);
- glEnable( GL_TEXTURE_2D );
- glBindTexture(GL_TEXTURE_2D, m_textureID);
- glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
+ GLCALL( glActiveTexture( GL_TEXTURE0 ) );
+ GLCALL( glClientActiveTextureARB(GL_TEXTURE0) );
+ GLCALL( glEnable( GL_TEXTURE_2D ) );
+ GLCALL( glBindTexture(GL_TEXTURE_2D, m_textureID) );
+ GLCALL( glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ) );
GLERRORCHECK;
- glBegin(GL_QUADS);
- glTexCoord2d(0,1);
- glVertex3i(-1, -1, -1);
+ GLCALL( glBegin(GL_QUADS) );
+ GLCALL( glTexCoord2d(0,1) );
+ GLCALL( glVertex3i(-1, -1, -1) );
- glTexCoord2d(1,1);
- glVertex3i(1, -1, -1);
+ GLCALL( glTexCoord2d(1,1) );
+ GLCALL( glVertex3i(1, -1, -1) );
- glTexCoord2d(1,0);
- glVertex3i(1, 1, -1);
+ GLCALL( glTexCoord2d(1,0) );
+ GLCALL( glVertex3i(1, 1, -1) );
- glTexCoord2d(0,0);
- glVertex3i(-1, 1, -1);
+ GLCALL( glTexCoord2d(0,0) );
+ GLCALL( glVertex3i(-1, 1, -1) );
- glEnd();
+ GLCALL( glEnd() );
GLERRORCHECK;
- glBindTexture(GL_TEXTURE_2D, 0);
-// glActiveTexture( GL_TEXTURE0 );
-// glClientActiveTextureARB(GL_TEXTURE0);
-// glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- glDisable( GL_TEXTURE_2D );
+ GLCALL( glBindTexture(GL_TEXTURE_2D, 0) );
+// GLCALL( glActiveTexture( GL_TEXTURE0 ) );
+// GLCALL( glClientActiveTextureARB(GL_TEXTURE0) );
+// GLCALL( glDisableClientState(GL_TEXTURE_COORD_ARRAY) );
+ GLCALL( glDisable( GL_TEXTURE_2D ) );
GLERRORCHECK;
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
+ GLCALL( glPopMatrix() );
+ GLCALL( glMatrixMode(GL_MODELVIEW) );
+ GLCALL( glPopMatrix() );
GLERRORCHECK;
}
@@ -103,10 +103,10 @@
void RenderBuffer::InitRenderBuffer()
{
m_initiated = true;
- glGenRenderbuffersEXT(1, &m_bufferID);
+ GLCALL( glGenRenderbuffersEXT(1, &m_bufferID) );
CHECKFBO;
GLERRORCHECK;
- if (m_type == TEXTURE) glGenTextures(1, &m_textureID);
+ if (m_type == TEXTURE) { GLCALL( glGenTextures(1, &m_textureID) ); }
CHECKFBO;
GLERRORCHECK;
}
@@ -120,11 +120,13 @@
if (m_type == TEXTURE)
{
- glBindTexture(GL_TEXTURE_2D, m_textureID);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, m_width, m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+ GLCALL( glBindTexture(GL_TEXTURE_2D, m_textureID) );
+ GLCALL( glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, m_width, m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL) );
}
else
- glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GLType(), m_width, m_height);
+ {
+ GLCALL( glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GLType(), m_width, m_height) );
+ }
GLERRORCHECK;
}
Modified: Mercury2/src/RenderDifferedLights.cpp
===================================================================
--- Mercury2/src/RenderDifferedLights.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/RenderDifferedLights.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -23,21 +23,21 @@
//apply all the active Textures
for (uint8_t i = 0; i < numTextures; ++i)
{
- glActiveTexture( GL_TEXTURE0+i );
- glClientActiveTextureARB(GL_TEXTURE0+i);
- glTexCoordPointer(2, GL_FLOAT, stride, BUFFER_OFFSET(sizeof(float)*0));
+ GLCALL( glActiveTexture( GL_TEXTURE0+i ) );
+ GLCALL( glClientActiveTextureARB(GL_TEXTURE0+i) );
+ GLCALL( glTexCoordPointer(2, GL_FLOAT, stride, BUFFER_OFFSET(sizeof(float)*0)) );
}
- glPushAttrib( GL_CURRENT_BIT | GL_ENABLE_BIT | GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_POLYGON_BIT);
- glCullFace(GL_FRONT);
+ GLCALL( glPushAttrib( GL_CURRENT_BIT | GL_ENABLE_BIT | GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_POLYGON_BIT) );
+ GLCALL( glCullFace(GL_FRONT) );
- glDisable(GL_DEPTH_TEST);
- glDepthMask(false);
- glBlendFunc(GL_ONE, GL_ONE);
+ GLCALL( glDisable(GL_DEPTH_TEST) );
+ GLCALL( glDepthMask(false) );
+ GLCALL( glBlendFunc(GL_ONE, GL_ONE) );
CURRENTRENDERGRAPH->DoDifferedLightPass();
- glPopAttrib( );
+ GLCALL( glPopAttrib( ) );
}
RenderDifferedLights* RenderDifferedLights::Generate()
Modified: Mercury2/src/RenderGraph.cpp
===================================================================
--- Mercury2/src/RenderGraph.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/RenderGraph.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -20,7 +20,7 @@
modelView = m_node->ManipulateMatrix( *m_matrix );
if ( m_node->IsHidden() || m_node->IsCulled(modelView) ) return;
- glLoadMatrix( modelView );
+ GLCALL( glLoadMatrix( modelView ) );
sa.type = ShaderAttribute::TYPE_MATRIX;
sa.value.matrix = m_matrix->Ptr();
@@ -36,7 +36,7 @@
if (m_node)
{
- glLoadMatrix( modelView );
+ GLCALL( glLoadMatrix( modelView ) );
Shader::SetAttribute("HG_ModelMatrix", sa);
m_node->PostRender( modelView ); //calls on children assets
}
Modified: Mercury2/src/Shader.cpp
===================================================================
--- Mercury2/src/Shader.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/Shader.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -193,16 +193,16 @@
GLint bFragCompiled;
GLint stringLength;
- fragmentShader = glCreateShaderObjectARB( GL_FRAGMENT_SHADER_ARB );
- glShaderSourceARB( fragmentShader, 1, &sShaderCode, NULL );
- glCompileShaderARB( fragmentShader );
+ fragmentShader = GLCALL( glCreateShaderObjectARB( GL_FRAGMENT_SHADER_ARB ) );
+ GLCALL( glShaderSourceARB( fragmentShader, 1, &sShaderCode, NULL ) );
+ GLCALL( glCompileShaderARB( fragmentShader ) );
- glGetObjectParameterivARB( fragmentShader, GL_OBJECT_COMPILE_STATUS_ARB, &bFragCompiled );
- glGetObjectParameterivARB( fragmentShader, GL_OBJECT_INFO_LOG_LENGTH_ARB, &stringLength );
+ GLCALL( glGetObjectParameterivARB( fragmentShader, GL_OBJECT_COMPILE_STATUS_ARB, &bFragCompiled ) );
+ GLCALL( glGetObjectParameterivARB( fragmentShader, GL_OBJECT_INFO_LOG_LENGTH_ARB, &stringLength ) );
if ( stringLength > 1 )
{
char * tmpstr = (char*)malloc( stringLength + 1 );
- glGetInfoLogARB( fragmentShader, stringLength, NULL, tmpstr );
+ GLCALL( glGetInfoLogARB( fragmentShader, stringLength, NULL, tmpstr ) );
puts( "Compiling Fragment Shader response follows:" );
puts( tmpstr );
free( tmpstr );
@@ -219,18 +219,18 @@
GLint bVertCompiled;
GLint stringLength;
//Create a new vertex shader
- vertexShader = glCreateShaderObjectARB( GL_VERTEX_SHADER_ARB );
+ vertexShader = GLCALL( glCreateShaderObjectARB( GL_VERTEX_SHADER_ARB ) );
//Bind the shader to the text, setting that to be its source.
- glShaderSourceARB( vertexShader, 1, &sShaderCode, NULL );
+ GLCALL( glShaderSourceARB( vertexShader, 1, &sShaderCode, NULL ) );
//Compile the shader
- glCompileShaderARB( vertexShader );
+ GLCALL( glCompileShaderARB( vertexShader ) );
//Did the shader compile? Were there any errors?
- glGetObjectParameterivARB( vertexShader, GL_OBJECT_COMPILE_STATUS_ARB, &bVertCompiled );
- glGetObjectParameterivARB( vertexShader, GL_OBJECT_INFO_LOG_LENGTH_ARB, &stringLength );
+ GLCALL( glGetObjectParameterivARB( vertexShader, GL_OBJECT_COMPILE_STATUS_ARB, &bVertCompiled ) );
+ GLCALL( glGetObjectParameterivARB( vertexShader, GL_OBJECT_INFO_LOG_LENGTH_ARB, &stringLength ) );
if( stringLength > 1 )
{
char * tmpstr = (char*)malloc( stringLength + 1 );
- glGetInfoLogARB( vertexShader, stringLength, NULL, tmpstr );
+ GLCALL( glGetInfoLogARB( vertexShader, stringLength, NULL, tmpstr ) );
puts( "Compiling Vertex Shader response follows:" );
puts( tmpstr );
free( tmpstr );
@@ -248,18 +248,18 @@
GLint bGeomCompiled;
GLint stringLength;
//Create a new geometry shader
- geometryShader = glCreateShaderObjectARB( GL_GEOMETRY_SHADER_EXT );
+ geometryShader = GLCALL( glCreateShaderObjectARB( GL_GEOMETRY_SHADER_EXT ) );
//Bind the shader to the text, setting that to be its source.
- glShaderSourceARB( geometryShader, 1, &sShaderCode, NULL );
+ GLCALL( glShaderSourceARB( geometryShader, 1, &sShaderCode, NULL ) );
//Compile the shader
- glCompileShaderARB( geometryShader );
+ GLCALL( glCompileShaderARB( geometryShader ) );
//Did the shader compile? Were there any errors?
- glGetObjectParameterivARB( geometryShader, GL_OBJECT_COMPILE_STATUS_ARB, &bGeomCompiled );
- glGetObjectParameterivARB( geometryShader, GL_OBJECT_INFO_LOG_LENGTH_ARB, &stringLength );
+ GLCALL( glGetObjectParameterivARB( geometryShader, GL_OBJECT_COMPILE_STATUS_ARB, &bGeomCompiled ) );
+ GLCALL( glGetObjectParameterivARB( geometryShader, GL_OBJECT_INFO_LOG_LENGTH_ARB, &stringLength ) );
if( bGeomCompiled == 0 )
{
char * tmpstr = (char*)malloc( stringLength + 1 );
- glGetInfoLogARB( geometryShader, stringLength, NULL, tmpstr );
+ GLCALL( glGetInfoLogARB( geometryShader, stringLength, NULL, tmpstr ) );
puts( "Compiling Geometry Shader response follows:" );
puts( tmpstr );
free( tmpstr );
@@ -273,16 +273,22 @@
GLint bLinked;
GLint stringLength;
//Create the actual shader prgoram
- iProgramID = glCreateProgramObjectARB();
+ iProgramID = GLCALL( glCreateProgramObjectARB() );
//Attach the fragment/vertex shader to it.
if( vertexShader )
- glAttachObjectARB( iProgramID, vertexShader );
+ {
+ GLCALL( glAttachObjectARB( iProgramID, vertexShader ) );
+ }
if( fragmentShader )
- glAttachObjectARB( iProgramID, fragmentShader );
+ {
+ GLCALL( glAttachObjectARB( iProgramID, fragmentShader ) );
+ }
if( geometryShader )
- glAttachObjectARB( iProgramID, geometryShader );
+ {
+ GLCALL( glAttachObjectARB( iProgramID, geometryShader ) );
+ }
//Attempt to link the shader
- glLinkProgramARB( iProgramID );
+ GLCALL( glLinkProgramARB( iProgramID ) );
//If we're using a geometry shader, we have to do a little extra.
if( CustomGLProgramParI && geometryShader )
@@ -292,7 +298,7 @@
int ierror, i;
GLint imaxvert;
- glGetIntegerv(GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT,&imaxvert);
+ GLCALL( glGetIntegerv(GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT,&imaxvert) );
if( (ierror = glGetError()) != 0 )
{
puts( "ERROR: You cannot load a geometry shader when there are still errors left in OpenGL." );
@@ -310,13 +316,13 @@
//See if there were any errors.
- glGetObjectParameterivARB( iProgramID, GL_OBJECT_LINK_STATUS_ARB, &bLinked );
- glGetObjectParameterivARB( iProgramID, GL_OBJECT_INFO_LOG_LENGTH_ARB, &stringLength );
+ GLCALL( glGetObjectParameterivARB( iProgramID, GL_OBJECT_LINK_STATUS_ARB, &bLinked ) );
+ GLCALL( glGetObjectParameterivARB( iProgramID, GL_OBJECT_INFO_LOG_LENGTH_ARB, &stringLength ) );
if ( stringLength > 1 || bLinked == 0 )
{
char * tmpstr = (char*)malloc( stringLength + 1 );
- glGetInfoLogARB( iProgramID, stringLength, NULL, tmpstr );
+ GLCALL( glGetInfoLogARB( iProgramID, stringLength, NULL, tmpstr ) );
puts( "Linking shaders. response follows:" );
puts( tmpstr );
free( tmpstr );
@@ -326,7 +332,7 @@
//Build the list of uniform tabs.
int iNumUniforms;
- glGetObjectParameterivARB( iProgramID, GL_OBJECT_ACTIVE_UNIFORMS_ARB, &iNumUniforms );
+ GLCALL( glGetObjectParameterivARB( iProgramID, GL_OBJECT_ACTIVE_UNIFORMS_ARB, &iNumUniforms ) );
m_uniforms.clear();
for( int i = 0; i < iNumUniforms; ++i )
{
@@ -334,10 +340,10 @@
int bufflen;
GLint size;
GLenum type;
- glGetActiveUniformARB( iProgramID, i, 1024, &bufflen, &size, &type, buffer );
+ GLCALL( glGetActiveUniformARB( iProgramID, i, 1024, &bufflen, &size, &type, buffer ) );
buffer[bufflen] = 0;
-// m_uniforms[buffer] = glGetUniformLocationARB( iProgramID, buffer );
- int location = glGetUniformLocationARB( iProgramID, buffer );
+// m_uniforms[buffer] = GLCALL( glGetUniformLocationARB( iProgramID, buffer ) );
+ int location = GLCALL( glGetUniformLocationARB( iProgramID, buffer ) );
m_uniforms.push_back( UniformMap(buffer, location) );
}
return true;
@@ -352,23 +358,23 @@
return;
//If we can't destroy the object, then don't try.
- glGetObjectParameterivARB(iProgramID, GL_OBJECT_ATTACHED_OBJECTS_ARB, &count);
+ GLCALL( glGetObjectParameterivARB(iProgramID, GL_OBJECT_ATTACHED_OBJECTS_ARB, &count) );
//Iterate through all children.
if (count > 0)
{
objects = (GLhandleARB *)malloc(count*sizeof(GLhandleARB));
- glGetAttachedObjectsARB(iProgramID, count, NULL, objects);
+ GLCALL( glGetAttachedObjectsARB(iProgramID, count, NULL, objects) );
}
else
return;
for ( i = 0; i < count; ++i)
{
- glDetachObjectARB(iProgramID, objects[i]);
+ GLCALL( glDetachObjectARB(iProgramID, objects[i]) );
}
- glDeleteObjectARB(iProgramID);
+ GLCALL( glDeleteObjectARB(iProgramID) );
iProgramID = 0;
free( objects );
@@ -418,7 +424,7 @@
{
if ( !iProgramID ) return;
- glUseProgramObjectARB( iProgramID );
+ GLCALL( glUseProgramObjectARB( iProgramID ) );
GLERRORCHECK;
//set attributes here
@@ -433,7 +439,7 @@
void Shader::DeactivateShader()
{
- glUseProgramObjectARB( 0 );
+ GLCALL( glUseProgramObjectARB( 0 ) );
GLERRORCHECK;
}
@@ -471,17 +477,17 @@
{
case ShaderAttribute::TYPE_INT:
case ShaderAttribute::TYPE_SAMPLER:
- glUniform1iARB( location, x.value.iInt );
+ GLCALL( glUniform1iARB( location, x.value.iInt ) );
break;
case ShaderAttribute::TYPE_FLOAT:
case ShaderAttribute::TYPE_FLOATV4:
- glUniform4fvARB( location, 1, &x.value.fFloatV4[0] );
+ GLCALL( glUniform4fvARB( location, 1, &x.value.fFloatV4[0] ) );
break;
case ShaderAttribute::TYPE_MATRIX:
- glUniformMatrix4fvARB(location, 1, 1, x.value.matrix); //transpase too
+ GLCALL( glUniformMatrix4fvARB(location, 1, 1, x.value.matrix) ); //transpase too
break;
case ShaderAttribute::TYPE_INT4:
- glUniform4ivARB( location, 1, x.value.iInts );
+ GLCALL( glUniform4ivARB( location, 1, x.value.iInts ) );
break;
};
GLERRORCHECK;
Modified: Mercury2/src/Texture.cpp
===================================================================
--- Mercury2/src/Texture.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/Texture.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -33,19 +33,19 @@
void Texture::Clean()
{
- if (m_textureID) glDeleteTextures(1, &m_textureID);
+ if (m_textureID) { GLCALL( glDeleteTextures(1, &m_textureID) ); }
m_textureID = 0;
}
void Texture::LoadFromRaw()
{
if ( !m_raw ) return;
- if ( !m_textureID ) glGenTextures(1, &m_textureID);
+ if ( !m_textureID ) { GLCALL( glGenTextures(1, &m_textureID) ); }
// m_raw = raw;
GLenum byteType = ToGLColorType( m_raw->m_ColorByteType );
- glBindTexture(GL_TEXTURE_2D, m_textureID);
+ GLCALL( glBindTexture(GL_TEXTURE_2D, m_textureID) );
/*
glTexImage2D(GL_TEXTURE_2D,
0,
@@ -57,17 +57,17 @@
GL_UNSIGNED_BYTE,
m_raw->m_data);
*/
- gluBuild2DMipmaps( GL_TEXTURE_2D, byteType, m_raw->m_width, m_raw->m_height, byteType, GL_UNSIGNED_BYTE, m_raw->m_data );
+ GLCALL( gluBuild2DMipmaps( GL_TEXTURE_2D, byteType, m_raw->m_width, m_raw->m_height, byteType, GL_UNSIGNED_BYTE, m_raw->m_data ) );
- glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
- glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
+ GLCALL( glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST) );
+ GLCALL( glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR) );
-// glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
+// GLCALL( glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ) );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
+ GLCALL( glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP) );
+ GLCALL( glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP) );
-// gluBuild2DMipmaps( GL_TEXTURE_2D, 3, m_raw->m_width, m_raw->m_height, ByteType, GL_UNSIGNED_BYTE, m_raw->m_data );
+// GLCALL( gluBuild2DMipmaps( GL_TEXTURE_2D, 3, m_raw->m_width, m_raw->m_height, ByteType, GL_UNSIGNED_BYTE, m_raw->m_data ) );
SAFE_DELETE(m_raw);
};
@@ -103,12 +103,12 @@
void Texture::BindTexture()
{
m_textureResource = GL_TEXTURE0+m_numActiveTextures;
- glActiveTexture( m_textureResource );
- glClientActiveTextureARB(m_textureResource);
- glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- glEnable( GL_TEXTURE_2D );
- glBindTexture(GL_TEXTURE_2D, m_textureID);
- glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
+ GLCALL( glActiveTexture( m_textureResource ) );
+ GLCALL( glClientActiveTextureARB(m_textureResource) );
+ GLCALL( glEnableClientState(GL_TEXTURE_COORD_ARRAY) );
+ GLCALL( glEnable( GL_TEXTURE_2D ) );
+ GLCALL( glBindTexture(GL_TEXTURE_2D, m_textureID) );
+ GLCALL( glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ) );
GLERRORCHECK;
@@ -125,10 +125,10 @@
void Texture::UnbindTexture()
{
- glActiveTexture( m_textureResource );
- glClientActiveTextureARB(m_textureResource);
- glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- glDisable( GL_TEXTURE_2D );
+ GLCALL( glActiveTexture( m_textureResource ) );
+ GLCALL( glClientActiveTextureARB(m_textureResource) );
+ GLCALL( glDisableClientState(GL_TEXTURE_COORD_ARRAY) );
+ GLCALL( glDisable( GL_TEXTURE_2D ) );
GLERRORCHECK;
Shader::RemoveAttribute( ssprintf("HG_Texture%d", m_numActiveTextures) );
@@ -172,12 +172,12 @@
m_path = "DYNATEXT"+name;
ADD_ASSET_INSTANCE(Texture, m_path, this);
- if (m_textureID == 0) glGenTextures( 1, &m_textureID );
- glBindTexture( GL_TEXTURE_2D, m_textureID );
- glCopyTexImage2D( GL_TEXTURE_2D, 0, ToGLColorType(cbt), 0, 0, width, height, 0 );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glBindTexture( GL_TEXTURE_2D, 0 );
+ if (m_textureID == 0) { GLCALL( glGenTextures( 1, &m_textureID ) ); }
+ GLCALL( glBindTexture( GL_TEXTURE_2D, m_textureID ) );
+ GLCALL( glCopyTexImage2D( GL_TEXTURE_2D, 0, ToGLColorType(cbt), 0, 0, width, height, 0 ) );
+ GLCALL( glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ) );
+ GLCALL( glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST) );
+ GLCALL( glBindTexture( GL_TEXTURE_2D, 0 ) );
GLERRORCHECK;
}
Modified: Mercury2/src/TransformNode.cpp
===================================================================
--- Mercury2/src/TransformNode.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/TransformNode.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -23,7 +23,7 @@
const MercuryMatrix& matrix = GetGlobalMatrix();
m_modelView = ManipulateMatrix( matrix );
- glLoadMatrix( m_modelView );
+ GLCALL( glLoadMatrix( m_modelView ) );
MercuryNode::RecursivePreRender();
}
@@ -35,7 +35,7 @@
const MercuryMatrix& matrix = GetGlobalMatrix();
m_modelView = ManipulateMatrix( matrix );
- glLoadMatrix( m_modelView );
+ GLCALL( glLoadMatrix( m_modelView ) );
}
Modified: Mercury2/src/Viewport.cpp
===================================================================
--- Mercury2/src/Viewport.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/Viewport.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -23,14 +23,14 @@
FRUSTUM = &m_frustum;
MercuryWindow* w = MercuryWindow::GetCurrentWindow();
- glViewport(m_minx, m_miny, (GLsizei)(w->Width()*m_xFactor), (GLsizei)(w->Height()*m_yFactor));
+ GLCALL( glViewport(m_minx, m_miny, (GLsizei)(w->Width()*m_xFactor), (GLsizei)(w->Height()*m_yFactor)) );
//Load the frustum into the projection
//"eye" position does not go into projection
- glMatrixMode(GL_PROJECTION);
- glLoadMatrix( m_frustum.GetMatrix() );
+ GLCALL( glMatrixMode(GL_PROJECTION) );
+ GLCALL( glLoadMatrix( m_frustum.GetMatrix() ) );
- glMatrixMode(GL_MODELVIEW);
+ GLCALL( glMatrixMode(GL_MODELVIEW) );
//Sets up the clipping frustum
m_frustum.LookAt(EYE, LOOKAT, MercuryVertex(0,1,0));
@@ -41,18 +41,18 @@
FRUSTUM = &m_frustum;
MercuryWindow* w = MercuryWindow::GetCurrentWindow();
- glViewport(m_minx, m_miny, (GLsizei)(w->Width()*m_xFactor), (GLsizei)(w->Height()*m_yFactor));
+ GLCALL( glViewport(m_minx, m_miny, (GLsizei)(w->Width()*m_xFactor), (GLsizei)(w->Height()*m_yFactor)) );
//Load the frustum into the projection
//"eye" position does not go into projection
- glMatrixMode(GL_PROJECTION);
- glLoadMatrix( m_frustum.GetMatrix() );
+ GLCALL( glMatrixMode(GL_PROJECTION) );
+ GLCALL( glLoadMatrix( m_frustum.GetMatrix() ) );
- glMatrixMode(GL_MODELVIEW);
+ GLCALL( glMatrixMode(GL_MODELVIEW) );
ShaderAttribute sa;
sa.type = ShaderAttribute::TYPE_INT4;
- glGetIntegerv(GL_VIEWPORT, sa.value.iInts);
+ GLCALL( glGetIntegerv(GL_VIEWPORT, sa.value.iInts) );
Shader::SetAttribute("HG_ViewPort", sa);
sa.type = ShaderAttribute::TYPE_FLOATV4;
@@ -87,11 +87,11 @@
void Viewport::PostRender(const MercuryMatrix& matrix)
{
- glPushMatrix();
-// glLoadIdentity();
+ GLCALL( glPushMatrix() );
+// GLCALL( glLoadIdentity() );
glLoadMatrix( matrix );
CURRENTRENDERGRAPH->RenderAlpha();
- glPopMatrix();
+ GLCALL( glPopMatrix() );
MercuryNode::PostRender(matrix);
}
Modified: Mercury2/src/X11Window.cpp
===================================================================
--- Mercury2/src/X11Window.cpp 2009-08-19 01:48:06 UTC (rev 500)
+++ Mercury2/src/X11Window.cpp 2009-08-19 23:50:34 UTC (rev 501)
@@ -3,6 +3,8 @@
#include <MercuryInput.h>
#include <MercuryPrefs.h>
+#include <GLHeaders.h>
+
#define MOUSE_BTN_LEFT 1
#define MOUSE_BTN_RIGHT 3
#define MOUSE_BTN_CENTER 2
@@ -186,18 +188,19 @@
}
XMapWindow(m_display, win);
- glXMakeCurrent(m_display, win, ctx);
+ GLCALL( glXMakeCurrent(m_display, win, ctx) );
XFree(visinfo);
m_window = win;
m_renderCtx = ctx;
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_CULL_FACE);
- glEnable(GL_NORMALIZE);
+ GLCALL( glEnable(GL_DEPTH_TEST) );
+ GLCALL( glEnable(GL_CULL_FACE) );
+ GLCALL( glEnable(GL_NORMALIZE) );
- glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ GLCALL( glEnable (GL_BLEND); );
+ GLCALL( glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) );
}
X11Window::~X11Window()
@@ -363,7 +366,7 @@
void X11Window::Clear()
{
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ GLCALL( glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) );
}
void* X11Window::GetProcAddress(const MString& x)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|