WIP: GUI Toolkit

This commit is contained in:
2015-03-09 01:11:13 +01:00
parent ffbc59140a
commit 9d7dd452c7
24 changed files with 1003 additions and 134 deletions

View File

@@ -6,10 +6,9 @@
using namespace gl;
Overlay::Overlay(VBOManager& vboManager, std::vector<ovlVertexAttribs> const& vas,
Program& prog)
: vboManager_(vboManager), vbo_(vboManager_.alloc(sizeof(ovlVertexAttribs)*vas.size())),
prog_(prog), vaID_(0), vertices_(vas.size())
Overlay::Overlay(std::vector<ovlVertexAttribs> const& vas)
: vbo_(VBOManager::getInstance().alloc(sizeof(ovlVertexAttribs)*vas.size())),
vaID_(0), vertices_(vas.size())
{
glBindBuffer(GL_ARRAY_BUFFER, vbo_.getVBOId());
glBufferSubData(GL_ARRAY_BUFFER, vbo_.getOfs(),
@@ -19,18 +18,16 @@ Overlay::Overlay(VBOManager& vboManager, std::vector<ovlVertexAttribs> const& va
glGenVertexArrays(1, &vaID_);
try {
glBindVertexArray(vaID_);
GLint al;
if((al = prog_.getAttribLocation("vertex")) != -1) {
glEnableVertexAttribArray(al);
glVertexAttribPointer(al, 2, GL_SHORT, GL_TRUE, sizeof(ovlVertexAttribs),
(void*)(vbo_.getOfs()+offsetof(ovlVertexAttribs, vertex)));
}
if((al = prog_.getAttribLocation("vertexTC")) != -1) {
glEnableVertexAttribArray(al);
glVertexAttribPointer(al, 2, GL_UNSIGNED_SHORT, GL_TRUE,
sizeof(ovlVertexAttribs),
(void*)(vbo_.getOfs()+offsetof(ovlVertexAttribs, texCoords)));
}
glEnableVertexAttribArray(ATTRIB_VERTEX_POS);
glVertexAttribPointer(ATTRIB_VERTEX_POS, 2, GL_SHORT, GL_FALSE,
sizeof(ovlVertexAttribs),
(void*)(vbo_.getOfs()+offsetof(ovlVertexAttribs, vertex)));
glEnableVertexAttribArray(ATTRIB_VERTEX_TC);
glVertexAttribPointer(ATTRIB_VERTEX_TC, 2, GL_UNSIGNED_SHORT, GL_TRUE,
sizeof(ovlVertexAttribs),
(void*)(vbo_.getOfs()+offsetof(ovlVertexAttribs, texCoords)));
} catch(...) {
glDeleteVertexArrays(1, &vaID_);
throw;
@@ -42,12 +39,9 @@ Overlay::~Overlay()
glDeleteVertexArrays(1, &vaID_);
}
void Overlay::draw(Program *override) const
void Overlay::draw() const
{
glBindVertexArray(vaID_);
if (override)
override->use();
else
prog_.use();
glDrawArrays(GL_TRIANGLES, 0, vertices_);
}