small changes

This commit is contained in:
Anselme 2015-07-16 15:17:42 +02:00
parent 486b81d153
commit a6c9a55fb9
11 changed files with 86 additions and 14 deletions

6
.gitignore vendored
View File

@ -1,2 +1,6 @@
build*
*.user
*.user
Makefile*
object_script.*
debug
release

View File

@ -1,8 +1,8 @@
#ifndef LIGHT_H
#define LIGHT_H
#include <glm/vec3.hpp>
#include <glew/glew.h>
#include <glm/vec3.hpp>
#include <vector>
#define MAX_LIGHTS 4

2
mesh.h
View File

@ -1,9 +1,9 @@
#ifndef MESH_H
#define MESH_H
#include <glew/glew.h>
#include <vector>
#include <glm/glm.hpp>
#include <glew/glew.h>
class Mesh
{

View File

@ -2,6 +2,7 @@ Modules :
- bump mapping module
- billboard module
- particles module
- text/gui module

View File

@ -1,10 +1,10 @@
#ifndef PHONGMODULE_H
#define PHONGMODULE_H
#include <glew/glew.h>
#include "basicmodule.h"
#include "phongmaterial.h"
#include "mesh.h"
#include <glew/glew.h>
class Lights;

View File

@ -5,6 +5,7 @@ ResourceBase::DataBase<Mesh> ResourceBase::meshes;
ResourceBase::DataBase<Material> ResourceBase::materials;
ResourceBase::DataBase<Shader> ResourceBase::shaders;
ResourceBase::DataBase<Entity> ResourceBase::entities;
ResourceBase::DataBase<Lights> ResourceBase::lights;
void ResourceBase::setTexture(const std::string &textureName, Texture* myTexture)
{
@ -31,6 +32,11 @@ void ResourceBase::setEntity(const std::string &entityName, Entity* myEntity)
entities.add(entityName, myEntity);
}
void ResourceBase::setLights(const std::string &lightsName, Lights* myLights)
{
lights.add(lightsName, myLights);
}
Texture* ResourceBase::getTexture(const std::string &textureName)
{
@ -57,4 +63,8 @@ Entity* ResourceBase::getEntity(const std::string &entityName)
return entities.get(entityName);
}
Lights* ResourceBase::getLights(const std::string &lightsName)
{
return lights.get(lightsName);
}

View File

@ -6,6 +6,7 @@ class Mesh;
class Material;
class Shader;
class Entity;
class Lights;
#include <unordered_map>
#include <string>
@ -19,12 +20,14 @@ public:
static void setMaterial(const std::string &materialName, Material* myMaterial);
static void setShader(const std::string &shaderName, Shader* myShader);
static void setEntity(const std::string &entityName, Entity* myEntity);
static void setLights(const std::string &lightsName, Lights* myLights);
static Texture* getTexture(const std::string &textureName);
static Mesh* getMesh(const std::string &meshName);
static Material* getMaterial(const std::string &materialName);
static Shader* getShader(const std::string &shaderName);
static Entity* getEntity(const std::string &entityName);
static Lights* getLights(const std::string &lightsName);
protected:
template <typename T>
@ -54,6 +57,7 @@ protected:
static DataBase<Material> materials;
static DataBase<Shader> shaders;
static DataBase<Entity> entities;
static DataBase<Lights> lights;
};
#endif // RESOURCEBASE_H

View File

@ -1,5 +1,5 @@
#include "shader.h"
#include <glew/glew.h>
#include "shader.h"
#include <iostream>
#include "glassert.h"
#include <glm/ext.hpp>
@ -35,6 +35,41 @@ Shader::Shader(const std::string &vertexSource, const std::string &fragmentSourc
glAssert(glDeleteShader(fragmentShaderId));
}
Shader::Shader(const std::string &vertexSource, const std::string &geometrySource, const std::string &fragmentSource)
{
program = glAssert(glCreateProgram());
GLuint vertexShaderId = createShader(vertexSource, GL_VERTEX_SHADER);
GLuint geometryShaderId = createShader(geometrySource, GL_GEOMETRY_SHADER);
GLuint fragmentShaderId = createShader(fragmentSource, GL_FRAGMENT_SHADER);
glAssert(glAttachShader(program, vertexShaderId));
glAssert(glAttachShader(program, geometryShaderId));
glAssert(glAttachShader(program, fragmentShaderId));
glAssert(glBindAttribLocation(program, 0, "inPosition"));
glAssert(glBindAttribLocation(program, 1, "inNormal"));
glAssert(glBindAttribLocation(program, 2, "inTexCoord"));
glAssert(glLinkProgram(program));
// check errors
GLint linked;
glAssert(glGetProgramiv(program, GL_LINK_STATUS, &linked));
if (!linked) {
std::cerr << "Program not linked" << std::endl;
printProgramInfoLog(program);
program = 0;
}
glAssert(glDetachShader(program, vertexShaderId));
glAssert(glDetachShader(program, geometryShaderId));
glAssert(glDetachShader(program, fragmentShaderId));
glAssert(glDeleteShader(vertexShaderId));
glAssert(glDeleteShader(geometryShaderId));
glAssert(glDeleteShader(fragmentShaderId));
}
Shader::~Shader()
{
bool ok;
@ -55,7 +90,20 @@ GLuint Shader::createShader(const std::string &source, GLenum shaderType)
GLint compiled;
glAssert(glGetShaderiv(shaderId, GL_COMPILE_STATUS, &compiled));
if (!compiled) {
std::cerr << (shaderType == GL_VERTEX_SHADER ? "Vertex" : "Fragment") << "shader not compiled : " << std::endl;
std::string type_str;
switch(shaderType)
{
case GL_VERTEX_SHADER:
type_str = "Vertex";
break;
case GL_GEOMETRY_SHADER:
type_str = "Geometry";
break;
case GL_FRAGMENT_SHADER:
type_str = "Fragment";
break;
}
std::cerr << type_str << " shader not compiled : " << std::endl;
printShaderInfoLog(shaderId);
return 0;
}

View File

@ -14,6 +14,7 @@ class Shader
public:
Shader(const std::string &vertexSource, const std::string &fragmentSource);
Shader(const std::string &vertexSource, const std::string &geometrySource, const std::string &fragmentSource);
~Shader();
GLuint getLocation(std::string attribName);

View File

@ -4,20 +4,24 @@
#
#-------------------------------------------------
QT += core
QT += core gui opengl widgets
TARGET = sparrowRenderer
Debug:TARGET = sparrowRendererDebug
Release:TARGET = sparrowRenderer
TEMPLATE = lib
CONFIG += c++11
CONFIG += c++11 staticlib
INCLUDEPATH += ../cpp_dependencies/include
win32 {
LIBS += -L../../cpp_dependencies/lib/win32
LIBS += -lopengl32 -lglew32 -lglu32
DESTDIR = $$PWD/../cpp_dependencies/lib/win32
LIBS += -L../../cpp_dependencies/lib/win32
LIBS += -lglew32 -lopengl32 -lglu32
}
unix {
LIBS += -L../../cpp_dependencies/lib/linux
LIBS += -lGL -lGLEW -lGLU
DESTDIR = $$PWD/../cpp_dependencies/lib/linux
LIBS += -L../../cpp_dependencies/lib/linux
LIBS += -lGL -lGLEW -lGLU
}
SOURCES += shader.cpp \

View File

@ -1,6 +1,6 @@
#include "sparrowrenderer.h"
#include <glew/glew.h>
#include <iostream>
#include "sparrowrenderer.h"
#include "glassert.h"
#include "camera.h"
#include "basicmodule.h"