src/gl/common.h

changeset 55
cb81ecb5fb23
parent 53
3af627f7a40f
child 73
97df974b5ed5
equal deleted inserted replaced
54:a4055f67b9c7 55:cb81ecb5fb23
35 void buildShaders( 35 void buildShaders(
36 QOpenGLShaderProgram* shaderProgram, 36 QOpenGLShaderProgram* shaderProgram,
37 const char* vertexShaderSource, 37 const char* vertexShaderSource,
38 const char* fragmentShaderSource); 38 const char* fragmentShaderSource);
39 void checkForGLErrors(QWidget* parent); 39 void checkForGLErrors(QWidget* parent);
40 inline glm::vec3 colorToVector3(const QColor& color)
41 {
42 return {toFloat(color.redF()), toFloat(color.greenF()), toFloat(color.blueF())};
43 }
44 inline glm::vec4 colorToVector4(const QColor& color)
45 {
46 return {gl::colorToVector3(color), toFloat(color.alphaF())};
47 }
40 } 48 }
41 49
42 class gl::ShaderProgram : public QOpenGLShaderProgram 50 class gl::ShaderProgram : public QOpenGLShaderProgram
43 { 51 {
44 public: 52 public:
48 void setUniformMatrix(const char* uniformName, const glm::mat<4, 4, Float, Prec>& value) 56 void setUniformMatrix(const char* uniformName, const glm::mat<4, 4, Float, Prec>& value)
49 { 57 {
50 const float (*array)[4][4] = reinterpret_cast<const float(*)[4][4]>(glm::value_ptr(value)); 58 const float (*array)[4][4] = reinterpret_cast<const float(*)[4][4]>(glm::value_ptr(value));
51 this->setUniformValue(uniformName, *array); 59 this->setUniformValue(uniformName, *array);
52 } 60 }
53 template<int N, typename Float, glm::qualifier Prec> 61 template<typename Float, glm::qualifier Prec>
54 void setUniformVector(const char* uniformName, const glm::vec<N, Float, Prec>& value) 62 void setUniformVector(const char* uniformName, const glm::vec<4, Float, Prec>& value)
55 { 63 {
56 const Float (*array)[N] = reinterpret_cast<const Float(*)[N]>(glm::value_ptr(value)); 64 this->setUniformValue(uniformName, value.x, value.y, value.z, value.w);
57 this->setUniformValue(uniformName, array);
58 } 65 }
59 }; 66 };
60 67
61 struct gl::Polygon 68 struct gl::Polygon
62 { 69 {

mercurial