Huge graphics overhaul

This commit is contained in:
NaifBanana
2026-08-20 08:14:29 -05:00
parent 960689ecb6
commit 3bad580793
19 changed files with 1534 additions and 252 deletions
+18
View File
@@ -54,12 +54,14 @@ class Shader : public OpenGLObject {
using Base::Base;
using Base::id;
Shader(GLenum, const std::string&);
Shader(GLenum, const std::vector<std::string>&);
Shader(Shader&&);
Shader& operator=(Shader&&) = delete;
~Shader() { remove(); }
operator bool();
virtual void bind() const override { /* TODO: Some warning of some kind perhaps*/ }
virtual void unbind() const override { /* TODO: Some warning of some kind perhaps*/ }
bool success() const;
GLint status(GLenum) const;
std::string log() const;
const GLenum target;
@@ -68,6 +70,22 @@ class Shader : public OpenGLObject {
protected:
using Base::_id;
GLint _success;
std::vector<std::string> _sources;
virtual void compile() {
int num_srcs = _sources.size();
std::vector<char*> src_ptrs(num_srcs);
for (int i=0; i < num_srcs; ++i) {
src_ptrs[i] = _sources[i].data();
}
glShaderSource(_id, num_srcs, src_ptrs.data(), NULL);
glCompileShader(_id);
_success = status(GL_COMPILE_STATUS);
if (!_success) {
WARN(log(), 0x0FE);
}
}
virtual GLuint declare() override {
if (!_id) {
_id = _id = glCreateShader(target);