1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
| #include <stdio.h>
#include <GL/glew.h>
#include <GL/glut.h>
#include <assert.h>
static int make_resources(void)
{
return 1;
}
static void update_fade_factor(void)
{
}
static void render(void)
{
glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
float vertex_data [] = {
// v1
0, 0, 0,
// Color
1,1,1,
// Normal
0,0,1,
// v2
0, 0, 1,
// Color
1,1,1,
// Normal
0,0,1,
// v3
1, 0, 0,
// Color
1,1,1,
// Normal
0,0,1,
};
int data_size_in_bytes = sizeof(vertex_data);
GLvoid * data_vertices = (GLvoid *)vertex_data;
// buffer avec vertex
GLuint vertex_buffer; // Save this for later rendering
glGenBuffers(1, &vertex_buffer);
glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer);
glBufferData(GL_ARRAY_BUFFER, data_size_in_bytes, data_vertices, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
// màj partie
//glBufferSubData(GL_ARRAY_BUFFER, 0, data_size_in_bytes, data_vertices);
GLint size = 0;
glGetBufferParameteriv(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, &size);
if(data_size_in_bytes != size)
{
glDeleteBuffers(1, &vertex_buffer);
// Log the error
return;
}
// vertex
// fragment shader
const char *fragmentShader = "precision highp float;\nuniform vec4 colorparams;\n"
"void main(void)\n"
"{\n"
" gl_FragColor = colorparams;\n"
"}\n";
GLuint fragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER);
glCompileShader(fragmentShaderID);
glCompileShader(fragmentShaderID);
int ok;
glGetShaderiv(fragmentShaderID, GL_COMPILE_STATUS, &ok);
assert(ok);
// shader ???
GLubyte indices[] = {0,1,2};
glDrawElements(GL_TRIANGLES,
3,
GL_UNSIGNED_BYTE,
&indices);
glutSwapBuffers();
// vertex shader + link program
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
glutInitWindowSize(400, 300);
glutCreateWindow("Hello World");
glutDisplayFunc(&render);
glutIdleFunc(&update_fade_factor);
glewInit();
printf("OpenGL version supported by this platform (%s): \n", glGetString(GL_VERSION));
if (!GLEW_VERSION_2_0) {
fprintf(stderr, "OpenGL 2.0 not available\n");
return 1;
}
if (!make_resources()) {
fprintf(stderr, "Failed to load resources\n");
return 1;
}
glutMainLoop();
return 0;
} |
Partager