src/gl/common.h

changeset 55
cb81ecb5fb23
parent 53
3af627f7a40f
child 73
97df974b5ed5
--- a/src/gl/common.h	Thu Feb 13 15:25:01 2020 +0200
+++ b/src/gl/common.h	Wed Feb 26 02:21:07 2020 +0200
@@ -37,6 +37,14 @@
 		const char* vertexShaderSource,
 		const char* fragmentShaderSource);
 	void checkForGLErrors(QWidget* parent);
+	inline glm::vec3 colorToVector3(const QColor& color)
+	{
+		return {toFloat(color.redF()), toFloat(color.greenF()), toFloat(color.blueF())};
+	}
+	inline glm::vec4 colorToVector4(const QColor& color)
+	{
+		return {gl::colorToVector3(color), toFloat(color.alphaF())};
+	}
 }
 
 class gl::ShaderProgram : public QOpenGLShaderProgram
@@ -50,11 +58,10 @@
 		const float (*array)[4][4] = reinterpret_cast<const float(*)[4][4]>(glm::value_ptr(value));
 		this->setUniformValue(uniformName, *array);
 	}
-	template<int N, typename Float, glm::qualifier Prec>
-	void setUniformVector(const char* uniformName, const glm::vec<N, Float, Prec>& value)
+	template<typename Float, glm::qualifier Prec>
+	void setUniformVector(const char* uniformName, const glm::vec<4, Float, Prec>& value)
 	{
-		const Float (*array)[N] = reinterpret_cast<const Float(*)[N]>(glm::value_ptr(value));
-		this->setUniformValue(uniformName, array);
+		this->setUniformValue(uniformName, value.x, value.y, value.z, value.w);
 	}
 };
 

mercurial