Started working on Renderer

This commit is contained in:
Tobias Dahl
2014-03-03 16:26:58 +01:00
parent 2594fdc792
commit 68f4be5822
6 changed files with 135 additions and 0 deletions
+6
View File
@@ -89,6 +89,7 @@
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="main.cpp" /> <ClCompile Include="main.cpp" />
<ClCompile Include="Renderer.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="Component.h" /> <ClInclude Include="Component.h" />
@@ -97,8 +98,13 @@
<ClInclude Include="Entity.h" /> <ClInclude Include="Entity.h" />
<ClInclude Include="logging.h" /> <ClInclude Include="logging.h" />
<ClInclude Include="glerror.h" /> <ClInclude Include="glerror.h" />
<ClInclude Include="Renderer.h" />
<ClInclude Include="World.h" /> <ClInclude Include="World.h" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Include="Fragment.glsl" />
<None Include="Vertex.glsl" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
@@ -16,11 +16,23 @@
<Filter Include="Header Files\Components"> <Filter Include="Header Files\Components">
<UniqueIdentifier>{9af04489-86da-41b7-aaba-12d5b6653660}</UniqueIdentifier> <UniqueIdentifier>{9af04489-86da-41b7-aaba-12d5b6653660}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\Renderer">
<UniqueIdentifier>{7abbf0e9-8bda-475e-bf00-a347f396b892}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\Renderer">
<UniqueIdentifier>{091f6f01-79ab-4a49-9639-c7185e89c84e}</UniqueIdentifier>
</Filter>
<Filter Include="Shaders">
<UniqueIdentifier>{26dccea6-3d9c-4d5f-9db2-98621e35ffcb}</UniqueIdentifier>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="main.cpp"> <ClCompile Include="main.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="Renderer.cpp">
<Filter>Source Files\Renderer</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="glerror.h"> <ClInclude Include="glerror.h">
@@ -44,5 +56,16 @@
<ClInclude Include="ComponentFactory.h"> <ClInclude Include="ComponentFactory.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Renderer.h">
<Filter>Header Files\Renderer</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="Fragment.glsl">
<Filter>Shaders</Filter>
</None>
<None Include="Vertex.glsl">
<Filter>Shaders</Filter>
</None>
</ItemGroup> </ItemGroup>
</Project> </Project>
View File
+68
View File
@@ -0,0 +1,68 @@
#include "Renderer.h"
Renderer::Renderer()
{
}
void Renderer::PushVertices(std::vector<float> _Verts)
{
Vertices.push_back(_Verts);
}
void Renderer::PushNormals(std::vector<float> _Normals)
{
Normals.push_back(_Normals);
}
void Renderer::PushTextureCoords(std::vector<float> _Textcords)
{
TextureCoords.push_back(_Textcords);
}
//Fixa med shaders, lägga in alla verts osv.
GLuint Renderer::CompileShader(GLenum shaderType, std::string fileName)
{
std::string shaderFile;
std::ifstream in(fileName, std::ios::in);
if(!in)
{
LOG_ERROR("Error: Failed to open shader file %s", fileName);
return 0;
}
in.seekg(0, std::ios::end);
shaderFile.resize((int)in.tellg());
in.seekg(0, std::ios::beg);
in.read(&shaderFile[0], shaderFile.size());
in.close();
GLuint shader = glCreateShader(shaderType); //GL_VERTEX_SHADER, GL_FRAGMENT_SHADER
if(GLERROR("glCreateShader"))
return 0;
const GLchar* shaderFiles = shaderFile.c_str();
const GLint length = shaderFile.length();
glShaderSource(shader, 1, &shaderFiles, &length);
if(GLERROR("glShaderSource"))
return 0;
glCompileShader(shader);
GLint compileStatus;
glGetShaderiv(shader, GL_COMPILE_STATUS, &compileStatus);
if(compileStatus != GL_TRUE)
{
GLsizei infoLogLength;
glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLogLength);
GLchar* infolog = new GLchar[infoLogLength];
glGetShaderInfoLog(shader, infoLogLength, &infoLogLength, infolog);
std::cerr << infolog << std::endl;
delete[] infolog;
}
if(GLERROR("glCompileShader"))
return 0;
return shader;
}
+38
View File
@@ -0,0 +1,38 @@
#include <string>
#include <fstream>
#include <iostream>
#include <sstream>
#include <vector>
#define _CRT_SECURE_NO_WARNINGS
#include <GL/glew.h>
#define GLFW_INCLUDE_GLU
#include <GLFW/glfw3.h>
#include <glext.h>
#define GLM_FORCE_RADIANS
#include <glm/glm.hpp>
#include <glm/gtc/constants.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
#include "glerror.h"
class Renderer
{
public:
GLuint shaderProgram;
GLuint VAO;
Renderer();
std::vector<std::vector<float>> Vertices;
std::vector<std::vector<float>> Normals;
std::vector<std::vector<float>> TextureCoords;
void PushVertices(std::vector<float>);
void PushNormals(std::vector<float>);
void PushTextureCoords(std::vector<float>);
GLuint CompileShader(GLenum, std::string);
};
View File