使用glew库和freeglut库。VS2013编译
#include <GL/glew.h>
#include <GL/freeglut.h>
//顶点数据
GLfloat vertices[] = {
-0.5f, -0.5f, 0.0f,//x,y,z顶点位置
0.5f, -0.5f, 0.0f,
0.5f, 0.5f, 0.0f,
};
//全局变量VAO, VBO
GLuint VAO, VBO;
void init() {
// 创建VAO VBO
glGenVertexArrays(1, &VAO);
glGenBuffers(1, &VBO);
// 绑定VBO
glBindVertexArray(VAO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
// 设置VBO数据
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
// 配置顶点指针
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
//开启VAO属性值
glEnableVertexAttribArray(0);
//解绑VAO VBO
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindVertexArray(0);
}
void display() {
//设置清除颜色
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
//清除背景
glClear(GL_COLOR_BUFFER_BIT);
// 绘制三角形
glBindVertexArray(VAO);
glDrawArrays(GL_TRIANGLES, 0, 3);
//刷新
glFlush();
}
int main(int argc, char** argv) {
//初始化glut
glutInit(&argc, argv);
//设置窗体显示模式
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
//窗体大小
glutInitWindowSize(800, 600);
//窗体名称
glutCreateWindow("OpenGL VBO Demo");
//初始化glew库
glewInit();
//调用init函数
init();
//注册显示函数
glutDisplayFunc(display);
//opengl主循环
glutMainLoop();
return 0;
}
效果
