Huge graphics overhaul
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user