Continue adding opengl font support.
This commit is contained in:
parent
649079a5c7
commit
eef93efc29
37 changed files with 530 additions and 157 deletions
68
src/graphics/opengl/OpenGlShaderProgram.cpp
Normal file
68
src/graphics/opengl/OpenGlShaderProgram.cpp
Normal file
|
@ -0,0 +1,68 @@
|
|||
#include "OpenGlShaderProgram.h"
|
||||
|
||||
#include "File.h"
|
||||
#include "FileLogger.h"
|
||||
|
||||
#define GL_GLEXT_PROTOTYPES
|
||||
#include <GL/gl.h>
|
||||
#include <GL/glu.h>
|
||||
|
||||
OpenGlShaderProgram::OpenGlShaderProgram(const Path& vertShaderPath, const Path& fragShaderPath)
|
||||
{
|
||||
const auto vert_shader_source = File(vertShaderPath).read();
|
||||
const auto frag_shader_source = File(fragShaderPath).read();
|
||||
|
||||
unsigned int vertexShader = glCreateShader(GL_VERTEX_SHADER);
|
||||
|
||||
const char* vert_source = vert_shader_source.c_str();
|
||||
glShaderSource(vertexShader, 1, &vert_source, nullptr);
|
||||
glCompileShader(vertexShader);
|
||||
|
||||
int success;
|
||||
char infoLog[512];
|
||||
glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &success);
|
||||
if(!success)
|
||||
{
|
||||
glGetShaderInfoLog(vertexShader, 512, nullptr, infoLog);
|
||||
MLOG_ERROR("ERROR::SHADER::VERTEX::COMPILATION_FAILED: " << infoLog);
|
||||
if (auto errCode = glGetError(); errCode != GL_NO_ERROR)
|
||||
{
|
||||
auto errString = gluErrorString(errCode);
|
||||
MLOG_ERROR("Got gl error " << errString);
|
||||
}
|
||||
}
|
||||
|
||||
unsigned int fragmentShader;
|
||||
fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
const char* frag_source = frag_shader_source.c_str();
|
||||
glShaderSource(fragmentShader, 1, &frag_source, nullptr);
|
||||
glCompileShader(fragmentShader);
|
||||
|
||||
glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &success);
|
||||
if(!success)
|
||||
{
|
||||
glGetShaderInfoLog(fragmentShader, 512, NULL, infoLog);
|
||||
MLOG_ERROR("ERROR::SHADER::FRAGMENT::COMPILATION_FAILED: " << infoLog);
|
||||
}
|
||||
|
||||
mHandle = glCreateProgram();
|
||||
|
||||
glAttachShader(mHandle, vertexShader);
|
||||
glAttachShader(mHandle, fragmentShader);
|
||||
glLinkProgram(mHandle);
|
||||
|
||||
glGetProgramiv(mHandle, GL_LINK_STATUS, &success);
|
||||
if(!success)
|
||||
{
|
||||
glGetProgramInfoLog(mHandle, 512, NULL, infoLog);
|
||||
MLOG_ERROR("Shader linking FAILED: " << infoLog);
|
||||
}
|
||||
|
||||
glDeleteShader(vertexShader);
|
||||
glDeleteShader(fragmentShader);
|
||||
}
|
||||
|
||||
unsigned int OpenGlShaderProgram::getHandle() const
|
||||
{
|
||||
return mHandle;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue