initial logo.draw() attempt

This commit is contained in:
Josh Holtrop 2013-11-17 18:28:25 -05:00
parent a41cd245a9
commit f328282289

View File

@ -1,3 +1,4 @@
import derelict.opengl3.gl3;
import glamour.vao;
import glamour.vbo;
static import logoobj;
@ -8,30 +9,43 @@ immutable enum int WIRE = 1;
immutable enum int GENTEX = 0;
immutable enum int CORPORATION = 1;
int[][][][][] object_indices;
/* Indexed by: face/wire, word, character */
VAO[][2][2] object_vaos;
void init()
{
object_indices = [[logoobj.fg, logoobj.fc], [logoobj.lg, logoobj.lc]];
Buffer vertices_buffer = new Buffer(logoobj.vertices);
int[][][][] objects = [logoobj.fg, logoobj.fc, logoobj.lg, logoobj.lc];
int objects_index;
for (int draw_type = FACE; draw_type <= WIRE; draw_type++)
{
for (int word = GENTEX; word <= CORPORATION; word++)
{
object_vaos[draw_type][word].length = objects[objects_index].length;
object_vaos[draw_type][word].length = object_indices[draw_type][word].length;
for (int char_index = 0;
char_index < objects[objects_index].length;
char_index < object_indices[draw_type][word].length;
char_index++)
{
VAO vao = new VAO();
vao.bind();
vertices_buffer.bind();
ElementBuffer ibo = new ElementBuffer(objects[objects_index][char_index]);
ElementBuffer ibo = new ElementBuffer(object_indices[draw_type][word][char_index]);
ibo.bind();
object_vaos[draw_type][word][char_index] = vao;
}
objects_index++;
}
}
}
void draw(int draw_type, int word, int character, GLint position_idx)
{
object_vaos[draw_type][word][character].bind();
glEnableVertexAttribArray(position_idx);
glVertexAttribPointer(position_idx, 2, GL_FLOAT, GL_FALSE, 0, null);
glDrawElements(draw_type == FACE ? GL_TRIANGLES : GL_LINES,
object_indices[draw_type][word].length,
GL_UNSIGNED_INT,
null);
}