Ver Fonte

Fix for matrix param in double mode

Bill Robinson há 11 anos atrás
pai
commit
7a47ba4e47
1 ficheiros alterados com 8 adições e 2 exclusões
  1. 8 2
      Core/Contents/Source/PolyGLSLShaderModule.cpp

+ 8 - 2
Core/Contents/Source/PolyGLSLShaderModule.cpp

@@ -186,6 +186,12 @@ void GLSLShaderModule::clearShader() {
 	glUseProgram(0);
 	glUseProgram(0);
 }
 }
 
 
+#ifdef POLYCODE_NUMBER_IS_SINGLE
+#define polycodeUniformMatrix4v glUniformMatrix4fv
+#else
+#define polycodeUniformMatrix4v glUniformMatrix4dv
+#endif
+
 void GLSLShaderModule::updateGLSLParam(Renderer *renderer, GLSLShader *glslShader, ProgramParam &param, ShaderBinding *materialOptions, ShaderBinding *localOptions) {
 void GLSLShaderModule::updateGLSLParam(Renderer *renderer, GLSLShader *glslShader, ProgramParam &param, ShaderBinding *materialOptions, ShaderBinding *localOptions) {
 	
 	
 		LocalShaderParam *localParam = NULL;		
 		LocalShaderParam *localParam = NULL;		
@@ -233,10 +239,10 @@ void GLSLShaderModule::updateGLSLParam(Renderer *renderer, GLSLShader *glslShade
 			break;
 			break;
 			case ProgramParam::PARAM_MATRIX:
 			case ProgramParam::PARAM_MATRIX:
 				if(localParam) {
 				if(localParam) {
-					glUniformMatrix4fv(paramLocation, 1, false, localParam->getMatrix4().ml);
+					polycodeUniformMatrix4v(paramLocation, 1, false, localParam->getMatrix4().ml);
 				} else {
 				} else {
 					Matrix4 defaultMatrix;
 					Matrix4 defaultMatrix;
-					glUniformMatrix4fv(paramLocation, 1, false, defaultMatrix.ml);
+					polycodeUniformMatrix4v(paramLocation, 1, false, defaultMatrix.ml);
 				}
 				}
 			break;
 			break;
 		}
 		}