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
| #include "glew.h"
#include "glut.h"
#include <fstream>
#include <iostream>
using namespace std;
GLfloat vertices[] = {
-1.0, -1.0, 0.0,
1.0, -1.0, 0.0,
0.0, 1.0, 0.0};
GLuint VBO;
void renderScene()
{
glClearColor(0, 0, 255, 255);
glClear(GL_COLOR_BUFFER_BIT);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableVertexAttribArray(0);
glutSwapBuffers();
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowSize(1024, 768);
glutInitWindowPosition(100, 100);
glutCreateWindow("NICE ENGINE");
glewInit();
glGenBuffers(1, &VBO);
GLuint ShaderProgram = glCreateProgram();
GLuint shader1 = glCreateShader(GL_VERTEX_SHADER);
GLchar pShaderText[] = "#version 330";
//first compile VERTEX_SHADER
const GLchar* p[1];
p[0] = pShaderText;
GLint Lengths[1];
Lengths[0]= strlen(pShaderText);
glShaderSource(shader1, 1, p, Lengths);
glCompileShader(shader1);
GLint success;
glGetShaderiv(shader1, GL_COMPILE_STATUS, &success);
if (!success) {
GLchar InfoLog[1024];
glGetShaderInfoLog(shader1, sizeof(InfoLog), NULL, InfoLog);
cout << "Error compiling shader type : " << GL_VERTEX_SHADER << " " << InfoLog;
}
glAttachShader(ShaderProgram, shader1);
glGetProgramiv(ShaderProgram, GL_LINK_STATUS, &success);
if (success == 0) {
GLchar ErrorLog[1024];
glGetProgramInfoLog(ShaderProgram, sizeof(ErrorLog), NULL, ErrorLog);
cout << "Error linking shader program : " << " " << ErrorLog;
}
glValidateProgram(ShaderProgram);
glUseProgram(ShaderProgram);
glutDisplayFunc(renderScene);
glutMainLoop();
return 0;
} |
Partager