1 | #include "triangle.h"
|
2 | #include "shaders.h"
|
3 |
|
4 | #include "../util/shader.h"
|
5 |
|
6 | #include "config.h"
|
7 |
|
8 | #ifdef USE_GLES
|
9 | #include <GLES2/gl2.h>
|
10 | #include <GLES2/gl2ext.h>
|
11 | #else
|
12 | #include <GL/glew.h>
|
13 | #endif
|
14 |
|
15 | #include <stddef.h>
|
16 |
|
17 | #ifndef USE_GLES
|
18 | static GLuint sliTriangleVAO = 0;
|
19 | #endif
|
20 | static GLuint sliTriangleVBOs[1] = {0};
|
21 |
|
22 | void sliTriangleInit()
|
23 | {
|
24 | GLfloat vertices[] = {0.0f, 0.5f,
|
25 | -0.5f, -0.5f,
|
26 | 0.5f, -0.5f};
|
27 |
|
28 | // initialize our state object
|
29 | #ifndef USE_GLES
|
30 | glGenVertexArrays(1, &sliTriangleVAO);
|
31 | glBindVertexArray(sliTriangleVAO);
|
32 | #endif
|
33 | glGenBuffers(1, sliTriangleVBOs);
|
34 |
|
35 | // configure vertex data
|
36 | glBindBuffer(GL_ARRAY_BUFFER, sliTriangleVBOs[0]);
|
37 | glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 6, vertices, GL_STATIC_DRAW);
|
38 | glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, NULL);
|
39 | glEnableVertexAttribArray(0);
|
40 | }
|
41 |
|
42 | void sliTriangleDestroy()
|
43 | {
|
44 | glDeleteBuffers(1, sliTriangleVBOs);
|
45 | #ifndef USE_GLES
|
46 | glDeleteVertexArrays(1, &sliTriangleVAO);
|
47 | #endif
|
48 | }
|
49 |
|
50 | void sliTriangleOutline(Mat4 *modelview, Vec4 *color)
|
51 | {
|
52 | // prepare our shader object
|
53 | shaderBind(sliBasicShader);
|
54 | shaderUniformMatrix4fv(sliBasicShader, "u_Modelview" , 1, (float*)modelview);
|
55 | shaderUniform4f(sliBasicShader, "u_Color" , (float)color -> x, (float)color -> y, (float)color -> z, (float)color -> w);
|
56 |
|
57 | // bind appropriate object state and render the object
|
58 | #ifndef USE_GLES
|
59 | glBindVertexArray(sliTriangleVAO);
|
60 | #endif
|
61 | glBindBuffer(GL_ARRAY_BUFFER, sliTriangleVBOs[0]);
|
62 | #ifdef USE_GLES
|
63 | glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, NULL);
|
64 | #endif
|
65 | glDrawArrays(GL_LINE_LOOP, 0, 3);
|
66 | }
|
67 |
|
68 | void sliTriangleFill(Mat4 *modelview, Vec4 *color)
|
69 | {
|
70 | // prepare our shader object
|
71 | shaderBind(sliBasicShader);
|
72 | shaderUniformMatrix4fv(sliBasicShader, "u_Modelview" , 1, (float*)modelview);
|
73 | shaderUniform4f(sliBasicShader, "u_Color" , (float)color -> x, (float)color -> y, (float)color -> z, (float)color -> w);
|
74 |
|
75 | // bind appropriate object state and render the object
|
76 | #ifndef USE_GLES
|
77 | glBindVertexArray(sliTriangleVAO);
|
78 | #endif
|
79 | glBindBuffer(GL_ARRAY_BUFFER, sliTriangleVBOs[0]);
|
80 | #ifdef USE_GLES
|
81 | glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, (GLsizei)0, (char*)0);
|
82 | #endif
|
83 | glDrawArrays(GL_TRIANGLES, 0, 3);
|
84 | }
|
85 | |