diff --git a/mesh.cpp b/mesh.cpp index 7da1405..40ce12a 100644 --- a/mesh.cpp +++ b/mesh.cpp @@ -78,6 +78,6 @@ void Mesh::draw() if(locked) { glAssert(glBindVertexArray(vao)); - glAssert(glDrawElements(GL_TRIANGLES, indices.size(), GL_UNSIGNED_INT, 0)); + //glAssert(glDrawElements(GL_TRIANGLES, indices.size(), GL_UNSIGNED_INT, 0)); } } diff --git a/mesh.h b/mesh.h index 0a2ef38..1856f0b 100644 --- a/mesh.h +++ b/mesh.h @@ -27,7 +27,7 @@ private: enum {VERTEX_BUFFER, INDICES_BUFFER, NB_BUFFERS}; std::vector vertices; - std::vector indices; + std::vector indices; GLuint vao; GLuint vbo[2]; bool locked; diff --git a/phong.vert b/phong.vert index d56a930..edfe011 100644 --- a/phong.vert +++ b/phong.vert @@ -20,10 +20,10 @@ out vec2 varTexCoord; }*/ void main(void) { - // normales corrigées (en fonction de la vue) + // normales corrigees (en fonction de la vue) varNormal = normalize(vec3(normalMatrix*vec4(inNormal,0))); - // coordonnées de texture + // coordonnees de texture varTexCoord = inTexCoord.xy; // position du vertex diff --git a/shader.cpp b/shader.cpp index 3c9ef77..502a43a 100644 --- a/shader.cpp +++ b/shader.cpp @@ -13,8 +13,10 @@ Shader::Shader(const QString &vertFilename, const QString &fragFilename) { program = glAssert(glCreateProgram()); - GLuint vertexShaderId = createShader(vertFilename, GL_VERTEX_SHADER); - GLuint fragmentShaderId = createShader(fragFilename, GL_FRAGMENT_SHADER); + vertexSource = fileToString(vertFilename); + fragmentSource = fileToString(fragFilename); + GLuint vertexShaderId = createShader(&vertexSource, GL_VERTEX_SHADER); + GLuint fragmentShaderId = createShader(&fragmentSource, GL_FRAGMENT_SHADER); glAssert(glAttachShader(program, vertexShaderId)); glAssert(glAttachShader(program, fragmentShaderId)); @@ -60,11 +62,10 @@ QString Shader::fileToString(QString filename) return in.readAll(); } -GLuint Shader::createShader(QString filename, GLenum shaderType) +GLuint Shader::createShader(QString* source, GLenum shaderType) { - QString source = fileToString(filename); glAssert(GLuint shaderId = glCreateShader(shaderType)); - const GLchar *data = (const GLchar *)source.toStdString().c_str(); + const GLchar *data = (const GLchar *)source->toStdString().c_str(); glAssert(glShaderSource(shaderId, 1, &data, NULL)); glAssert(glCompileShader(shaderId)); @@ -73,7 +74,7 @@ GLuint Shader::createShader(QString filename, GLenum shaderType) GLint compiled; glAssert(glGetShaderiv(shaderId, GL_COMPILE_STATUS, &compiled)); if (!compiled) { - std::cerr << "[" << filename.toStdString() << "] Vertex shader not compiled : " << std::endl; + std::cerr << (shaderType == GL_VERTEX_SHADER ? "Vertex" : "Fragment") << "shader not compiled : " << std::endl; printShaderInfoLog(shaderId); return 0; } diff --git a/shader.h b/shader.h index 1e5d016..2274150 100644 --- a/shader.h +++ b/shader.h @@ -4,16 +4,17 @@ #include #include #include - -class QString; +#include class Shader { static const std::string DEFAULT_VERT; static const std::string DEFAULT_FRAG; GLuint program; + QString vertexSource; + QString fragmentSource; QString fileToString(QString filename); - GLuint createShader(QString filename, GLenum shaderType); + GLuint createShader(QString* filename, GLenum shaderType); void printShaderInfoLog(GLuint shaderId); void printProgramInfoLog(GLuint programId); diff --git a/sparrowrenderer.cpp b/sparrowrenderer.cpp index 1099a5d..5307913 100644 --- a/sparrowrenderer.cpp +++ b/sparrowrenderer.cpp @@ -10,12 +10,12 @@ SparrowRenderer::SparrowRenderer(int width, int height) { - Shader* shader = new Shader(QString("../phong.vert"), QString("../phong.frag")); - Material* mat = new PhongMaterial(shader); scene = new Scene(); scene->setCamera(new Camera(width, height)); - Mesh* myGrid = new GridMesh(10, 10, false); + Mesh* myGrid = new GridMesh(2, 2, false); myGrid->initGL(); + Shader* shader = new Shader(QString("../phong.vert"), QString("../phong.frag")); + Material* mat = new PhongMaterial(shader); scene->addEntity(myGrid, mat); }