fixed a bug
This commit is contained in:
parent
2bd9205c37
commit
a36b607ccf
2
mesh.cpp
2
mesh.cpp
@ -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
2
mesh.h
@ -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;
|
||||||
|
@ -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
|
||||||
|
13
shader.cpp
13
shader.cpp
@ -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;
|
||||||
}
|
}
|
||||||
|
7
shader.h
7
shader.h
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user