Sfoglia il codice sorgente

Number-is-single fixes

Bill Robinson 11 anni fa
parent
commit
e65808712e

+ 15 - 21
Core/Contents/Source/PolyGLSLShaderModule.cpp

@@ -186,6 +186,19 @@ void GLSLShaderModule::clearShader() {
 	glUseProgram(0);
 	glUseProgram(0);
 }
 }
 
 
+void setUniformMatrix(GLint paramLocation, const Polycode::Matrix4& matrix) {
+#ifdef POLYCODE_NUMBER_IS_SINGLE
+	glUniformMatrix4fv(paramLocation, 1, false, matrix.ml);
+#else
+	// no glUniformMatrix4dv on some systems
+	float copyMatrix[16];
+	for(int i=0; i < 16; i++) {
+		copyMatrix[i] = matrix.ml[i];
+	}
+	glUniformMatrix4fv(paramLocation, 1, false, copyMatrix);
+#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,29 +246,10 @@ void GLSLShaderModule::updateGLSLParam(Renderer *renderer, GLSLShader *glslShade
 			break;
 			break;
 			case ProgramParam::PARAM_MATRIX:
 			case ProgramParam::PARAM_MATRIX:
 				if(localParam) {
 				if(localParam) {
-#ifdef POLYCODE_NUMBER_IS_SINGLE
-                    glUniformMatrix4fv(paramLocation, 1, false, localParam->getMatrix4().ml);
-#else
-                    // no glUniformMatrix4dv on some systems
-                    float copyMatrix[16];
-                    Matrix4 m = localParam->getMatrix4();
-                    for(int i=0; i < 16; i++) {
-                        copyMatrix[i] = m.ml[i];
-                    }
-                    glUniformMatrix4fv(paramLocation, 1, false, copyMatrix);
-#endif
+					setUniformMatrix(paramLocation, localParam->getMatrix4());
                 } else {
                 } else {
 					Matrix4 defaultMatrix;
 					Matrix4 defaultMatrix;
-#ifdef POLYCODE_NUMBER_IS_SINGLE
-					getMatrix4(paramLocation, 1, false, defaultMatrix.ml);
-#else
-                    // no glUniformMatrix4dv on some systems
-                    float copyMatrix[16];
-                    for(int i=0; i < 16; i++) {
-                        copyMatrix[i] = defaultMatrix.ml[i];
-                    }
-                    glUniformMatrix4fv(paramLocation, 1, false, copyMatrix);
-#endif
+					setUniformMatrix(paramLocation, defaultMatrix);
 				}
 				}
 			break;
 			break;
 		}
 		}

+ 1 - 1
Core/Contents/Source/PolyQuaternionCurve.cpp

@@ -62,7 +62,7 @@ void QuaternionCurve::generatePointsFromCurves(BezierCurve *wCurve, BezierCurve
 
 
 Quaternion QuaternionCurve::interpolate(Number t, bool useShortestPath)
 Quaternion QuaternionCurve::interpolate(Number t, bool useShortestPath)
 {
 {
-	t = std::min(std::max(t, 0.0), 1.0);
+	t = std::min(std::max(t, Number(0.0)), Number(1.0));
     Number fSeg = t * (tPoints.size() - 1);
     Number fSeg = t * (tPoints.size() - 1);
     unsigned int segIdx = (unsigned int)fSeg;
     unsigned int segIdx = (unsigned int)fSeg;
     t = fSeg - segIdx;
     t = fSeg - segIdx;