From 9e19c2211d1a13383d7454d26006cf5972071e46 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 22 Jun 2015 14:27:44 +0200 Subject: [PATCH] fixed shader compilation issue, fixed M_PI depending on cmath --- camera.cpp | 4 +--- shader.cpp | 21 ++++++++++++++++++++- shader.h | 4 ++++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/camera.cpp b/camera.cpp index da3f486..8455562 100644 --- a/camera.cpp +++ b/camera.cpp @@ -1,9 +1,7 @@ #include "camera.h" #include -#include - -#define _USE_MATH_DEFINES +#define M_PI 3.14159265358979323846 Camera::Camera(int width, int height, float fov_y, float near, float far, glm::vec3 pos) : m_projectionHasChanged(true), diff --git a/shader.cpp b/shader.cpp index d27bbb6..1d0e082 100644 --- a/shader.cpp +++ b/shader.cpp @@ -5,6 +5,9 @@ #include #include "glassert.h" +const std::string Shader::DEFAULT_VERT = "#version 330\nlayout(location = 0)in vec3 inPosition;\nvoid main(){gl_Position = vec4(inPosition, 1.0);}"; +const std::string Shader::DEFAULT_FRAG = "#version 330\nlayout(location = 0)out vec4 outColor;\nvoid main(){outColor = vec4(1, 0, 0, 1);}"; + Shader::Shader(const QString &vertFilename, const QString &fragFilename) { program = glAssert(glCreateProgram()); @@ -29,8 +32,24 @@ Shader::Shader(const QString &vertFilename, const QString &fragFilename) printProgramInfoLog(program); program = 0; } + else + std::cout << "Shader successfully compiled" << std::endl; + + glAssert(glDetachShader(program, vertexShaderId)); + glAssert(glDetachShader(program, fragmentShaderId)); + glAssert(glDeleteShader(vertexShaderId)); + glAssert(glDeleteShader(fragmentShaderId)); } +Shader::~Shader() +{ + bool ok; + glAssert(ok = glIsProgram(program)) + if(ok) + glAssert(glDeleteProgram(program)); +} + + QString Shader::fileToString(QString filename) { QFile f(filename); @@ -44,7 +63,7 @@ GLuint Shader::createShader(QString filename, GLenum shaderType) { QString source = fileToString(filename); glAssert(GLuint shaderId = glCreateShader(shaderType)); - const GLchar *data = (const GLchar *)source.constData(); + const GLchar *data = (const GLchar *)source.toStdString().c_str(); glAssert(glShaderSource(shaderId, 1, &data, NULL)); glAssert(glCompileShader(shaderId)); diff --git a/shader.h b/shader.h index 84cc34f..926a2e9 100644 --- a/shader.h +++ b/shader.h @@ -2,11 +2,14 @@ #define SHADER_H #include +#include class QString; class Shader { + static const std::string DEFAULT_VERT; + static const std::string DEFAULT_FRAG; GLuint program; QString fileToString(QString filename); GLuint createShader(QString filename, GLenum shaderType); @@ -15,6 +18,7 @@ class Shader public: Shader(const QString &vertFilename, const QString &fragFilename); + ~Shader(); GLuint getProgramId(); };