9 Program *getUtilProg() { return utilProg; }
12 utilProg = new Program("plainvertex.glsl", "plainfrag.glsl");
14 glGenVertexArrays(1, &utilVao);
16 glBindVertexArray(utilVao);
17 glGenBuffers(1, &vbo);
18 glBindBuffer(GL_ARRAY_BUFFER, vbo);
19 glBufferData(GL_ARRAY_BUFFER, sizeof(pyramid), pyramid, GL_STATIC_DRAW);
20 GLuint posLoc = glGetAttribLocation(utilProg->progId, "vPosition");
21 glEnableVertexAttribArray(posLoc);
22 glVertexAttribPointer(posLoc, 3, GL_FLOAT, GL_FALSE, 0, 0);
24 if (glGetError()) abort();
27 void drawDebugNode(glm::mat4 model, glm::vec4 color) {
28 GLint prevProg; glGetIntegerv(GL_CURRENT_PROGRAM, &prevProg);
30 glUseProgram(utilProg->progId);
32 glDepthRange(0, 0.01);
34 glBindVertexArray(utilVao);
35 model = glm::scale(model, {0.1, 0.3, 0.1});
36 GLuint modelLoc = glGetUniformLocation(utilProg->progId, "model");
37 glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(model));
39 GLuint colorLoc = glGetUniformLocation(utilProg->progId, "color");
40 glUniform4fv(colorLoc, 1, glm::value_ptr(color));
42 glDrawArrays(GL_TRIANGLES, 0, 36);
46 glUseProgram(prevProg);
49 void printMatrix4x4(aiMatrix4x4 m) {
50 fprintf(stderr, "%f, %f, %f, %f\n", m.a1, m.a2, m.a3, m.a4);
51 fprintf(stderr, "%f, %f, %f, %f\n", m.b1, m.b2, m.b3, m.b4);
52 fprintf(stderr, "%f, %f, %f, %f\n", m.c1, m.c2, m.c3, m.c4);
53 fprintf(stderr, "%f, %f, %f, %f\n", m.d1, m.d2, m.d3, m.d4);
56 void printVec3(glm::vec3 v) {
57 fprintf(stderr, "{ %f, %f, %f }\n", v[0], v[1], v[2]);