|
From: <axl...@us...> - 2009-06-14 20:16:56
|
Revision: 335
http://hgengine.svn.sourceforge.net/hgengine/?rev=335&view=rev
Author: axlecrusher
Date: 2009-06-14 20:16:34 +0000 (Sun, 14 Jun 2009)
Log Message:
-----------
faster get uniform
Modified Paths:
--------------
Mercury2/src/Shader.cpp
Mercury2/src/Shader.h
Modified: Mercury2/src/Shader.cpp
===================================================================
--- Mercury2/src/Shader.cpp 2009-06-14 19:46:39 UTC (rev 334)
+++ Mercury2/src/Shader.cpp 2009-06-14 20:16:34 UTC (rev 335)
@@ -314,9 +314,9 @@
}
//Build the list of uniform tabs.
-/* int iNumUniforms;
+ int iNumUniforms;
glGetObjectParameterivARB( iProgramID, GL_OBJECT_ACTIVE_UNIFORMS_ARB, &iNumUniforms );
- m_vShaderTabs.resize( iNumUniforms );
+ m_uniforms.clear();
for( int i = 0; i < iNumUniforms; ++i )
{
char buffer[1024];
@@ -325,10 +325,9 @@
GLenum type;
glGetActiveUniformARB( iProgramID, i, 1024, &bufflen, &size, &type, buffer );
buffer[bufflen] = 0;
- m_vShaderTabs[i] = SHADERATTRIBUTES.GetHandle( buffer );
- m_vShaderTabs[i]->name = buffer;
+ m_uniforms[buffer] = glGetUniformLocationARB( iProgramID, buffer );
}
-*/ return true;
+ return true;
}
void Shader::DestroyShader()
@@ -442,8 +441,9 @@
int32_t Shader::GetUniformLocation(const MString& n)
{
if ( !iProgramID ) return -1;
- return glGetUniformLocationARB( iProgramID, n.c_str() );
-
+ std::map< MString, int >::iterator i = m_uniforms.find(n);
+ if ( i == m_uniforms.end() ) return -1;
+ return i->second;
}
/*
Modified: Mercury2/src/Shader.h
===================================================================
--- Mercury2/src/Shader.h 2009-06-14 19:46:39 UTC (rev 334)
+++ Mercury2/src/Shader.h 2009-06-14 20:16:34 UTC (rev 335)
@@ -147,6 +147,7 @@
the pointers in the attributes repository.
*/
// std::vector< ShaderAttribute * > m_vShaderTabs;
+ std::map< MString, int > m_uniforms;
///Name of the shader
MString sShaderName;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|