fixed a bug

This commit is contained in:
Anselme 2015-06-26 17:20:04 +02:00
parent 2bd9205c37
commit a36b607ccf
6 changed files with 18 additions and 16 deletions

View File

@ -78,6 +78,6 @@ void Mesh::draw()
if(locked) if(locked)
{ {
glAssert(glBindVertexArray(vao)); glAssert(glBindVertexArray(vao));
glAssert(glDrawElements(GL_TRIANGLES, indices.size(), GL_UNSIGNED_INT, 0)); //glAssert(glDrawElements(GL_TRIANGLES, indices.size(), GL_UNSIGNED_INT, 0));
} }
} }

2
mesh.h
View File

@ -27,7 +27,7 @@ private:
enum {VERTEX_BUFFER, INDICES_BUFFER, NB_BUFFERS}; enum {VERTEX_BUFFER, INDICES_BUFFER, NB_BUFFERS};
std::vector<Vertex> vertices; std::vector<Vertex> vertices;
std::vector<int> indices; std::vector<unsigned int> indices;
GLuint vao; GLuint vao;
GLuint vbo[2]; GLuint vbo[2];
bool locked; bool locked;

View File

@ -20,10 +20,10 @@ out vec2 varTexCoord;
}*/ }*/
void main(void) { 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))); varNormal = normalize(vec3(normalMatrix*vec4(inNormal,0)));
// coordonnées de texture // coordonnees de texture
varTexCoord = inTexCoord.xy; varTexCoord = inTexCoord.xy;
// position du vertex // position du vertex

View File

@ -13,8 +13,10 @@ Shader::Shader(const QString &vertFilename, const QString &fragFilename)
{ {
program = glAssert(glCreateProgram()); program = glAssert(glCreateProgram());
GLuint vertexShaderId = createShader(vertFilename, GL_VERTEX_SHADER); vertexSource = fileToString(vertFilename);
GLuint fragmentShaderId = createShader(fragFilename, GL_FRAGMENT_SHADER); fragmentSource = fileToString(fragFilename);
GLuint vertexShaderId = createShader(&vertexSource, GL_VERTEX_SHADER);
GLuint fragmentShaderId = createShader(&fragmentSource, GL_FRAGMENT_SHADER);
glAssert(glAttachShader(program, vertexShaderId)); glAssert(glAttachShader(program, vertexShaderId));
glAssert(glAttachShader(program, fragmentShaderId)); glAssert(glAttachShader(program, fragmentShaderId));
@ -60,11 +62,10 @@ QString Shader::fileToString(QString filename)
return in.readAll(); 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)); 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(glShaderSource(shaderId, 1, &data, NULL));
glAssert(glCompileShader(shaderId)); glAssert(glCompileShader(shaderId));
@ -73,7 +74,7 @@ GLuint Shader::createShader(QString filename, GLenum shaderType)
GLint compiled; GLint compiled;
glAssert(glGetShaderiv(shaderId, GL_COMPILE_STATUS, &compiled)); glAssert(glGetShaderiv(shaderId, GL_COMPILE_STATUS, &compiled));
if (!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); printShaderInfoLog(shaderId);
return 0; return 0;
} }

View File

@ -4,16 +4,17 @@
#include <glew/glew.h> #include <glew/glew.h>
#include <string> #include <string>
#include <glm/fwd.hpp> #include <glm/fwd.hpp>
#include <QString>
class QString;
class Shader class Shader
{ {
static const std::string DEFAULT_VERT; static const std::string DEFAULT_VERT;
static const std::string DEFAULT_FRAG; static const std::string DEFAULT_FRAG;
GLuint program; GLuint program;
QString vertexSource;
QString fragmentSource;
QString fileToString(QString filename); QString fileToString(QString filename);
GLuint createShader(QString filename, GLenum shaderType); GLuint createShader(QString* filename, GLenum shaderType);
void printShaderInfoLog(GLuint shaderId); void printShaderInfoLog(GLuint shaderId);
void printProgramInfoLog(GLuint programId); void printProgramInfoLog(GLuint programId);

View File

@ -10,12 +10,12 @@
SparrowRenderer::SparrowRenderer(int width, int height) 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 = new Scene();
scene->setCamera(new Camera(width, height)); scene->setCamera(new Camera(width, height));
Mesh* myGrid = new GridMesh(10, 10, false); Mesh* myGrid = new GridMesh(2, 2, false);
myGrid->initGL(); myGrid->initGL();
Shader* shader = new Shader(QString("../phong.vert"), QString("../phong.frag"));
Material* mat = new PhongMaterial(shader);
scene->addEntity(myGrid, mat); scene->addEntity(myGrid, mat);
} }