Added Shader
This commit is contained in:
parent
0724c6a84a
commit
a9106ee20e
@ -195,6 +195,7 @@
|
||||
<ClCompile Include="src\IntroGamestate.cpp" />
|
||||
<ClCompile Include="src\Renderer\IndexBuffer.cpp" />
|
||||
<ClCompile Include="src\Renderer\Renderer.cpp" />
|
||||
<ClCompile Include="src\Renderer\Shader.cpp" />
|
||||
<ClCompile Include="src\Renderer\VertexArray.cpp" />
|
||||
<ClCompile Include="src\Renderer\VertexBuffer.cpp" />
|
||||
<ClCompile Include="src\Utility.cpp" />
|
||||
@ -208,6 +209,7 @@
|
||||
<ClInclude Include="src\include\Input.h" />
|
||||
<ClInclude Include="src\include\NothinFancy.h" />
|
||||
<ClInclude Include="src\include\Renderer.h" />
|
||||
<ClInclude Include="src\include\Shader.h" />
|
||||
<ClInclude Include="src\include\Utility.h" />
|
||||
<ClInclude Include="src\include\VertexArray.h" />
|
||||
<ClInclude Include="src\include\VertexBuffer.h" />
|
||||
|
@ -36,6 +36,9 @@
|
||||
<ClCompile Include="src\Renderer\VertexArray.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Renderer\Shader.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="src\include\Config.h">
|
||||
@ -71,6 +74,9 @@
|
||||
<ClInclude Include="src\include\VertexArray.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\include\Shader.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Natvis Include="NatvisFile.natvis" />
|
||||
|
@ -43,9 +43,6 @@ namespace nf {
|
||||
wglMakeCurrent(m_hdc, m_hglrc);
|
||||
wglSwapIntervalEXT(0);
|
||||
Log("OpenGL version: " + std::string((char*)glGetString(GL_VERSION)));
|
||||
GLuint vao;
|
||||
glGenVertexArrays(1, &vao);
|
||||
glBindVertexArray(vao);
|
||||
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
}
|
||||
|
||||
|
49
NothinFancy/src/Renderer/Shader.cpp
Normal file
49
NothinFancy/src/Renderer/Shader.cpp
Normal file
@ -0,0 +1,49 @@
|
||||
#include "Shader.h"
|
||||
|
||||
namespace nf {
|
||||
Shader::Shader(const char* vertexSource, const char* fragmentSource) {
|
||||
m_id = glCreateProgram();
|
||||
unsigned int vs = glCreateShader(GL_VERTEX_SHADER);
|
||||
unsigned int fs = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
glShaderSource(vs, 1, &vertexSource, nullptr);
|
||||
glShaderSource(fs, 1, &fragmentSource, nullptr);
|
||||
glCompileShader(vs);
|
||||
glCompileShader(fs);
|
||||
for (int i = 0; i < 2; i++) {
|
||||
unsigned int curr = (i == 0 ? vs : fs);
|
||||
int result;
|
||||
glGetShaderiv(curr, GL_COMPILE_STATUS, &result);
|
||||
if (result != GL_TRUE) {
|
||||
int length;
|
||||
glGetShaderiv(curr, GL_INFO_LOG_LENGTH, &length);
|
||||
char* message = new char[length];
|
||||
glGetShaderInfoLog(curr, length, &length, message);
|
||||
message[length - 2] = 0;
|
||||
Error(("OpenGL Error: " + (std::string)message).c_str());
|
||||
}
|
||||
}
|
||||
glAttachShader(m_id, vs);
|
||||
glAttachShader(m_id, fs);
|
||||
glLinkProgram(m_id);
|
||||
glValidateProgram(m_id);
|
||||
int result;
|
||||
glGetProgramiv(m_id, GL_VALIDATE_STATUS, &result);
|
||||
if (result != GL_TRUE) {
|
||||
int length;
|
||||
glGetProgramiv(m_id, GL_INFO_LOG_LENGTH, &length);
|
||||
char* message = new char[length];
|
||||
glGetProgramInfoLog(m_id, length, &length, message);
|
||||
Error(("OpenGL Error: " + (std::string)message).c_str());
|
||||
}
|
||||
glDeleteShader(vs);
|
||||
glDeleteShader(fs);
|
||||
}
|
||||
|
||||
void Shader::bind() {
|
||||
glUseProgram(m_id);
|
||||
}
|
||||
|
||||
Shader::~Shader() {
|
||||
glDeleteProgram(m_id);
|
||||
}
|
||||
}
|
@ -14,7 +14,8 @@ namespace nf {
|
||||
VertexArray::VertexArray(const void* bufferData, size_t bufferSize) :
|
||||
m_id(0),
|
||||
m_vb(bufferData, bufferSize),
|
||||
m_hasLayout(false)
|
||||
m_hasLayout(false),
|
||||
m_vertexStride(0)
|
||||
{
|
||||
glGenVertexArrays(1, &m_id);
|
||||
}
|
||||
|
20
NothinFancy/src/include/Shader.h
Normal file
20
NothinFancy/src/include/Shader.h
Normal file
@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
#ifdef NFENGINE
|
||||
#include "GL/glew.h"
|
||||
#endif
|
||||
|
||||
#include "Utility.h"
|
||||
|
||||
namespace nf {
|
||||
class Shader {
|
||||
public:
|
||||
Shader(const char* vertexSource, const char* fragmentSource);
|
||||
|
||||
void bind();
|
||||
|
||||
~Shader();
|
||||
private:
|
||||
unsigned int m_id;
|
||||
//Associated resource?
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user