You can subscribe to this list here.
| 2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(46) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2006 |
Jan
(185) |
Feb
(242) |
Mar
(237) |
Apr
(180) |
May
(102) |
Jun
(278) |
Jul
(114) |
Aug
(92) |
Sep
(246) |
Oct
(212) |
Nov
(279) |
Dec
(99) |
| 2007 |
Jan
(130) |
Feb
(194) |
Mar
(22) |
Apr
(72) |
May
(40) |
Jun
(111) |
Jul
(114) |
Aug
(154) |
Sep
(114) |
Oct
(2) |
Nov
(1) |
Dec
(5) |
| 2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(6) |
Oct
(51) |
Nov
(34) |
Dec
(130) |
| 2009 |
Jan
(22) |
Feb
(20) |
Mar
(41) |
Apr
(45) |
May
(82) |
Jun
(96) |
Jul
(48) |
Aug
(90) |
Sep
(13) |
Oct
(49) |
Nov
(31) |
Dec
(21) |
| 2010 |
Jan
(25) |
Feb
(9) |
Mar
(7) |
Apr
(28) |
May
(27) |
Jun
(7) |
Jul
(1) |
Aug
|
Sep
(1) |
Oct
(1) |
Nov
(13) |
Dec
(2) |
| 2013 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <axl...@us...> - 2009-08-23 12:13:15
|
Revision: 519
http://hgengine.svn.sourceforge.net/hgengine/?rev=519&view=rev
Author: axlecrusher
Date: 2009-08-23 12:12:13 +0000 (Sun, 23 Aug 2009)
Log Message:
-----------
disable texture bind cache
Modified Paths:
--------------
Mercury2/src/Texture.cpp
Modified: Mercury2/src/Texture.cpp
===================================================================
--- Mercury2/src/Texture.cpp 2009-08-23 06:04:16 UTC (rev 518)
+++ Mercury2/src/Texture.cpp 2009-08-23 12:12:13 UTC (rev 519)
@@ -118,7 +118,7 @@
m_textureResource = GL_TEXTURE0+m_numActiveTextures;
- if (m_lastBound[m_numActiveTextures] != this)
+// if (m_lastBound[m_numActiveTextures] != this)
{
// We don't really even have to disable old spots
// if ( m_lastBound[m_numActiveTextures] != NULL)
@@ -156,6 +156,8 @@
GLERRORCHECK;
*/
+ Deactivate();
+
Shader::RemoveAttribute( ssprintf("HG_Texture%d", m_numActiveTextures) );
m_activeTextures.pop_back();
@@ -188,7 +190,7 @@
GLCALL( glTexCoordPointer(2, GL_FLOAT, stride, BUFFER_OFFSET(sizeof(float)*0)) );
}
- Texture::DisableUnusedTextures();
+// Texture::DisableUnusedTextures();
}
void Texture::DisableUnusedTextures()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-08-23 06:04:23
|
Revision: 518
http://hgengine.svn.sourceforge.net/hgengine/?rev=518&view=rev
Author: cnlohr
Date: 2009-08-23 06:04:16 +0000 (Sun, 23 Aug 2009)
Log Message:
-----------
fix warnings
Modified Paths:
--------------
Mercury2/src/X11Window.cpp
Modified: Mercury2/src/X11Window.cpp
===================================================================
--- Mercury2/src/X11Window.cpp 2009-08-23 06:03:15 UTC (rev 517)
+++ Mercury2/src/X11Window.cpp 2009-08-23 06:04:16 UTC (rev 518)
@@ -280,11 +280,11 @@
{
XButtonEvent* e = (XButtonEvent*)&event;
uint8_t left, right, center, su, sd;
- left = (e->state & X11_MASK(MOUSE_BTN_LEFT))!=0 ^ (e->button == MOUSE_BTN_LEFT);
- right = (e->state & X11_MASK(MOUSE_BTN_RIGHT))!=0 ^ (e->button == MOUSE_BTN_RIGHT);
- center = (e->state & X11_MASK(MOUSE_BTN_CENTER))!=0 ^ (e->button == MOUSE_BTN_CENTER);
- su = (e->state & X11_MASK(MOUSE_BTN_SCROLL_UP))!=0 ^ (e->button == MOUSE_BTN_SCROLL_UP);
- sd = (e->state & X11_MASK(MOUSE_BTN_SCROLL_DOWN))!=0 ^ (e->button == MOUSE_BTN_SCROLL_DOWN);
+ left = ((e->state & X11_MASK(MOUSE_BTN_LEFT))!=0) ^ (e->button == MOUSE_BTN_LEFT);
+ right = ((e->state & X11_MASK(MOUSE_BTN_RIGHT))!=0) ^ (e->button == MOUSE_BTN_RIGHT);
+ center = ((e->state & X11_MASK(MOUSE_BTN_CENTER))!=0) ^ (e->button == MOUSE_BTN_CENTER);
+ su = ((e->state & X11_MASK(MOUSE_BTN_SCROLL_UP))!=0) ^ (e->button == MOUSE_BTN_SCROLL_UP);
+ sd = ((e->state & X11_MASK(MOUSE_BTN_SCROLL_DOWN))!=0) ^ (e->button == MOUSE_BTN_SCROLL_DOWN);
MouseInput::ProcessMouseInput(e->x, e->y,
left, right, center, su, sd);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-08-23 06:03:23
|
Revision: 517
http://hgengine.svn.sourceforge.net/hgengine/?rev=517&view=rev
Author: cnlohr
Date: 2009-08-23 06:03:15 +0000 (Sun, 23 Aug 2009)
Log Message:
-----------
fix X11 button receiving
Modified Paths:
--------------
Mercury2/src/X11Window.cpp
Modified: Mercury2/src/X11Window.cpp
===================================================================
--- Mercury2/src/X11Window.cpp 2009-08-23 05:24:34 UTC (rev 516)
+++ Mercury2/src/X11Window.cpp 2009-08-23 06:03:15 UTC (rev 517)
@@ -280,18 +280,14 @@
{
XButtonEvent* e = (XButtonEvent*)&event;
uint8_t left, right, center, su, sd;
- left = (e->state & X11_MASK(MOUSE_BTN_LEFT)) ^ (e->button == MOUSE_BTN_LEFT);
- right = (e->state & X11_MASK(MOUSE_BTN_RIGHT)) ^ (e->button == MOUSE_BTN_RIGHT);
- center = (e->state & X11_MASK(MOUSE_BTN_CENTER)) ^ (e->button == MOUSE_BTN_CENTER);
- su = (e->state & X11_MASK(MOUSE_BTN_SCROLL_UP)) ^ (e->button == MOUSE_BTN_SCROLL_UP);
- sd = (e->state & X11_MASK(MOUSE_BTN_SCROLL_DOWN)) ^ (e->button == MOUSE_BTN_SCROLL_DOWN);
-
- MouseInput::ProcessMouseInput(0, 0,
- e->state & X11_MASK(MOUSE_BTN_LEFT),
- e->state & X11_MASK(MOUSE_BTN_RIGHT),
- e->state & X11_MASK(MOUSE_BTN_CENTER),
- e->state & X11_MASK(MOUSE_BTN_SCROLL_UP),
- e->state & X11_MASK(MOUSE_BTN_SCROLL_DOWN));
+ left = (e->state & X11_MASK(MOUSE_BTN_LEFT))!=0 ^ (e->button == MOUSE_BTN_LEFT);
+ right = (e->state & X11_MASK(MOUSE_BTN_RIGHT))!=0 ^ (e->button == MOUSE_BTN_RIGHT);
+ center = (e->state & X11_MASK(MOUSE_BTN_CENTER))!=0 ^ (e->button == MOUSE_BTN_CENTER);
+ su = (e->state & X11_MASK(MOUSE_BTN_SCROLL_UP))!=0 ^ (e->button == MOUSE_BTN_SCROLL_UP);
+ sd = (e->state & X11_MASK(MOUSE_BTN_SCROLL_DOWN))!=0 ^ (e->button == MOUSE_BTN_SCROLL_DOWN);
+
+ MouseInput::ProcessMouseInput(e->x, e->y,
+ left, right, center, su, sd);
break;
}
case KeyPress:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-08-23 05:24:42
|
Revision: 516
http://hgengine.svn.sourceforge.net/hgengine/?rev=516&view=rev
Author: cnlohr
Date: 2009-08-23 05:24:34 +0000 (Sun, 23 Aug 2009)
Log Message:
-----------
fix up text
Modified Paths:
--------------
Mercury2/modules/TextNode.cpp
Mercury2/modules/TextNode.h
Modified: Mercury2/modules/TextNode.cpp
===================================================================
--- Mercury2/modules/TextNode.cpp 2009-08-23 02:11:55 UTC (rev 515)
+++ Mercury2/modules/TextNode.cpp 2009-08-23 05:24:34 UTC (rev 516)
@@ -6,6 +6,8 @@
#include <Texture.h>
#include <vector>
+#define BIG_NUMBER 1e20
+
REGISTER_NODE_TYPE(TextNode);
TextNode::TextNode()
@@ -13,7 +15,9 @@
m_bDirty(false),m_pThisFont(NULL),
m_alignment( LEFT ),
m_fTextWidth( INFINITY ),
- m_kVBO(0), m_kTEX(0)
+ m_kVBO(0), m_kTEX(0),
+ m_fRMinX(0),m_fRMinY(0),
+ m_fRMaxX(0),m_fRMaxY(0)
{
}
@@ -186,6 +190,8 @@
if( m_alignment == RIGHT )
{
float offset = m_fTextWidth - fEndOfLine;
+ if( m_fTextWidth > BIG_NUMBER )
+ offset = -fEndOfLine;
for( unsigned j = iLineStart; j < i; j++ )
{
chars[j].xps += offset;
@@ -194,14 +200,16 @@
{
float offset = m_fTextWidth - fEndOfLine;
offset/=2;
+ if( m_fTextWidth > BIG_NUMBER )
+ offset = -fEndOfLine/2.;
for( unsigned j = iLineStart; j < i; j++ )
- {
chars[j].xps += offset;
- }
} else if( m_alignment == FIT_FULL )
{
float offset = m_fTextWidth - fEndOfLine;
offset/=float(iLettersOnLine);
+ if( m_fTextWidth > BIG_NUMBER )
+ offset = 0;
float letter = 0;
@@ -214,6 +222,9 @@
{
float offset = m_fTextWidth - fEndOfLine;
+ if( m_fTextWidth > BIG_NUMBER )
+ offset = 0;
+
if( iWordsOnLine != 0 )
{
offset/=float(iWordsOnLine-1);
@@ -241,6 +252,11 @@
}
}
+ m_fRMinX = 0;
+ m_fRMinY = 0;
+ m_fRMaxX = 0;
+ m_fRMaxY = 0;
+
//Stage 3: Actually generate the geometry.
((MercuryVBO*)m_kVBO.Ptr())->AllocateIndexSpace((unsigned)chars.size()*6);
((MercuryVBO*)m_kVBO.Ptr())->AllocateVertexSpace((unsigned)chars.size()*4);
@@ -303,8 +319,16 @@
id[i*6+3] = i * 4 + 0;
id[i*6+4] = i * 4 + 3;
id[i*6+5] = i * 4 + 2;
+
+ if( sy > m_fRMaxY ) m_fRMaxY = sy;
+ if( ex > m_fRMaxX ) m_fRMaxX = ex;
+ if( ey < m_fRMinY ) m_fRMinY = ey;
+ if( sx < m_fRMinX ) m_fRMinX = sx;
}
+ ((MercuryVBO*)m_kVBO.Ptr())->DirtyVertices();
+ ((MercuryVBO*)m_kVBO.Ptr())->DirtyIndices();
+
m_bDirty = false;
}
Modified: Mercury2/modules/TextNode.h
===================================================================
--- Mercury2/modules/TextNode.h 2009-08-23 02:11:55 UTC (rev 515)
+++ Mercury2/modules/TextNode.h 2009-08-23 05:24:34 UTC (rev 516)
@@ -39,12 +39,18 @@
inline const MString & GetText() { return m_sText; }
inline void SetDirtyText() { m_bDirty = true; }
-
+
+ inline float GetRMinX() { return m_fRMinX; }
+ inline float GetRMinY() { return m_fRMinY; }
+ inline float GetRMaxX() { return m_fRMaxX; }
+ inline float GetRMaxY() { return m_fRMaxY; }
+
GENRTTI(TextNode);
private:
class Font;
+
float m_fSize;
MString m_sText;
MString m_sFont;
@@ -52,11 +58,16 @@
Font * m_pThisFont;
TextAlignment m_alignment;
float m_fTextWidth;
-
+
MAutoPtr< MercuryAsset > m_kVBO;
MAutoPtr< MercuryAsset > m_kTEX;
+ float m_fRMinX;
+ float m_fRMinY;
+ float m_fRMaxX;
+ float m_fRMaxY;
+
//Font-class specific stuff
class Glyph
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-08-23 02:12:02
|
Revision: 515
http://hgengine.svn.sourceforge.net/hgengine/?rev=515&view=rev
Author: axlecrusher
Date: 2009-08-23 02:11:55 +0000 (Sun, 23 Aug 2009)
Log Message:
-----------
i guess all GL api calls can be done together when binding texture
Modified Paths:
--------------
Mercury2/src/Texture.cpp
Modified: Mercury2/src/Texture.cpp
===================================================================
--- Mercury2/src/Texture.cpp 2009-08-23 01:41:14 UTC (rev 514)
+++ Mercury2/src/Texture.cpp 2009-08-23 02:11:55 UTC (rev 515)
@@ -127,10 +127,12 @@
Activate();
GLCALL( glBindTexture(GL_TEXTURE_2D, m_textureID) );
+
+ GLCALL( glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ) );
+
m_lastBound[m_numActiveTextures] = this;
++m_textureBinds;
}
- GLCALL( glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ) );
GLERRORCHECK;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-08-23 01:41:20
|
Revision: 514
http://hgengine.svn.sourceforge.net/hgengine/?rev=514&view=rev
Author: axlecrusher
Date: 2009-08-23 01:41:14 +0000 (Sun, 23 Aug 2009)
Log Message:
-----------
reduce the number of opengl API calls by not always disablsing and activating textures
Modified Paths:
--------------
Mercury2/src/MercuryVBO.cpp
Mercury2/src/RenderDifferedLights.cpp
Mercury2/src/Texture.cpp
Mercury2/src/Texture.h
Modified: Mercury2/src/MercuryVBO.cpp
===================================================================
--- Mercury2/src/MercuryVBO.cpp 2009-08-22 21:25:09 UTC (rev 513)
+++ Mercury2/src/MercuryVBO.cpp 2009-08-23 01:41:14 UTC (rev 514)
@@ -25,7 +25,6 @@
void MercuryVBO::Render(const MercuryNode* node)
{
- uint8_t numTextures = Texture::NumberActiveTextures();
uint16_t stride = sizeof(float)*8;
if ( !m_initiated ) InitVBO();
@@ -45,13 +44,7 @@
++m_vboBinds;
}
- //apply all the active Textures
- for (uint8_t i = 0; i < numTextures; ++i)
- {
- GLCALL( glActiveTexture( GL_TEXTURE0+i ) );
- GLCALL( glClientActiveTextureARB(GL_TEXTURE0+i) );
- GLCALL( glTexCoordPointer(2, GL_FLOAT, stride, BUFFER_OFFSET(sizeof(float)*0)) );
- }
+ Texture::ApplyActiveTextures(stride);
GLCALL( glEnableClientState( GL_NORMAL_ARRAY ) );
GLCALL( glNormalPointer(GL_FLOAT, stride, BUFFER_OFFSET(sizeof(float)*2)) );
Modified: Mercury2/src/RenderDifferedLights.cpp
===================================================================
--- Mercury2/src/RenderDifferedLights.cpp 2009-08-22 21:25:09 UTC (rev 513)
+++ Mercury2/src/RenderDifferedLights.cpp 2009-08-23 01:41:14 UTC (rev 514)
@@ -5,7 +5,6 @@
#include <GLHeaders.h>
REGISTER_ASSET_TYPE(RenderDifferedLights);
-#define BUFFER_OFFSET(i) ((char*)NULL + (i))
RenderDifferedLights::RenderDifferedLights()
{
@@ -20,13 +19,7 @@
uint8_t numTextures = Texture::NumberActiveTextures();
uint16_t stride = sizeof(float)*8;
- //apply all the active Textures
- for (uint8_t i = 0; i < numTextures; ++i)
- {
- GLCALL( glActiveTexture( GL_TEXTURE0+i ) );
- GLCALL( glClientActiveTextureARB(GL_TEXTURE0+i) );
- GLCALL( glTexCoordPointer(2, GL_FLOAT, stride, BUFFER_OFFSET(sizeof(float)*0)) );
- }
+ Texture::ApplyActiveTextures(stride);
GLCALL( glPushAttrib( GL_CURRENT_BIT | GL_ENABLE_BIT | GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_POLYGON_BIT) );
GLCALL( glCullFace(GL_FRONT) );
Modified: Mercury2/src/Texture.cpp
===================================================================
--- Mercury2/src/Texture.cpp 2009-08-22 21:25:09 UTC (rev 513)
+++ Mercury2/src/Texture.cpp 2009-08-23 01:41:14 UTC (rev 514)
@@ -10,6 +10,8 @@
REGISTER_ASSET_TYPE(Texture);
+#define BUFFER_OFFSET(i) ((char*)NULL + (i))
+
Texture::Texture()
:MercuryAsset(), m_raw(NULL),m_textureID(0)
{
@@ -34,6 +36,14 @@
void Texture::Clean()
{
if (m_textureID) { GLCALL( glDeleteTextures(1, &m_textureID) ); }
+ for (uint8_t i = 0; i < m_maxActiveTextures; ++i)
+ {
+ if (m_lastBound[i] == this)
+ {
+ Deactivate();
+ m_lastBound[i] = 0;
+ }
+ }
m_textureID = 0;
}
@@ -107,13 +117,15 @@
if (m_numActiveTextures >= m_maxActiveTextures) return;
m_textureResource = GL_TEXTURE0+m_numActiveTextures;
- GLCALL( glActiveTexture( m_textureResource ) );
- GLCALL( glClientActiveTextureARB(m_textureResource) );
- GLCALL( glEnableClientState(GL_TEXTURE_COORD_ARRAY) );
- GLCALL( glEnable( GL_TEXTURE_2D ) );
if (m_lastBound[m_numActiveTextures] != this)
{
+// We don't really even have to disable old spots
+// if ( m_lastBound[m_numActiveTextures] != NULL)
+// m_lastBound[m_numActiveTextures]->Deactivate();
+
+ Activate();
+
GLCALL( glBindTexture(GL_TEXTURE_2D, m_textureID) );
m_lastBound[m_numActiveTextures] = this;
++m_textureBinds;
@@ -134,11 +146,13 @@
void Texture::UnbindTexture()
{
+ /*
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) );
m_activeTextures.pop_back();
@@ -146,6 +160,47 @@
--m_numActiveTextures;
}
+void Texture::Activate()
+{
+ GLCALL( glActiveTexture( m_textureResource ) );
+ GLCALL( glClientActiveTextureARB(m_textureResource) );
+ GLCALL( glEnableClientState(GL_TEXTURE_COORD_ARRAY) );
+ GLCALL( glEnable( GL_TEXTURE_2D ) );
+}
+
+void Texture::Deactivate()
+{
+ GLCALL( glActiveTexture( m_textureResource ) );
+ GLCALL( glClientActiveTextureARB(m_textureResource) );
+ GLCALL( glDisableClientState(GL_TEXTURE_COORD_ARRAY) );
+ GLCALL( glDisable( GL_TEXTURE_2D ) );
+ GLERRORCHECK;
+}
+
+void Texture::ApplyActiveTextures(uint16_t stride)
+{
+ for (uint8_t i = 0; i < m_numActiveTextures; ++i)
+ {
+ GLCALL( glActiveTexture( GL_TEXTURE0+i ) );
+ GLCALL( glClientActiveTextureARB(GL_TEXTURE0+i) );
+ GLCALL( glTexCoordPointer(2, GL_FLOAT, stride, BUFFER_OFFSET(sizeof(float)*0)) );
+ }
+
+ Texture::DisableUnusedTextures();
+}
+
+void Texture::DisableUnusedTextures()
+{
+ for (uint8_t i = m_numActiveTextures; i < m_maxActiveTextures; ++i)
+ {
+ if (m_lastBound[m_numActiveTextures] != NULL)
+ {
+ m_lastBound[m_numActiveTextures]->Deactivate();
+ m_lastBound[m_numActiveTextures] = NULL;
+ }
+ }
+}
+
void Texture::InitiateBindCache()
{
GLint x;
Modified: Mercury2/src/Texture.h
===================================================================
--- Mercury2/src/Texture.h 2009-08-22 21:25:09 UTC (rev 513)
+++ Mercury2/src/Texture.h 2009-08-23 01:41:14 UTC (rev 514)
@@ -31,12 +31,18 @@
static const std::list< Texture* >& GetActiveTextures() { return m_activeTextures; }
void SetRawData(RawImageData* raw);
+
+ static void ApplyActiveTextures(uint16_t stride);
+ static void DisableUnusedTextures();
private:
void LoadImagePath(const MString& path);
void BindTexture();
void UnbindTexture();
+ void Activate();
+ void Deactivate();
+
void InitiateBindCache();
const RawImageData* m_raw;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-08-22 21:25:21
|
Revision: 513
http://hgengine.svn.sourceforge.net/hgengine/?rev=513&view=rev
Author: cnlohr
Date: 2009-08-22 21:25:09 +0000 (Sat, 22 Aug 2009)
Log Message:
-----------
allow for printing out of traversal information
Modified Paths:
--------------
Mercury2/src/MercuryNode.cpp
Modified: Mercury2/src/MercuryNode.cpp
===================================================================
--- Mercury2/src/MercuryNode.cpp 2009-08-22 20:21:08 UTC (rev 512)
+++ Mercury2/src/MercuryNode.cpp 2009-08-22 21:25:09 UTC (rev 513)
@@ -186,14 +186,28 @@
}
}
+//#define WRITE_OUT_RENDERGARPH
+
void MercuryNode::RecursiveRender( )
{
- if ( IsHidden() || IsCulled() || (! (m_iPasses & (1<<g_iPass))) ) return;
+#ifdef WRITE_OUT_RENDERGARPH
+ static int depth;
+ if ( IsHidden() || IsCulled() || (! (m_iPasses & (1<<g_iPass))) )
+ {
+ printf( "x%*c %p:%s (%d %d %d)\n", depth, 0, this, GetName().c_str(), IsHidden(), IsCulled(), (! (m_iPasses & (1<<g_iPass))) );
+ return;
+ }
+ printf( "1%*c %p:%s\n", depth, 0, this, GetName().c_str() );
+ depth++;
+#else
+ if ( IsHidden() || IsCulled() || (! (m_iPasses & (1<<g_iPass))) )
+ return;
+#endif
const MercuryMatrix& matrix = GetGlobalMatrix();
const MercuryMatrix& modelView = GetModelViewMatrix(); //get the one computed in the last transform
ShaderAttribute sa;
-
+
//A lot of this stuff could be moved into the transform node, BUT
//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
@@ -219,6 +233,10 @@
Shader::SetAttribute("HG_ModelMatrix", sa);
PostRender( modelView ); //calls on children assets
+
+#ifdef WRITE_OUT_RENDERGARPH
+ depth--;
+#endif
}
void MercuryNode::ThreadedUpdate(float dTime)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-08-22 20:21:27
|
Revision: 512
http://hgengine.svn.sourceforge.net/hgengine/?rev=512&view=rev
Author: cnlohr
Date: 2009-08-22 20:21:08 +0000 (Sat, 22 Aug 2009)
Log Message:
-----------
add command line parameters to Mercury
Modified Paths:
--------------
Mercury2/src/Mercury2.cpp
Modified: Mercury2/src/Mercury2.cpp
===================================================================
--- Mercury2/src/Mercury2.cpp 2009-08-22 19:46:34 UTC (rev 511)
+++ Mercury2/src/Mercury2.cpp 2009-08-22 20:21:08 UTC (rev 512)
@@ -46,12 +46,59 @@
return 0; //Continue regular crash.
}
-int main()
+MString g_SceneGraphToLoad;
+void HandleCommandLineParameters( int argc, char ** argv )
{
+ bool bPrintHelp = false;
+ for( int i = 1; i < argc; i++ )
+ {
+ MString sParameter = argv[i];
+ if( sParameter == "--help" || sParameter == "-h" )
+ bPrintHelp = true;
+ else if( sParameter.find( "--scenegraph=" ) == 0 )
+ g_SceneGraphToLoad = sParameter.substr( 13 );
+ else if( sParameter == "-s" )
+ {
+ i++;
+ if( i >= argc )
+ {
+ fprintf( stderr, "No scene graph following -s. Type -h for help.\n" );
+ exit(-1);
+ }
+ g_SceneGraphToLoad = argv[i];
+ }
+ else
+ {
+ fprintf( stderr, "Unknown command-line parameter: \"%s\" Type -h for help.\n", argv[i] );
+ exit(-1);
+ }
+ }
+
+ if( bPrintHelp )
+ {
+ printf( "\nMercury Game Engine 2.0 Copyright 2009 Joshua Allen and\n" );
+ printf( " Charles Lohr under the NewBSD license. Code contributed\n" );
+ printf( " from other sources under the same license, contributers\n" );
+ printf( " and other sources may be found in accompanying documents.\n" );
+ printf( "\n Usage: [mercury] [command-line parameters]\n\n" );
+ printf( " [--scenegraph=x] | [-s x] Select scene graph to use.\n" );
+ printf( " By default Mercury uses FILE:scenegraph.xml. You may\n" );
+ printf( " specify another one here. This only changes the startup\n" );
+ printf( " scene graph for debugging purposes.\n\n" );
+ exit(0);
+ }
+}
+
+int main( int argc, char** argv)
+{
unsigned long m_count = 0;
+ g_SceneGraphToLoad = "FILE:scenegraph.xml";
+
cnset_execute_on_crash( SignalHandler );
+ HandleCommandLineParameters( argc, argv );
+
MercuryWindow* w = MercuryWindow::MakeWindow();
#ifdef WIN32
@@ -62,7 +109,7 @@
MercuryNode* root = new MercuryNode();
- XMLDocument* doc = XMLDocument::Load("FILE:scenegraph.xml");
+ XMLDocument* doc = XMLDocument::Load(g_SceneGraphToLoad);
XMLNode r = doc->GetRootNode();
root->LoadFromXML( r );
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-08-22 19:46:42
|
Revision: 511
http://hgengine.svn.sourceforge.net/hgengine/?rev=511&view=rev
Author: axlecrusher
Date: 2009-08-22 19:46:34 +0000 (Sat, 22 Aug 2009)
Log Message:
-----------
remember the last thing that was cached
Modified Paths:
--------------
Mercury2/src/Texture.cpp
Mercury2/src/Texture.h
Modified: Mercury2/src/Texture.cpp
===================================================================
--- Mercury2/src/Texture.cpp 2009-08-22 17:51:38 UTC (rev 510)
+++ Mercury2/src/Texture.cpp 2009-08-22 19:46:34 UTC (rev 511)
@@ -102,12 +102,22 @@
void Texture::BindTexture()
{
+ if ( !m_lastBound ) InitiateBindCache();
+
+ if (m_numActiveTextures >= m_maxActiveTextures) return;
+
m_textureResource = GL_TEXTURE0+m_numActiveTextures;
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) );
+
+ if (m_lastBound[m_numActiveTextures] != this)
+ {
+ GLCALL( glBindTexture(GL_TEXTURE_2D, m_textureID) );
+ m_lastBound[m_numActiveTextures] = this;
+ ++m_textureBinds;
+ }
GLCALL( glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ) );
GLERRORCHECK;
@@ -120,7 +130,6 @@
m_activeTextures.push_back(this);
++m_numActiveTextures;
- ++m_textureBinds;
}
void Texture::UnbindTexture()
@@ -137,6 +146,17 @@
--m_numActiveTextures;
}
+void Texture::InitiateBindCache()
+{
+ GLint x;
+ GLCALL( glGetIntegerv( GL_MAX_TEXTURE_UNITS, &x ) );
+ m_lastBound = new Texture*[x];
+ m_maxActiveTextures = x;
+
+ for ( x = 0; x < m_maxActiveTextures; ++x)
+ m_lastBound[x] = NULL;
+}
+
void Texture::LoadImagePath(const MString& path)
{
if (m_isInstanced) return;
@@ -207,6 +227,8 @@
uint8_t Texture::m_numActiveTextures = 0;
uint32_t Texture::m_textureBinds = 0;
std::list< Texture* > Texture::m_activeTextures;
+Texture** Texture::m_lastBound = NULL;
+uint8_t Texture::m_maxActiveTextures = 0;
/***************************************************************************
* Copyright (C) 2008 by Joshua Allen *
Modified: Mercury2/src/Texture.h
===================================================================
--- Mercury2/src/Texture.h 2009-08-22 17:51:38 UTC (rev 510)
+++ Mercury2/src/Texture.h 2009-08-22 19:46:34 UTC (rev 511)
@@ -37,6 +37,8 @@
void BindTexture();
void UnbindTexture();
+ void InitiateBindCache();
+
const RawImageData* m_raw;
uint32_t m_textureID;
uint32_t m_textureResource;
@@ -46,7 +48,8 @@
static uint32_t m_textureBinds;
static std::list< Texture* > m_activeTextures;
-
+ static uint8_t m_maxActiveTextures;
+ static Texture** m_lastBound;
// MString m_filename;
};
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-08-22 17:51:46
|
Revision: 510
http://hgengine.svn.sourceforge.net/hgengine/?rev=510&view=rev
Author: cnlohr
Date: 2009-08-22 17:51:38 +0000 (Sat, 22 Aug 2009)
Log Message:
-----------
allow multipass rendering
Modified Paths:
--------------
Mercury2/src/Mercury2.cpp
Mercury2/src/MercuryAsset.cpp
Mercury2/src/MercuryAsset.h
Mercury2/src/MercuryNode.cpp
Mercury2/src/MercuryNode.h
Mercury2/src/RenderGraph.cpp
Modified: Mercury2/src/Mercury2.cpp
===================================================================
--- Mercury2/src/Mercury2.cpp 2009-08-22 16:10:33 UTC (rev 509)
+++ Mercury2/src/Mercury2.cpp 2009-08-22 17:51:38 UTC (rev 510)
@@ -92,8 +92,17 @@
// renderGraph.Render();
// RenderableNode::RecursiveRender(root);
// printf("\n");
+
+
+ for( g_iPass = 2; g_iPass < 5; g_iPass++ ) //2,3,4
+ if( root->GetPasses() & (1<<g_iPass) )
+ root->RecursiveRender( );
+
root->RecursivePreRender();
- root->RecursiveRender();
+
+ for( g_iPass = 5; g_iPass < 15; g_iPass++ ) //5..15
+ if( root->GetPasses() & (1<<g_iPass) )
+ root->RecursiveRender( );
// renderGraph.RenderAlpha();
w->SwapBuffers();
Modified: Mercury2/src/MercuryAsset.cpp
===================================================================
--- Mercury2/src/MercuryAsset.cpp 2009-08-22 16:10:33 UTC (rev 509)
+++ Mercury2/src/MercuryAsset.cpp 2009-08-22 17:51:38 UTC (rev 510)
@@ -6,7 +6,7 @@
extern bool DOOCCLUSIONCULL;
MercuryAsset::MercuryAsset()
- :m_isInstanced(false), m_boundingVolume(NULL), m_loadState(NONE), m_ignoreCull(false)
+ :m_isInstanced(false), m_boundingVolume(NULL), m_loadState(NONE), m_ignoreCull(false), m_iPasses( DEFAULT_PASSES )
{
}
@@ -65,8 +65,16 @@
if ( !node.Attribute("ignorecull").empty() )
{
- SetIgnoreCull( node.Attribute("ignorecull")=="true" );
+ SetIgnoreCull( StrToBool( node.Attribute("ignorecull") ) );
}
+ if ( !node.Attribute("setPasses").empty() )
+ {
+ MVector< MString > out;
+ SplitStrings( node.Attribute("setPasses"), out, ",+", " \t", 2, 2 );
+ m_iPasses = 0;
+ for( unsigned i = 0; i < out.size(); i++ )
+ m_iPasses = m_iPasses | (1<<StrToInt( out[i] ) );
+ }
}
void MercuryAsset::DrawAxes()
@@ -86,7 +94,7 @@
}
MercuryAssetInstance::MercuryAssetInstance(MercuryAsset* asset)
- :m_asset( asset ), m_isCulled( false )
+ :m_asset( asset ), m_isCulled( false ), m_iPasses( asset->GetPasses() )
{
}
Modified: Mercury2/src/MercuryAsset.h
===================================================================
--- Mercury2/src/MercuryAsset.h 2009-08-22 16:10:33 UTC (rev 509)
+++ Mercury2/src/MercuryAsset.h 2009-08-22 17:51:38 UTC (rev 510)
@@ -58,6 +58,9 @@
inline void SetIgnoreCull(bool t) { m_ignoreCull = t; }
inline bool IgnoreCull() const { return m_ignoreCull; }
+
+ inline unsigned short GetPasses() { return m_iPasses; }
+ inline void SetPasses( unsigned short p ) { m_iPasses = p; }
protected:
void SetLoadState(LoadState ls); //thread safe
LoadState GetLoadState(); //thread safe
@@ -69,6 +72,7 @@
LoadState m_loadState;
MSemaphore m_lock;
bool m_ignoreCull;
+ unsigned short m_iPasses;
};
/** This holds the per-instance data for each asset instance.
@@ -85,10 +89,16 @@
inline bool Culled(bool t) { m_isCulled = t; return m_isCulled; }
inline OcclusionResult& GetOcclusionResult() { return m_occlusionResult; }
+
+ inline unsigned short GetPasses() { return m_iPasses; }
+ inline void SetPasses( unsigned short p ) { m_iPasses = p; }
private:
MAutoPtr< MercuryAsset > m_asset; //actual asset storage
OcclusionResult m_occlusionResult;
bool m_isCulled;
+
+ //We need to keep our own copy, since it may be changed in software from what the original one has.
+ unsigned short m_iPasses;
};
class LoaderThreadData
Modified: Mercury2/src/MercuryNode.cpp
===================================================================
--- Mercury2/src/MercuryNode.cpp 2009-08-22 16:10:33 UTC (rev 509)
+++ Mercury2/src/MercuryNode.cpp 2009-08-22 17:51:38 UTC (rev 510)
@@ -186,10 +186,10 @@
}
}
-void MercuryNode::RecursiveRender()
+void MercuryNode::RecursiveRender( )
{
- if ( IsHidden() || IsCulled() ) return;
-
+ if ( IsHidden() || IsCulled() || (! (m_iPasses & (1<<g_iPass))) ) return;
+
const MercuryMatrix& matrix = GetGlobalMatrix();
const MercuryMatrix& modelView = GetModelViewMatrix(); //get the one computed in the last transform
ShaderAttribute sa;
@@ -262,6 +262,16 @@
}
}
}
+
+ if ( !node.Attribute("setPasses").empty() )
+ {
+ MVector< MString > out;
+ SplitStrings( node.Attribute("setPasses"), out, ",+", " \t", 2, 2 );
+ m_iForcePasses = (1<<15);
+ for( unsigned i = 0; i < out.size(); i++ )
+ m_iForcePasses = m_iForcePasses | (1<<StrToInt( out[i] ) );
+ }
+
}
@@ -365,7 +375,9 @@
bool MercuryNode::m_rebuildRenderGraph = false;
__thread int g_iViewportID;
+__thread int g_iPass;
+
/***************************************************************************
* Copyright (C) 2008 by Joshua Allen *
* *
Modified: Mercury2/src/MercuryNode.h
===================================================================
--- Mercury2/src/MercuryNode.h 2009-08-22 16:10:33 UTC (rev 509)
+++ Mercury2/src/MercuryNode.h 2009-08-22 17:51:38 UTC (rev 510)
@@ -30,9 +30,17 @@
return false;}
*/
+
+#define STANDARD_PASS 7
+///Which passes, by default, should be run on all nodes.
+#define DEFAULT_PASSES ( (1<<STANDARD_PASS) )
+
///The Global Viewport ID for this thread (to enable multi-threaded functioning for Viewports)
extern __thread int g_iViewportID;
+///The Global Pass Number (which Pass is currently doing Render)
+extern __thread int g_iPass;
+
class MercuryNode : public MessageHandler
{
public:
@@ -106,6 +114,8 @@
const MercuryMatrix & GetGlobalMatrix() const { return m_pGlobalMatrix[g_iViewportID]; }
const MercuryMatrix & GetModelViewMatrix() const { return m_pModelViewMatrix[g_iViewportID]; }
+
+ inline unsigned short GetPasses() const { return m_iPasses; }
protected:
std::list< MercuryNode* > m_children; //These nodes are unique, not instanced
MercuryNode* m_parent;
@@ -120,6 +130,9 @@
bool m_culled;
bool IsInAssetList(MercuryAsset* asset) const;
+ unsigned short m_iPasses;
+ unsigned short m_iForcePasses; //If (1<<15) is set, then, we know the force is enabled.
+
//The asset is actually stored here
std::list< MercuryAssetInstance > m_assets;
Modified: Mercury2/src/RenderGraph.cpp
===================================================================
--- Mercury2/src/RenderGraph.cpp 2009-08-22 16:10:33 UTC (rev 509)
+++ Mercury2/src/RenderGraph.cpp 2009-08-22 17:51:38 UTC (rev 510)
@@ -56,18 +56,32 @@
//Update the Matrices
node->m_pGlobalMatrix = &node->FindGlobalMatrix();
- node->m_pModelViewMatrix = &node->FindModelViewMatrix();
-
+ node->m_pModelViewMatrix = &node->FindModelViewMatrix();
+
if ( node )
{
//found a new renderable
entry.m_children.push_back( RenderGraphEntry(&(node->FindGlobalMatrix()), node) );
lastEntry = &(entry.m_children.back());
}
+
+ unsigned short iPasses = 0;
for (MercuryNode* child = node->FirstChild(); child != NULL; child = node->NextChild(child))
+ {
Build(child, *lastEntry);
-
+ iPasses |= child->m_iPasses;
+ }
+
+ std::list< MercuryAssetInstance >::iterator i;
+ for (i = node->m_assets.begin(); i != node->m_assets.end(); ++i )
+ iPasses |= i->GetPasses();
+
+ if( node->m_iForcePasses & (1<<15 ) )
+ node->m_iPasses = node->m_iForcePasses;
+ else
+ node->m_iPasses = iPasses;
+
//coming back up the tree
// entry = lastEntry;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-08-22 16:10:39
|
Revision: 509
http://hgengine.svn.sourceforge.net/hgengine/?rev=509&view=rev
Author: cnlohr
Date: 2009-08-22 16:10:33 +0000 (Sat, 22 Aug 2009)
Log Message:
-----------
make use of the new StrToBool function
Modified Paths:
--------------
Mercury2/src/MercuryNode.cpp
Modified: Mercury2/src/MercuryNode.cpp
===================================================================
--- Mercury2/src/MercuryNode.cpp 2009-08-22 16:04:58 UTC (rev 508)
+++ Mercury2/src/MercuryNode.cpp 2009-08-22 16:10:33 UTC (rev 509)
@@ -192,19 +192,18 @@
const MercuryMatrix& matrix = GetGlobalMatrix();
const MercuryMatrix& modelView = GetModelViewMatrix(); //get the one computed in the last transform
-
+ ShaderAttribute sa;
//A lot of this stuff could be moved into the transform node, BUT
//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
+
GLCALL( glLoadMatrix( modelView ) );
-
- ShaderAttribute sa;
sa.type = ShaderAttribute::TYPE_MATRIX;
sa.value.matrix = matrix.Ptr();
Shader::SetAttribute("HG_ModelMatrix", sa);
-
+
Render( modelView ); //calls on children assets
//call render on other render graph entries under me
@@ -218,6 +217,7 @@
GLCALL( glLoadMatrix( modelView ) );
Shader::SetAttribute("HG_ModelMatrix", sa);
+
PostRender( modelView ); //calls on children assets
}
@@ -236,10 +236,10 @@
SetName( node.Attribute("name") );
if ( !node.Attribute("hidden").empty() )
- m_hidden = node.Attribute("hidden")=="true"?true:false;
+ m_hidden = StrToBool( node.Attribute("hidden") );
if ( !node.Attribute("alphaPath").empty() )
- m_useAlphaPath = node.Attribute("alphaPath")=="true"?true:false;
+ m_useAlphaPath = StrToBool( node.Attribute("alphaPath") );
//Not much to do here except run through all the children nodes
for (XMLNode child = node.Child(); child.IsValid(); child = child.NextNode())
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-08-22 16:05:07
|
Revision: 508
http://hgengine.svn.sourceforge.net/hgengine/?rev=508&view=rev
Author: cnlohr
Date: 2009-08-22 16:04:58 +0000 (Sat, 22 Aug 2009)
Log Message:
-----------
move StrToBool to its own function
Modified Paths:
--------------
Mercury2/src/MercuryNamedResource.cpp
Mercury2/src/MercuryUtil.cpp
Mercury2/src/MercuryUtil.h
Modified: Mercury2/src/MercuryNamedResource.cpp
===================================================================
--- Mercury2/src/MercuryNamedResource.cpp 2009-08-22 06:16:33 UTC (rev 507)
+++ Mercury2/src/MercuryNamedResource.cpp 2009-08-22 16:04:58 UTC (rev 508)
@@ -47,18 +47,8 @@
{
MString tmpret;
if( GetValue( sDataPointer, tmpret ) )
- {
- tmpret = ToUpper( tmpret );
- if( tmpret.compare( "TRUE" ) == 0 ) return 1;
- if( tmpret.compare( "FALSE" ) == 0 ) return 0;
- if( tmpret.compare( "ON" ) == 0 ) return 1;
- if( tmpret.compare( "OFF" ) == 0 ) return 0;
- if( tmpret.compare( "YES" ) == 0 ) return 1;
- if( tmpret.compare( "NO" ) == 0 ) return 0;
+ return StrToBool( tmpret );
- return StrToInt( tmpret ) != 0;
- }
-
if( bSetValue )
SetValueB( sDataPointer, bDefaultValue );
Modified: Mercury2/src/MercuryUtil.cpp
===================================================================
--- Mercury2/src/MercuryUtil.cpp 2009-08-22 06:16:33 UTC (rev 507)
+++ Mercury2/src/MercuryUtil.cpp 2009-08-22 16:04:58 UTC (rev 508)
@@ -151,7 +151,22 @@
return x;
}
+bool StrToBool( const MString & s, bool d )
+{
+ MString tmpret = s;
+ tmpret = ToUpper( tmpret );
+ if( tmpret.compare( "TRUE" ) == 0 ) return 1;
+ if( tmpret.compare( "FALSE" ) == 0 ) return 0;
+ if( tmpret.compare( "ON" ) == 0 ) return 1;
+ if( tmpret.compare( "OFF" ) == 0 ) return 0;
+ if( tmpret.compare( "YES" ) == 0 ) return 1;
+ if( tmpret.compare( "NO" ) == 0 ) return 0;
+
+ return StrToInt( tmpret, d ) != 0;
+}
+
+
void fail_m( const char * message, const char * file, int line )
{
char backtracebuffer[2048];
Modified: Mercury2/src/MercuryUtil.h
===================================================================
--- Mercury2/src/MercuryUtil.h 2009-08-22 06:16:33 UTC (rev 507)
+++ Mercury2/src/MercuryUtil.h 2009-08-22 16:04:58 UTC (rev 508)
@@ -36,6 +36,7 @@
float StrToFloat(const MString & s, float d = 0);
int32_t StrToInt(const MString & s, int32_t d = 0);
+bool StrToBool( const MString & s, bool d = false );
template<typename T>
const T& MAX(const T& t1, const T& t2)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-08-22 06:16:39
|
Revision: 507
http://hgengine.svn.sourceforge.net/hgengine/?rev=507&view=rev
Author: cnlohr
Date: 2009-08-22 06:16:33 +0000 (Sat, 22 Aug 2009)
Log Message:
-----------
switch to MHash for listing of all GL Calls, so I can still (sort of) profile when logging all calls
Modified Paths:
--------------
Mercury2/src/GLHeaders.h
Mercury2/src/GLHelpers.cpp
Modified: Mercury2/src/GLHeaders.h
===================================================================
--- Mercury2/src/GLHeaders.h 2009-08-22 06:15:15 UTC (rev 506)
+++ Mercury2/src/GLHeaders.h 2009-08-22 06:16:33 UTC (rev 507)
@@ -35,9 +35,8 @@
LOG.Write(ssprintf("GL FBO Error:%s", GlError2String(e).c_str())); \
assert(0); } }
-#include <map>
-
+#include <MercuryHash.h>
extern uint32_t GLCALLCOUNT;
-extern std::map<MString, uint32_t> GLFUNCTCOUNT;
+extern MHash< uint32_t> GLFUNCTCOUNT;
#endif
Modified: Mercury2/src/GLHelpers.cpp
===================================================================
--- Mercury2/src/GLHelpers.cpp 2009-08-22 06:15:15 UTC (rev 506)
+++ Mercury2/src/GLHelpers.cpp 2009-08-22 06:16:33 UTC (rev 507)
@@ -1,8 +1,9 @@
#include <GLHeaders.h>
#include <GLHelpers.h>
+#include <MercuryHash.h>
uint32_t GLCALLCOUNT = 0;
-std::map<MString, uint32_t> GLFUNCTCOUNT;
+MHash< uint32_t> GLFUNCTCOUNT;
MString GlError2String(uint32_t e)
{
@@ -117,13 +118,12 @@
void PrintGLFunctionCalls()
{
- std::map<MString,uint32_t>::iterator i;
+ MVector < MString > v;
+ GLFUNCTCOUNT.VectorIndices( v );
+ //We now know all the names of the functions that were called.
+ for( unsigned i = 0; i < v.size(); i++ )
+ LOG.Write(ssprintf( "%d ", GLFUNCTCOUNT[v[i]] ) + v[i] );
- for(i = GLFUNCTCOUNT.begin(); i != GLFUNCTCOUNT.end(); ++i)
- {
- LOG.Write(ssprintf( "%d ", i->second ) + i->first);
- }
-
GLFUNCTCOUNT.clear();
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-08-22 06:15:27
|
Revision: 506
http://hgengine.svn.sourceforge.net/hgengine/?rev=506&view=rev
Author: cnlohr
Date: 2009-08-22 06:15:15 +0000 (Sat, 22 Aug 2009)
Log Message:
-----------
fix spelling (plural of Vertex is Vertices)
Modified Paths:
--------------
Mercury2/src/MercuryHash.h
Mercury2/src/Shader.cpp
Modified: Mercury2/src/MercuryHash.h
===================================================================
--- Mercury2/src/MercuryHash.h 2009-08-21 01:40:06 UTC (rev 505)
+++ Mercury2/src/MercuryHash.h 2009-08-22 06:15:15 UTC (rev 506)
@@ -190,7 +190,7 @@
return false;
}
- void VectorIndicies( MVector < MString > & vOut )
+ void VectorIndices( MVector < MString > & vOut )
{
unsigned int i;
MHashNode<T> * m_pTmp;
Modified: Mercury2/src/Shader.cpp
===================================================================
--- Mercury2/src/Shader.cpp 2009-08-21 01:40:06 UTC (rev 505)
+++ Mercury2/src/Shader.cpp 2009-08-22 06:15:15 UTC (rev 506)
@@ -311,7 +311,7 @@
if( glGetError() == 0 )
break;
}
- LOG.Write(ssprintf( "Geometry Shader loaded with a total of %d max verticies. Because there are %d max vertices, and %d preceived components per vert.", imaxvert/i, imaxvert, i ));
+ LOG.Write(ssprintf( "Geometry Shader loaded with a total of %d max vertices. Because there are %d max vertices, and %d preceived components per vert.", imaxvert/i, imaxvert, i ));
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-08-21 01:40:12
|
Revision: 505
http://hgengine.svn.sourceforge.net/hgengine/?rev=505&view=rev
Author: axlecrusher
Date: 2009-08-21 01:40:06 +0000 (Fri, 21 Aug 2009)
Log Message:
-----------
move profiling calls into function for easier modifications
Modified Paths:
--------------
Mercury2/src/GLHeaders.h
Mercury2/src/GLHelpers.cpp
Mercury2/src/GLHelpers.h
Modified: Mercury2/src/GLHeaders.h
===================================================================
--- Mercury2/src/GLHeaders.h 2009-08-21 01:17:31 UTC (rev 504)
+++ Mercury2/src/GLHeaders.h 2009-08-21 01:40:06 UTC (rev 505)
@@ -23,8 +23,6 @@
#include <MercuryLog.h>
-#define GLCALL(x) x; ++GLCALLCOUNT; GLFUNCTCOUNT[#x]++;
-
#define GLERRORCHECK { \
uint32_t e = GLCALL( glGetError() ); \
if ( e != GL_NO_ERROR ) { \
Modified: Mercury2/src/GLHelpers.cpp
===================================================================
--- Mercury2/src/GLHelpers.cpp 2009-08-21 01:17:31 UTC (rev 504)
+++ Mercury2/src/GLHelpers.cpp 2009-08-21 01:40:06 UTC (rev 505)
@@ -109,6 +109,12 @@
}
+void ProfileGLCall(const MString& funcName)
+{
+ ++GLCALLCOUNT;
+ GLFUNCTCOUNT[funcName]++;
+}
+
void PrintGLFunctionCalls()
{
std::map<MString,uint32_t>::iterator i;
Modified: Mercury2/src/GLHelpers.h
===================================================================
--- Mercury2/src/GLHelpers.h 2009-08-21 01:17:31 UTC (rev 504)
+++ Mercury2/src/GLHelpers.h 2009-08-21 01:40:06 UTC (rev 505)
@@ -1,3 +1,6 @@
+#ifndef GLHELPERS_H
+#define GLHELPERS_H
+
#include <global.h>
#include <MercuryUtil.h>
#include <MercuryMatrix.h>
@@ -5,14 +8,19 @@
#include <RawImageData.h>
+#define GLCALL(x) x; ProfileGLCall(#x);
+
MString GlError2String(uint32_t e);
void glLoadMatrix(const MercuryMatrix& m);
MercuryMatrix glGetMatrix(unsigned int m);
MercuryVertex pointFromScreenLoc(int screen_x, int screen_y);
unsigned int ToGLColorType(ColorByteType cbt);
+void ProfileGLCall(const MString& funcName);
void PrintGLFunctionCalls();
+#endif
+
/****************************************************************************
* Copyright (C) 2009 by Joshua Allen *
* *
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-08-21 01:17:39
|
Revision: 504
http://hgengine.svn.sourceforge.net/hgengine/?rev=504&view=rev
Author: axlecrusher
Date: 2009-08-21 01:17:31 +0000 (Fri, 21 Aug 2009)
Log Message:
-----------
Improve culling, excludeCull is supposed to mean ignore cull so change the name.
Ignoring the cull means that the asset will not influence the cull either way. Textures are an example of this,
since they only apply to things rendered later their cull can be ignored, and just rely on the parent node's cull.
Quads were not supposed to be ignored, they have no bounding volume so they default to fail culling.
Modified Paths:
--------------
Mercury2/src/MercuryAsset.cpp
Mercury2/src/MercuryAsset.h
Mercury2/src/MercuryNode.cpp
Mercury2/src/Quad.cpp
Mercury2/src/Texture.cpp
Modified: Mercury2/src/MercuryAsset.cpp
===================================================================
--- Mercury2/src/MercuryAsset.cpp 2009-08-21 00:58:05 UTC (rev 503)
+++ Mercury2/src/MercuryAsset.cpp 2009-08-21 01:17:31 UTC (rev 504)
@@ -6,7 +6,7 @@
extern bool DOOCCLUSIONCULL;
MercuryAsset::MercuryAsset()
- :m_isInstanced(false), m_boundingVolume(NULL), m_loadState(NONE), m_excludeFromCull(false)
+ :m_isInstanced(false), m_boundingVolume(NULL), m_loadState(NONE), m_ignoreCull(false)
{
}
@@ -63,9 +63,9 @@
void MercuryAsset::LoadFromXML(const XMLNode& node)
{
- if ( !node.Attribute("nocull").empty() )
+ if ( !node.Attribute("ignorecull").empty() )
{
- SetExcludeFromCull( node.Attribute("nocull")=="true" );
+ SetIgnoreCull( node.Attribute("ignorecull")=="true" );
}
}
Modified: Mercury2/src/MercuryAsset.h
===================================================================
--- Mercury2/src/MercuryAsset.h 2009-08-21 00:58:05 UTC (rev 503)
+++ Mercury2/src/MercuryAsset.h 2009-08-21 01:17:31 UTC (rev 504)
@@ -56,8 +56,8 @@
virtual bool DoCullingTests(OcclusionResult& occlusion, const MercuryMatrix& matrix);
void DrawAxes();
- inline void SetExcludeFromCull(bool t) { m_excludeFromCull = t; }
- inline bool ExcludeFromCull() const { return m_excludeFromCull; }
+ inline void SetIgnoreCull(bool t) { m_ignoreCull = t; }
+ inline bool IgnoreCull() const { return m_ignoreCull; }
protected:
void SetLoadState(LoadState ls); //thread safe
LoadState GetLoadState(); //thread safe
@@ -68,7 +68,7 @@
private:
LoadState m_loadState;
MSemaphore m_lock;
- bool m_excludeFromCull;
+ bool m_ignoreCull;
};
/** This holds the per-instance data for each asset instance.
Modified: Mercury2/src/MercuryNode.cpp
===================================================================
--- Mercury2/src/MercuryNode.cpp 2009-08-21 00:58:05 UTC (rev 503)
+++ Mercury2/src/MercuryNode.cpp 2009-08-21 01:17:31 UTC (rev 504)
@@ -276,14 +276,13 @@
MercuryAssetInstance& mai = *i;
MercuryAsset& a = mai.Asset();
- if ( !a.ExcludeFromCull() )
+ ///NOTE: Things that ignore culling do not affect culling one way or the other
+ if ( !a.IgnoreCull() )
{
mai.Culled( a.DoCullingTests( mai.GetOcclusionResult(), matrix ) );
culled = culled && mai.Culled();
}
- if ( a.ExcludeFromCull() ) culled = false; //node must be rendered if something was excluded
-
if ( !mai.Culled() ) a.PreRender(this);
}
SetCulled( culled );
Modified: Mercury2/src/Quad.cpp
===================================================================
--- Mercury2/src/Quad.cpp 2009-08-21 00:58:05 UTC (rev 503)
+++ Mercury2/src/Quad.cpp 2009-08-21 01:17:31 UTC (rev 504)
@@ -36,8 +36,6 @@
m_indexData[1] = 1;
m_indexData[3] = m_indexData[2] = 2;
m_indexData[4] = 3;
-
- SetExcludeFromCull( true );
}
Quad::~Quad()
Modified: Mercury2/src/Texture.cpp
===================================================================
--- Mercury2/src/Texture.cpp 2009-08-21 00:58:05 UTC (rev 503)
+++ Mercury2/src/Texture.cpp 2009-08-21 01:17:31 UTC (rev 504)
@@ -19,7 +19,7 @@
m_numActiveTextures = 0;
}
- SetExcludeFromCull( true );
+ SetIgnoreCull( true );
}
Texture::~Texture()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-08-21 00:58:16
|
Revision: 503
http://hgengine.svn.sourceforge.net/hgengine/?rev=503&view=rev
Author: axlecrusher
Date: 2009-08-21 00:58:05 +0000 (Fri, 21 Aug 2009)
Log Message:
-----------
remove unused
Modified Paths:
--------------
Mercury2/src/MercuryNode.cpp
Mercury2/src/MercuryNode.h
Mercury2/src/RenderGraph.cpp
Modified: Mercury2/src/MercuryNode.cpp
===================================================================
--- Mercury2/src/MercuryNode.cpp 2009-08-21 00:57:42 UTC (rev 502)
+++ Mercury2/src/MercuryNode.cpp 2009-08-21 00:58:05 UTC (rev 503)
@@ -331,20 +331,6 @@
return MercuryMatrix::Identity();
}
-bool MercuryNode::IsCulled(const MercuryMatrix& matrix)
-{
- bool clip = false;
-/*
- std::list< MAutoPtr< MercuryAsset > >::iterator i;
- for (i = m_assets.begin(); i != m_assets.end(); ++i )
- {
- clip = (*i)->IsCulled( matrix );
- if ( clip == false ) return false;
- }
- */
- return clip;
-}
-
MercuryMatrix MercuryNode::ManipulateMatrix(const MercuryMatrix& matrix)
{
return VIEWMATRIX * matrix;
Modified: Mercury2/src/MercuryNode.h
===================================================================
--- Mercury2/src/MercuryNode.h 2009-08-21 00:57:42 UTC (rev 502)
+++ Mercury2/src/MercuryNode.h 2009-08-21 00:58:05 UTC (rev 503)
@@ -97,8 +97,7 @@
virtual void PreRender(const MercuryMatrix& matrix);
virtual void Render(const MercuryMatrix& matrix);
virtual void PostRender(const MercuryMatrix& matrix);
-
- virtual bool IsCulled(const MercuryMatrix& matrix);
+
inline bool IsHidden() { return m_hidden; }
inline void SetCulled(bool t) { m_culled = t; }
Modified: Mercury2/src/RenderGraph.cpp
===================================================================
--- Mercury2/src/RenderGraph.cpp 2009-08-21 00:57:42 UTC (rev 502)
+++ Mercury2/src/RenderGraph.cpp 2009-08-21 00:58:05 UTC (rev 503)
@@ -18,7 +18,7 @@
{
m_node->PreRender( *m_matrix ); //calls on children assets
modelView = m_node->ManipulateMatrix( *m_matrix );
- if ( m_node->IsHidden() || m_node->IsCulled(modelView) ) return;
+ if ( m_node->IsHidden() || m_node->IsCulled() ) return;
GLCALL( glLoadMatrix( modelView ) );
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-08-21 00:57:58
|
Revision: 502
http://hgengine.svn.sourceforge.net/hgengine/?rev=502&view=rev
Author: axlecrusher
Date: 2009-08-21 00:57:42 +0000 (Fri, 21 Aug 2009)
Log Message:
-----------
Count specific functions
Modified Paths:
--------------
Mercury2/src/GLHeaders.h
Mercury2/src/GLHelpers.cpp
Mercury2/src/GLHelpers.h
Mercury2/src/Mercury2.cpp
Modified: Mercury2/src/GLHeaders.h
===================================================================
--- Mercury2/src/GLHeaders.h 2009-08-19 23:50:34 UTC (rev 501)
+++ Mercury2/src/GLHeaders.h 2009-08-21 00:57:42 UTC (rev 502)
@@ -23,7 +23,7 @@
#include <MercuryLog.h>
-#define GLCALL(x) x; ++GLCALLCOUNT;
+#define GLCALL(x) x; ++GLCALLCOUNT; GLFUNCTCOUNT[#x]++;
#define GLERRORCHECK { \
uint32_t e = GLCALL( glGetError() ); \
@@ -37,5 +37,9 @@
LOG.Write(ssprintf("GL FBO Error:%s", GlError2String(e).c_str())); \
assert(0); } }
+#include <map>
+
extern uint32_t GLCALLCOUNT;
+extern std::map<MString, uint32_t> GLFUNCTCOUNT;
+
#endif
Modified: Mercury2/src/GLHelpers.cpp
===================================================================
--- Mercury2/src/GLHelpers.cpp 2009-08-19 23:50:34 UTC (rev 501)
+++ Mercury2/src/GLHelpers.cpp 2009-08-21 00:57:42 UTC (rev 502)
@@ -2,6 +2,7 @@
#include <GLHelpers.h>
uint32_t GLCALLCOUNT = 0;
+std::map<MString, uint32_t> GLFUNCTCOUNT;
MString GlError2String(uint32_t e)
{
@@ -108,6 +109,18 @@
}
+void PrintGLFunctionCalls()
+{
+ std::map<MString,uint32_t>::iterator i;
+
+ for(i = GLFUNCTCOUNT.begin(); i != GLFUNCTCOUNT.end(); ++i)
+ {
+ LOG.Write(ssprintf( "%d ", i->second ) + i->first);
+ }
+
+ GLFUNCTCOUNT.clear();
+}
+
/****************************************************************************
* Copyright (C) 2009 by Joshua Allen *
* *
Modified: Mercury2/src/GLHelpers.h
===================================================================
--- Mercury2/src/GLHelpers.h 2009-08-19 23:50:34 UTC (rev 501)
+++ Mercury2/src/GLHelpers.h 2009-08-21 00:57:42 UTC (rev 502)
@@ -11,6 +11,8 @@
MercuryVertex pointFromScreenLoc(int screen_x, int screen_y);
unsigned int ToGLColorType(ColorByteType cbt);
+void PrintGLFunctionCalls();
+
/****************************************************************************
* Copyright (C) 2009 by Joshua Allen *
* *
Modified: Mercury2/src/Mercury2.cpp
===================================================================
--- Mercury2/src/Mercury2.cpp 2009-08-19 23:50:34 UTC (rev 501)
+++ Mercury2/src/Mercury2.cpp 2009-08-21 00:57:42 UTC (rev 502)
@@ -120,6 +120,8 @@
// UpdateLoopGo.Increment();
// updateThread.Wait();
+ PrintGLFunctionCalls();
+
SAFE_DELETE(root);
SAFE_DELETE(w);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
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.
|
|
From: <axl...@us...> - 2009-08-19 01:48:11
|
Revision: 500
http://hgengine.svn.sourceforge.net/hgengine/?rev=500&view=rev
Author: axlecrusher
Date: 2009-08-19 01:48:06 +0000 (Wed, 19 Aug 2009)
Log Message:
-----------
flush after writing
Modified Paths:
--------------
Mercury2/src/MercuryLog.cpp
Modified: Mercury2/src/MercuryLog.cpp
===================================================================
--- Mercury2/src/MercuryLog.cpp 2009-08-19 01:41:42 UTC (rev 499)
+++ Mercury2/src/MercuryLog.cpp 2009-08-19 01:48:06 UTC (rev 500)
@@ -66,6 +66,8 @@
m_file << m << endl;
}
+ m_file.flush();
+
m_outQueue.clear();
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-08-19 01:41:47
|
Revision: 499
http://hgengine.svn.sourceforge.net/hgengine/?rev=499&view=rev
Author: axlecrusher
Date: 2009-08-19 01:41:42 +0000 (Wed, 19 Aug 2009)
Log Message:
-----------
Add program log.
Modified Paths:
--------------
Mercury2/adv_set.c
Modified: Mercury2/adv_set.c
===================================================================
--- Mercury2/adv_set.c 2009-08-19 01:40:56 UTC (rev 498)
+++ Mercury2/adv_set.c 2009-08-19 01:41:42 UTC (rev 499)
@@ -13,7 +13,8 @@
src/MercuryPlane.cpp src/BoundingBox.cpp src/Shader.cpp src/RenderGraph.cpp src/Frustum.cpp \
src/Camera.cpp src/MercuryInput.cpp src/MQuaternion.cpp src/ModuleManager.cpp src/MercuryFBO.cpp \
src/GLHelpers.cpp src/FullscreenQuad.cpp src/MercuryNamedResource.cpp src/MercuryPrefs.cpp \
- src/MercuryTheme.cpp src/Orthographic.cpp src/Light.cpp src/RenderDifferedLights.cpp"
+ src/MercuryTheme.cpp src/Orthographic.cpp src/Light.cpp src/RenderDifferedLights.cpp \
+ src/MercuryLog.cpp"
SOURCES="$SOURCES src/MercuryFileDriverDirect.cpp src/MercuryFileDriverMem.cpp \
src/MercuryFileDriverPacked.cpp src/MercuryFileDriverZipped.cpp"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-08-19 01:41:04
|
Revision: 498
http://hgengine.svn.sourceforge.net/hgengine/?rev=498&view=rev
Author: axlecrusher
Date: 2009-08-19 01:40:56 +0000 (Wed, 19 Aug 2009)
Log Message:
-----------
fix compile
Modified Paths:
--------------
Mercury2/modules/TextNode.h
Modified: Mercury2/modules/TextNode.h
===================================================================
--- Mercury2/modules/TextNode.h 2009-08-19 01:40:37 UTC (rev 497)
+++ Mercury2/modules/TextNode.h 2009-08-19 01:40:56 UTC (rev 498)
@@ -3,6 +3,7 @@
#include <MercuryNode.h>
#include <MercuryHash.h>
+#include <map>
class MercuryAsset;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <axl...@us...> - 2009-08-19 01:40:48
|
Revision: 497
http://hgengine.svn.sourceforge.net/hgengine/?rev=497&view=rev
Author: axlecrusher
Date: 2009-08-19 01:40:37 +0000 (Wed, 19 Aug 2009)
Log Message:
-----------
Add program log.
Modified Paths:
--------------
Mercury2/src/GLHeaders.h
Mercury2/src/GLHelpers.cpp
Mercury2/src/HGMDLMesh.cpp
Mercury2/src/HGMDLModel.cpp
Mercury2/src/ImageLoader.cpp
Mercury2/src/Light.cpp
Mercury2/src/MQuaternion.cpp
Mercury2/src/Mercury2.cpp
Mercury2/src/MercuryAsset.cpp
Mercury2/src/MercuryAsset.h
Mercury2/src/MercuryMatrix.cpp
Mercury2/src/MercuryNode.cpp
Mercury2/src/MercuryNode.h
Mercury2/src/MercuryVertex.cpp
Mercury2/src/PNGLoader.cpp
Mercury2/src/Quad.cpp
Mercury2/src/RawImageData.cpp
Mercury2/src/Shader.cpp
Added Paths:
-----------
Mercury2/src/MercuryLog.cpp
Mercury2/src/MercuryLog.h
Modified: Mercury2/src/GLHeaders.h
===================================================================
--- Mercury2/src/GLHeaders.h 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/GLHeaders.h 2009-08-19 01:40:37 UTC (rev 497)
@@ -21,16 +21,18 @@
#include <GLHelpers.h>
#include <assert.h>
+#include <MercuryLog.h>
+
#define GLERRORCHECK { \
uint32_t e = glGetError(); \
if ( e != GL_NO_ERROR ) { \
-printf("GL Error:%s\n", GlError2String(e).c_str()); \
+LOG.Write(ssprintf("GL Error:%s", GlError2String(e).c_str())); \
assert(0); } }
#define CHECKFBO { \
uint32_t e = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER); \
if ( e != GL_FRAMEBUFFER_COMPLETE ) { \
-printf("GL FBO Error:%s\n", GlError2String(e).c_str()); \
+LOG.Write(ssprintf("GL FBO Error:%s", GlError2String(e).c_str())); \
assert(0); } }
Modified: Mercury2/src/GLHelpers.cpp
===================================================================
--- Mercury2/src/GLHelpers.cpp 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/GLHelpers.cpp 2009-08-19 01:40:37 UTC (rev 497)
@@ -97,10 +97,10 @@
case RGBA16F:
return GL_RGBA16F_ARB;
case RGBA32F:
- printf( "GL_RGBA32F_ARB unsupported using GL_RGBA16F_ARB\n" );
+ LOG.Write("GL_RGBA32F_ARB unsupported using GL_RGBA16F_ARB" );
return GL_RGBA16F_ARB;
default:
- printf( "Unsupported color byte type (%d)\n", cbt );
+ LOG.Write(ssprintf( "Unsupported color byte type (%d)", cbt ));
return GL_RGB;
}
Modified: Mercury2/src/HGMDLMesh.cpp
===================================================================
--- Mercury2/src/HGMDLMesh.cpp 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/HGMDLMesh.cpp 2009-08-19 01:40:37 UTC (rev 497)
@@ -41,7 +41,7 @@
uint32_t extraDataCount;
hgmdl->Read( &extraDataCount, sizeof( uint32_t ) );
- printf("has %d extras\n", extraDataCount);
+ LOG.Write(ssprintf("has %d extras", extraDataCount));
for (uint32_t i = 0; i < extraDataCount; ++i)
{
ReadExtraData(hgmdl);
@@ -62,7 +62,7 @@
}
default:
{
- printf("Junk extra type '%x'\n", type);
+ LOG.Write(ssprintf("Junk extra type '%x'", type));
//read and discard as junk
uint32_t length;
hgmdl->Read( &length, sizeof(uint32_t) );
Modified: Mercury2/src/HGMDLModel.cpp
===================================================================
--- Mercury2/src/HGMDLModel.cpp 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/HGMDLModel.cpp 2009-08-19 01:40:37 UTC (rev 497)
@@ -1,5 +1,6 @@
#include <HGMDLModel.h>
#include <MercuryNode.h>
+
REGISTER_ASSET_TYPE(HGMDLModel);
const uint16_t EXPCTMJRV = 2;
@@ -33,7 +34,7 @@
MString p(fingerPrint);
if (p != "MBMF")
{
- printf("Not a HGMDL file.\n");
+ LOG.Write("Not a HGMDL file.");
return;
}
@@ -45,7 +46,7 @@
if ((majorVersion != EXPCTMJRV) || (minorVersion != EXPCTMNRV))
{
- printf("Can only read HGMDL version %d.%d, this file is %d.%d\n", EXPCTMJRV,EXPCTMNRV,majorVersion,minorVersion);
+ LOG.Write(ssprintf("Can only read HGMDL version %d.%d, this file is %d.%d", EXPCTMJRV,EXPCTMNRV,majorVersion,minorVersion) );
return;
}
@@ -109,7 +110,7 @@
HGMDLModel* HGMDLModel::Generate()
{
- printf("new HGMDL\n");
+ LOG.Write( "new HGMDL" );
return new HGMDLModel();
}
@@ -124,7 +125,7 @@
MercuryFile * f = FILEMAN.Open( model->m_path );
if( !f )
{
- printf( "Could not open file: \"%s\" for model\n", model->m_path.c_str() );
+ LOG.Write( "Could not open file: \""+ model->m_path +"\" for model");
return 0;
}
Modified: Mercury2/src/ImageLoader.cpp
===================================================================
--- Mercury2/src/ImageLoader.cpp 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/ImageLoader.cpp 2009-08-19 01:40:37 UTC (rev 497)
@@ -1,6 +1,7 @@
#include <ImageLoader.h>
#include <MercuryUtil.h>
#include <Texture.h>
+#include <MercuryLog.h>
using namespace std;
@@ -41,7 +42,7 @@
if( !f )
{
- printf( "Error opening image: %s\n", filename.c_str() );
+ LOG.Write( "Error opening image: "+filename );
return 0;
}
Modified: Mercury2/src/Light.cpp
===================================================================
--- Mercury2/src/Light.cpp 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/Light.cpp 2009-08-19 01:40:37 UTC (rev 497)
@@ -120,7 +120,7 @@
d = m_power * d;
m_radius = Clamp<float>(0.0f, 1000.0f, d);
- printf("light radius %f\n", m_radius);
+ LOG.Write(ssprintf("light radius %f", m_radius));
}
void Light::BuildBoundingBox()
Modified: Mercury2/src/MQuaternion.cpp
===================================================================
--- Mercury2/src/MQuaternion.cpp 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/MQuaternion.cpp 2009-08-19 01:40:37 UTC (rev 497)
@@ -1,6 +1,7 @@
#include <MQuaternion.h>
#include <MercuryMath.h>
#include <MercuryMatrix.h>
+#include <MercuryLog.h>
MQuaternion::MQuaternion()
{
@@ -257,7 +258,7 @@
void MQuaternion::Print(const MString& s) const
{
- printf("%s: %f %f %f %f\n", s.c_str(), m_wxyz[0], m_wxyz[1], m_wxyz[2], m_wxyz[3]);
+ LOG.Write( ssprintf("%s: %f %f %f %f", s.c_str(), m_wxyz[0], m_wxyz[1], m_wxyz[2], m_wxyz[3]) );
}
//Returns the Euclidian Inner Product of two MQuaternions (Similar to Vector Dot-Product)
Modified: Mercury2/src/Mercury2.cpp
===================================================================
--- Mercury2/src/Mercury2.cpp 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/Mercury2.cpp 2009-08-19 01:40:37 UTC (rev 497)
@@ -18,6 +18,9 @@
#include <GLHeaders.h>
#include <ModuleManager.h>
#include <MercuryFile.h>
+
+#include <MercuryLog.h>
+
bool SHOWBOUNDINGVOLUME = false;
bool SHOWAXISES = false;
bool DOOCCLUSIONCULL = false;
@@ -36,9 +39,9 @@
int SignalHandler( int signal )
{
char buffer[2048];
- printf( "Fatal error encountered in Mercury 2: %s\n", cn_get_crash_description( signal ) );
+ LOG.Write(ssprintf( "Fatal error encountered in Mercury 2: %s", cn_get_crash_description( signal ) ));
cnget_backtrace( 1, buffer, 2047 );
- printf( "%s\n", buffer );
+ LOG.Write( buffer );
return 0; //Continue regular crash.
}
@@ -103,7 +106,7 @@
float batches = MercuryVBO::ResetBatchCount()/(float)m_count;
float VBinds = MercuryVBO::ResetBindCount()/(float)m_count;
float Tbinds = Texture::ReadAndResetBindCount()/(float)m_count;
- printf("FPS: %f, VBO batches %f, TBinds %f, VBinds %f\n", m_count/fpsTimer.Age(), batches, Tbinds, VBinds);
+ LOG.Write( ssprintf("FPS: %f, VBO batches %f, TBinds %f, VBinds %f", m_count/fpsTimer.Age(), batches, Tbinds, VBinds) );
m_count = 0;
fpsTimer = timer;
}
Modified: Mercury2/src/MercuryAsset.cpp
===================================================================
--- Mercury2/src/MercuryAsset.cpp 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/MercuryAsset.cpp 2009-08-19 01:40:37 UTC (rev 497)
@@ -116,7 +116,7 @@
std::list< std::pair< MString, Callback0R< MAutoPtr<MercuryAsset> > > >::iterator i;
for (i = m_factoryCallbacks.begin(); i != m_factoryCallbacks.end(); ++i)
if (i->first == t) return i->second();
- printf("WARNING: Asset type %s not found.\n", type.c_str());
+ LOG.Write( "WARNING: Asset type " + type + " not found." );
return NULL;
}
@@ -129,6 +129,7 @@
void AssetFactory::RemoveAssetInstance(const MString& key)
{
m_assetInstances.remove( key );
+ LOG.Write( "removed asset "+key );
}
MHash< MercuryAsset*> AssetFactory::m_assetInstances;
Modified: Mercury2/src/MercuryAsset.h
===================================================================
--- Mercury2/src/MercuryAsset.h 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/MercuryAsset.h 2009-08-19 01:40:37 UTC (rev 497)
@@ -8,6 +8,7 @@
#include <MSemaphore.h>
#include <XMLParser.h>
#include <Callback.h>
+#include <MercuryLog.h>
#include <MercuryHash.h>
#include <list>
Added: Mercury2/src/MercuryLog.cpp
===================================================================
--- Mercury2/src/MercuryLog.cpp (rev 0)
+++ Mercury2/src/MercuryLog.cpp 2009-08-19 01:40:37 UTC (rev 497)
@@ -0,0 +1,113 @@
+#include <MercuryLog.h>
+#include <iostream>
+
+using namespace std;
+
+void* MercuryLog::ThreadLoop(void* d)
+{
+ MercuryLog* log = static_cast<MercuryLog*>(d);
+
+ while (true)
+ {
+ log->CopyQueue();
+ log->WriteQueue();
+ usleep(100000); //10x/sec
+ }
+}
+
+MercuryLog::MercuryLog()
+{
+ m_thread.Create(MercuryLog::ThreadLoop, this, true);
+}
+
+MercuryLog::~MercuryLog()
+{
+ m_thread.Halt();
+ CopyQueue();
+ WriteQueue();
+}
+
+void MercuryLog::Open(const MString& file)
+{
+ m_file.open(file.c_str());
+}
+
+void MercuryLog::Close()
+{
+ m_file.close();
+}
+
+void MercuryLog::Write(const MString& message)
+{
+ AutoMutexLock lock(m_mutex);
+ m_queue.push_back( message );
+}
+
+void MercuryLog::CopyQueue()
+{
+ AutoMutexLock lock(m_mutex);
+
+ std::list< MString >::iterator i;
+
+ for (i = m_queue.begin(); i != m_queue.end(); ++i)
+ m_outQueue.push_back( *i );
+
+ m_queue.clear();
+}
+
+void MercuryLog::WriteQueue()
+{
+ std::list< MString >::iterator i;
+
+ for (i = m_outQueue.begin(); i != m_outQueue.end(); ++i)
+ {
+ const MString& m = *i;
+ cout << m << endl;
+ m_file << m << endl;
+ }
+
+ m_outQueue.clear();
+}
+
+MercuryProgramLog& MercuryProgramLog::GetInstance()
+{
+ static MercuryProgramLog* pl = NULL;
+ if (!pl)
+ {
+ pl = new MercuryProgramLog;
+ pl->m_log.Open("log.txt");
+ }
+ return *pl;
+}
+
+/****************************************************************************
+ * Copyright (C) 2009 by Joshua Allen *
+ * *
+ * *
+ * All rights reserved. *
+ * *
+ * Redistribution and use in source and binary forms, with or without *
+ * modification, are permitted provided that the following conditions *
+ * are met: *
+ * * Redistributions of source code must retain the above copyright *
+ * notice, this list of conditions and the following disclaimer. *
+ * * Redistributions in binary form must reproduce the above *
+ * copyright notice, this list of conditions and the following *
+ * disclaimer in the documentation and/or other materials provided *
+ * with the distribution. *
+ * * Neither the name of the Mercury Engine nor the names of its *
+ * contributors may be used to endorse or promote products derived *
+ * from this software without specific prior written permission. *
+ * *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT *
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR *
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT *
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, *
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE *
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
+ ***************************************************************************/
Added: Mercury2/src/MercuryLog.h
===================================================================
--- Mercury2/src/MercuryLog.h (rev 0)
+++ Mercury2/src/MercuryLog.h 2009-08-19 01:40:37 UTC (rev 497)
@@ -0,0 +1,83 @@
+#ifndef MERCURYLOG_H
+#define MERCURYLOG_H
+
+#include <fstream>
+#include <list>
+#include <MercuryString.h>
+#include <MercuryThreads.h>
+
+#include <MercuryUtil.h>
+
+class MercuryLog
+{
+ public:
+ MercuryLog();
+ ~MercuryLog();
+
+ static MercuryLog& GetInstance();
+
+ void Open(const MString& file);
+ void Close();
+
+ void Write(const MString& message);
+
+ private:
+ static void* ThreadLoop(void* d);
+ void CopyQueue();
+ void WriteQueue();
+
+ std::list< MString > m_queue;
+ std::list< MString > m_outQueue;
+
+ std::ofstream m_file;
+ MercuryMutex m_mutex;
+
+ MercuryThread m_thread;
+};
+
+class MercuryProgramLog
+{
+ public:
+ static MercuryProgramLog& GetInstance();
+ inline MercuryLog& Log() { return m_log; }
+ private:
+ MercuryLog m_log;
+};
+
+static InstanceCounter<MercuryProgramLog> MLOGcounter("MercuryProgramLog");
+
+#define LOG MercuryProgramLog::GetInstance().Log()
+
+#endif
+
+/****************************************************************************
+ * Copyright (C) 2009 by Joshua Allen *
+ * *
+ * *
+ * All rights reserved. *
+ * *
+ * Redistribution and use in source and binary forms, with or without *
+ * modification, are permitted provided that the following conditions *
+ * are met: *
+ * * Redistributions of source code must retain the above copyright *
+ * notice, this list of conditions and the following disclaimer. *
+ * * Redistributions in binary form must reproduce the above *
+ * copyright notice, this list of conditions and the following *
+ * disclaimer in the documentation and/or other materials provided *
+ * with the distribution. *
+ * * Neither the name of the Mercury Engine nor the names of its *
+ * contributors may be used to endorse or promote products derived *
+ * from this software without specific prior written permission. *
+ * *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT *
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR *
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT *
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, *
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, *
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY *
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE *
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
+ ***************************************************************************/
Modified: Mercury2/src/MercuryMatrix.cpp
===================================================================
--- Mercury2/src/MercuryMatrix.cpp 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/MercuryMatrix.cpp 2009-08-19 01:40:37 UTC (rev 497)
@@ -1,5 +1,5 @@
#include "MercuryMatrix.h"
-#include <stdio.h>
+#include <MercuryLog.h>
MercuryMatrix::MercuryMatrix()
{
@@ -197,9 +197,9 @@
{
for (int i = 0; i < 4; ++i)
{
- printf( "%f %f %f %f\n", (*this)[i][0], (*this)[i][1], (*this)[i][2], (*this)[i][3] );
+ LOG.Write( ssprintf( "%f %f %f %f", (*this)[i][0], (*this)[i][1], (*this)[i][2], (*this)[i][3] ) );
}
- printf("\n");
+ LOG.Write("\n");
}
MercuryVector MercuryMatrix::operator*(const MercuryVector& v) const
Modified: Mercury2/src/MercuryNode.cpp
===================================================================
--- Mercury2/src/MercuryNode.cpp 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/MercuryNode.cpp 2009-08-19 01:40:37 UTC (rev 497)
@@ -374,7 +374,7 @@
std::list< std::pair< MString, Callback0R<MercuryNode*> > >::iterator i;
for (i = m_factoryCallbacks.begin(); i != m_factoryCallbacks.end(); ++i)
if (i->first == t) return i->second();
- printf("WARNING: Node type %s not found.\n", type.c_str());
+ LOG.Write( "WARNING: Node type " + type + " not found." );
return NULL;
}
Modified: Mercury2/src/MercuryNode.h
===================================================================
--- Mercury2/src/MercuryNode.h 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/MercuryNode.h 2009-08-19 01:40:37 UTC (rev 497)
@@ -7,7 +7,9 @@
#include <XMLParser.h>
#include <MercuryUtil.h>
#include <MessageHandler.h>
+#include <MercuryLog.h>
+
#include <MercuryAsset.h>
#include <BoundingBox.h>
@@ -156,7 +158,7 @@
MercuryNode* FactoryFunct##class() { return new class(); } \
Callback0R<MercuryNode*> factoryclbk##class( FactoryFunct##class ); \
bool GlobalRegisterSuccess##class = NodeFactory::GetInstance().RegisterFactoryCallback(#class, factoryclbk##class); \
- extern "C" { int Install##class() { printf( "Installing "#class "\n" ); NodeFactory::GetInstance().RegisterFactoryCallback(#class, factoryclbk##class); return 0; } }
+ extern "C" { int Install##class() { LOG.Write("Installing "#class ); NodeFactory::GetInstance().RegisterFactoryCallback(#class, factoryclbk##class); return 0; } }
#endif
Modified: Mercury2/src/MercuryVertex.cpp
===================================================================
--- Mercury2/src/MercuryVertex.cpp 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/MercuryVertex.cpp 2009-08-19 01:40:37 UTC (rev 497)
@@ -2,6 +2,7 @@
#include <MercuryUtil.h>
#include <MercuryMath.h>
#include <MQuaternion.h>
+#include <MercuryLog.h>
MercuryVertex::MercuryVertex()
{
@@ -120,7 +121,7 @@
void MercuryVertex::Print(const MString& s) const
{
- printf("%s: %f %f %f %f\n", s.c_str(), (*this)[0], (*this)[1], (*this)[2], (*this)[3]);
+ LOG.Write(ssprintf("%s: %f %f %f %f", s.c_str(), (*this)[0], (*this)[1], (*this)[2], (*this)[3]));
}
MercuryVertex MercuryVertex::Rotate(const MQuaternion& q) const
Modified: Mercury2/src/PNGLoader.cpp
===================================================================
--- Mercury2/src/PNGLoader.cpp 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/PNGLoader.cpp 2009-08-19 01:40:37 UTC (rev 497)
@@ -1,5 +1,6 @@
#include <ImageLoader.h>
#include <MercuryUtil.h>
+#include <MercuryLog.h>
#include <assert.h>
@@ -163,7 +164,7 @@
}
break;
default:
- printf("Invalid color byte type for PNG.\n");
+ LOG.Write("Invalid color byte type for PNG.");
SAFE_DELETE_ARRAY( image );
return false;
}
@@ -207,4 +208,4 @@
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
\ No newline at end of file
+ */
Modified: Mercury2/src/Quad.cpp
===================================================================
--- Mercury2/src/Quad.cpp 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/Quad.cpp 2009-08-19 01:40:37 UTC (rev 497)
@@ -49,7 +49,7 @@
{
Quad *asset = new Quad();
ADD_ASSET_INSTANCE(Quad,"",asset);
- printf("new quad\n");
+ LOG.Write( "new quad" );
return asset;
}
Modified: Mercury2/src/RawImageData.cpp
===================================================================
--- Mercury2/src/RawImageData.cpp 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/RawImageData.cpp 2009-08-19 01:40:37 UTC (rev 497)
@@ -1,5 +1,6 @@
#include <RawImageData.h>
#include <MercuryUtil.h>
+#include <MercuryLog.h>
RawImageData::RawImageData()
:m_data(NULL)
@@ -25,7 +26,7 @@
return RGBA16F;
else if (s == "RGBA32F")
return RGBA32F;
- printf("Color Byte Type %s unknown\n", s.c_str());
+ LOG.Write( "Color Byte Type " + s + " unknown" );
return RGB;
}
Modified: Mercury2/src/Shader.cpp
===================================================================
--- Mercury2/src/Shader.cpp 2009-08-18 22:38:55 UTC (rev 496)
+++ Mercury2/src/Shader.cpp 2009-08-19 01:40:37 UTC (rev 497)
@@ -123,9 +123,9 @@
if( f1 == 0 || f2 == 0 )
{
if( !f1 )
- printf( "Could not open %s.\n", (char*)s1.c_str() );
+ LOG.Write(ssprintf( "Could not open %s.", (char*)s1.c_str() ));
if( !f2 )
- printf( "Could not open %s.\n", (char*)s2.c_str() );
+ LOG.Write(ssprintf( "Could not open %s.", (char*)s2.c_str() ));
return false;
}
if( f1 )
@@ -134,7 +134,7 @@
Buffer = (char*)malloc( i+1 );
f1->Read( Buffer, i );
f1->Close();
- printf( "Compiling: %s\n", s1.c_str() );
+ LOG.Write( "Compiling: " + s1 );
Buffer[i] = '\0';
if( !LoadShaderFrag( Buffer ) )
{
@@ -143,7 +143,7 @@
f2->Close();
if( f3 )
f3->Close();
- printf( "Reporting failed shaderload. Not linking.\n" );
+ LOG.Write("Reporting failed shaderload. Not linking." );
return false;
}
free( Buffer );
@@ -155,13 +155,13 @@
f2->Read( Buffer, i );
f2->Close();
Buffer[i] = '\0';
- printf( "Compiling: %s\n", s2.c_str() );
+ LOG.Write("Compiling: %s"+s2);
if( !LoadShaderVert( Buffer ) )
{
if( f3 )
f3->Close();
free( Buffer );
- printf( "Reporting failed shaderload. Not linking.\n" );
+ LOG.Write("Reporting failed shaderload. Not linking." );
return false;
}
free( Buffer );
@@ -173,11 +173,11 @@
f3->Read( Buffer, i );
f3->Close();
Buffer[i] = '\0';
- printf( "Compiling: %s\n", s3.c_str() );
+ LOG.Write("Compiling: %s"+s3);
if( !LoadShaderGeom( Buffer ) )
{
free( Buffer );
- printf( "Reporting failed shaderload. Not linking.\n" );
+ LOG.Write("Reporting failed shaderload. Not linking." );
return false;
}
free( Buffer );
@@ -297,7 +297,7 @@
{
puts( "ERROR: You cannot load a geometry shader when there are still errors left in OpenGL." );
puts( "Please track down the error remaining by using glGetError() to cordon off your code." );
- printf( "The last error received was: %d\n", ierror );
+ LOG.Write( ssprintf( "The last error received was: %d", ierror ) );
}
for( i = 1; i < imaxvert; i++ )
{
@@ -305,7 +305,7 @@
if( glGetError() == 0 )
break;
}
- printf( "Geometry Shader loaded with a total of %d max verticies. Because there are %d max vertices, and %d preceived components per vert.\n", imaxvert/i, imaxvert, i );
+ LOG.Write(ssprintf( "Geometry Shader loaded with a total of %d max verticies. Because there are %d max vertices, and %d preceived components per vert.", imaxvert/i, imaxvert, i ));
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-08-18 22:39:04
|
Revision: 496
http://hgengine.svn.sourceforge.net/hgengine/?rev=496&view=rev
Author: cnlohr
Date: 2009-08-18 22:38:55 +0000 (Tue, 18 Aug 2009)
Log Message:
-----------
switch to MHash - It's roughly 4% faster total scene graph traversal with MHash instead of map when the CPU
is forced to be the bottleneck.
Modified Paths:
--------------
Mercury2/src/MercuryAsset.cpp
Mercury2/src/MercuryAsset.h
Mercury2/src/Shader.cpp
Mercury2/src/Shader.h
Modified: Mercury2/src/MercuryAsset.cpp
===================================================================
--- Mercury2/src/MercuryAsset.cpp 2009-08-18 22:27:31 UTC (rev 495)
+++ Mercury2/src/MercuryAsset.cpp 2009-08-18 22:38:55 UTC (rev 496)
@@ -120,13 +120,6 @@
return NULL;
}
-MercuryAsset* AssetFactory::LocateAsset( const MString& key )
-{
- std::map<MString, MercuryAsset*>::iterator asset = m_assetInstances.find(key);
- if ( asset != m_assetInstances.end() ) return asset->second;
- return NULL;
-}
-
void AssetFactory::AddAssetInstance(const MString& key, MercuryAsset* asset)
{
asset->IsInstanced(true);
@@ -135,16 +128,10 @@
void AssetFactory::RemoveAssetInstance(const MString& key)
{
- std::map<MString, MercuryAsset*>::iterator asset = m_assetInstances.find(key);
- if ( asset != m_assetInstances.end() )
- {
- m_assetInstances.erase( asset );
- printf("removed asset %s\n", key.c_str());
- }
-
+ m_assetInstances.remove( key );
}
-std::map<MString, MercuryAsset*> AssetFactory::m_assetInstances;
+MHash< MercuryAsset*> AssetFactory::m_assetInstances;
/***************************************************************************
* Copyright (C) 2008 by Joshua Allen *
Modified: Mercury2/src/MercuryAsset.h
===================================================================
--- Mercury2/src/MercuryAsset.h 2009-08-18 22:27:31 UTC (rev 495)
+++ Mercury2/src/MercuryAsset.h 2009-08-18 22:38:55 UTC (rev 496)
@@ -9,7 +9,7 @@
#include <XMLParser.h>
#include <Callback.h>
-#include <map>
+#include <MercuryHash.h>
#include <list>
enum LoadState
@@ -113,12 +113,12 @@
void RemoveAssetInstance(const MString& key);
private:
- MercuryAsset* LocateAsset( const MString& key );
+ MercuryAsset* LocateAsset( const MString& key ) { MercuryAsset ** a = m_assetInstances.get( key ); return a?(*a):0; }
std::list< std::pair< MString, Callback0R< MAutoPtr<MercuryAsset> > > > m_factoryCallbacks;
//the actual storage point is in MercuryAssetInstance
- static std::map<MString, MercuryAsset*> m_assetInstances;
+ static MHash< MercuryAsset*> m_assetInstances;
};
Modified: Mercury2/src/Shader.cpp
===================================================================
--- Mercury2/src/Shader.cpp 2009-08-18 22:27:31 UTC (rev 495)
+++ Mercury2/src/Shader.cpp 2009-08-18 22:38:55 UTC (rev 496)
@@ -425,11 +425,9 @@
std::list< UniformMap >::iterator ui = m_uniforms.begin();
for (;ui != m_uniforms.end(); ++ui)
{
- std::map< MString, ShaderAttribute >::iterator sai = m_globalAttributes.find( ui->name );
- if (sai != m_globalAttributes.end())
- {
- SetAttributeInternal(sai->first, sai->second);
- }
+ ShaderAttribute* a = m_globalAttributes.get( ui->name );
+ if( a )
+ SetAttributeInternal(ui->name,*a);
}
}
@@ -459,8 +457,7 @@
void Shader::RemoveAttribute(const MString& name)
{
- std::map< MString, ShaderAttribute>::iterator i = m_globalAttributes.find( name );
- if ( i != m_globalAttributes.end() ) m_globalAttributes.erase( i );
+ m_globalAttributes.remove( name );
//no sense in unsetting it in the current shader, what would we set it to?
}
@@ -491,7 +488,7 @@
}
}
-std::map< MString, ShaderAttribute> Shader::m_globalAttributes;
+MHash< ShaderAttribute> Shader::m_globalAttributes;
/*
* Copyright (c) 2009 Charles Lohr
Modified: Mercury2/src/Shader.h
===================================================================
--- Mercury2/src/Shader.h 2009-08-18 22:27:31 UTC (rev 495)
+++ Mercury2/src/Shader.h 2009-08-18 22:38:55 UTC (rev 496)
@@ -2,7 +2,7 @@
#define SHADER_H
#include <MercuryAsset.h>
-#include <map>
+#include <MercuryHash.h>
#include <vector>
#include <MercuryMatrix.h>
@@ -49,7 +49,7 @@
no longer referenced, it will remain in the map, as to
prevent bad pointers. This list is all-enduring.
*/
- std::map< MString, ShaderAttribute * > m_AllShaderAttributes;
+ MHash< ShaderAttribute * > m_AllShaderAttributes;
};
class UniformMap
@@ -176,7 +176,7 @@
Shader * OriginalShader;
//global uniform that should be applied to all shaders
- static std::map< MString, ShaderAttribute > m_globalAttributes;
+ static MHash< ShaderAttribute > m_globalAttributes;
};
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cn...@us...> - 2009-08-18 22:27:46
|
Revision: 495
http://hgengine.svn.sourceforge.net/hgengine/?rev=495&view=rev
Author: cnlohr
Date: 2009-08-18 22:27:31 +0000 (Tue, 18 Aug 2009)
Log Message:
-----------
fix warnings
Modified Paths:
--------------
Mercury2/src/MercuryWindow.h
Mercury2/src/X11Window.cpp
Modified: Mercury2/src/MercuryWindow.h
===================================================================
--- Mercury2/src/MercuryWindow.h 2009-08-18 22:26:48 UTC (rev 494)
+++ Mercury2/src/MercuryWindow.h 2009-08-18 22:27:31 UTC (rev 495)
@@ -38,11 +38,11 @@
static Callback0R< MercuryWindow* > genWindowClbk;
static MercuryWindow* m_windowInstance;
- bool m_bGrabbed;
MString m_title;
int m_width, m_height;
uint8_t m_bits, m_depthBits;
bool m_fullscreen;
+ bool m_bGrabbed;
};
#endif
Modified: Mercury2/src/X11Window.cpp
===================================================================
--- Mercury2/src/X11Window.cpp 2009-08-18 22:26:48 UTC (rev 494)
+++ Mercury2/src/X11Window.cpp 2009-08-18 22:27:31 UTC (rev 495)
@@ -261,7 +261,7 @@
case FocusIn:
case FocusOut:
{
- XFocusChangeEvent*e = (XFocusChangeEvent*)&event;
+ //XFocusChangeEvent*e = (XFocusChangeEvent*)&event;
inFocus = (event.type == FocusIn);
if (inFocus && m_bGrabbed ) XWarpPointer(m_display, None, m_window, 0,0,0,0,m_width/2,m_height/2);
break;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|