Просмотр исходного кода

Fix for matrix param in double mode

Bill Robinson 11 лет назад
Родитель
Сommit
7a47ba4e47
1 измененных файлов с 8 добавлено и 2 удалено
  1. 8 2
      Core/Contents/Source/PolyGLSLShaderModule.cpp

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

@@ -186,6 +186,12 @@ void GLSLShaderModule::clearShader() {
 	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) {
 	
 		LocalShaderParam *localParam = NULL;		
@@ -233,10 +239,10 @@ void GLSLShaderModule::updateGLSLParam(Renderer *renderer, GLSLShader *glslShade
 			break;
 			case ProgramParam::PARAM_MATRIX:
 				if(localParam) {
-					glUniformMatrix4fv(paramLocation, 1, false, localParam->getMatrix4().ml);
+					polycodeUniformMatrix4v(paramLocation, 1, false, localParam->getMatrix4().ml);
 				} else {
 					Matrix4 defaultMatrix;
-					glUniformMatrix4fv(paramLocation, 1, false, defaultMatrix.ml);
+					polycodeUniformMatrix4v(paramLocation, 1, false, defaultMatrix.ml);
 				}
 			break;
 		}