Implemented logging utilities

This commit is contained in:
2025-07-28 08:29:53 -04:00
parent 7d8f4561eb
commit c8b5a5ebd4
16 changed files with 138 additions and 26 deletions

View File

@@ -11,4 +11,5 @@ target_include_directories(${PROJECT_NAME}
target_link_libraries(${PROJECT_NAME}
GLEW::GLEW
UglyLogLib
)

View File

@@ -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;
};
}

View File

@@ -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;