Implemented logging utilities
This commit is contained in:
@@ -11,4 +11,5 @@ target_include_directories(${PROJECT_NAME}
|
||||
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
GLEW::GLEW
|
||||
UglyLogLib
|
||||
)
|
||||
|
||||
@@ -7,12 +7,9 @@
|
||||
namespace ugly{
|
||||
|
||||
class ShaderProgramBuilder {
|
||||
public:
|
||||
class Error: public std::runtime_error{
|
||||
public:
|
||||
using std::runtime_error::runtime_error;
|
||||
};
|
||||
|
||||
private:
|
||||
GLuint mProgram;
|
||||
|
||||
public:
|
||||
ShaderProgramBuilder();
|
||||
~ShaderProgramBuilder();
|
||||
@@ -20,9 +17,6 @@ public:
|
||||
ShaderProgramBuilder &attachFromMemory(GLenum type, const GLchar *string, GLint length = 0);
|
||||
ShaderProgramBuilder &attachFromFile(GLenum type, const char *filename);
|
||||
GLuint link();
|
||||
|
||||
private:
|
||||
GLuint mProgram;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
#include "ShaderProgramBuilder.hpp"
|
||||
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <utility>
|
||||
|
||||
#include "LogUtils.hpp"
|
||||
|
||||
|
||||
ugly::ShaderProgramBuilder::ShaderProgramBuilder():
|
||||
mProgram{glCreateProgram()} {
|
||||
}
|
||||
mProgram{glCreateProgram()} {}
|
||||
|
||||
|
||||
ugly::ShaderProgramBuilder::~ShaderProgramBuilder() {
|
||||
@@ -20,7 +20,8 @@ ugly::ShaderProgramBuilder::~ShaderProgramBuilder() {
|
||||
|
||||
void ugly::ShaderProgramBuilder::reset() {
|
||||
using namespace std;
|
||||
swap(*this, ShaderProgramBuilder{});
|
||||
ShaderProgramBuilder b;
|
||||
swap(*this, b);
|
||||
}
|
||||
|
||||
|
||||
@@ -35,8 +36,7 @@ ugly::ShaderProgramBuilder &ugly::ShaderProgramBuilder::attachFromMemory(GLenum
|
||||
char buf[512];
|
||||
glGetShaderInfoLog(shader, 512, NULL, buf);
|
||||
glDeleteShader(shader);
|
||||
std::cerr << "Failed to compile shader:\n\t" << buf << '\n';
|
||||
throw Error{"shader failed to compile"};
|
||||
ugly::log("failed to compile shader:\n\t{}", buf);
|
||||
}
|
||||
|
||||
glAttachShader(mProgram, shader);
|
||||
@@ -48,8 +48,14 @@ ugly::ShaderProgramBuilder &ugly::ShaderProgramBuilder::attachFromMemory(GLenum
|
||||
ugly::ShaderProgramBuilder &ugly::ShaderProgramBuilder::attachFromFile(GLenum type, const char *filename) {
|
||||
auto file = std::filebuf{};
|
||||
auto ss = std::ostringstream{};
|
||||
ss.exceptions(std::ios_base::badbit);
|
||||
ss << file.open(filename, std::ios_base::in);
|
||||
|
||||
ugly::log("loading shader from file {}", filename);
|
||||
file.open(filename, std::ios_base::in);
|
||||
if(!file.is_open()) {
|
||||
ugly::log("couldn't open file {}", filename);
|
||||
}
|
||||
|
||||
ss << &file;
|
||||
return attachFromMemory(type, ss.str().c_str());
|
||||
}
|
||||
|
||||
@@ -62,8 +68,7 @@ GLuint ugly::ShaderProgramBuilder::link() {
|
||||
if(status != GL_TRUE) {
|
||||
char buf[512];
|
||||
glGetProgramInfoLog(mProgram, 512, NULL, buf);
|
||||
std::cerr << "Failed to link program:\n\t" << buf << '\n';
|
||||
throw Error{"program failed to link"};
|
||||
ugly::log("failed to link program:\n\t{}", buf);
|
||||
}
|
||||
|
||||
auto result = mProgram;
|
||||
|
||||
Reference in New Issue
Block a user