WIP: GUI Toolkit
This commit is contained in:
36
Overlay.cc
36
Overlay.cc
@@ -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_);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user