环境
glfw+glad
参考
主要参考这篇文章:OpenGL编译环境,过程按这个来就行,这里只是自己整理一下。
GLFW编译
下载源码后,直接CMake,目标文件路径设置为build,然后Configure,在Generate即可,打开生成的sln,批生成,选择ALL_BUILD的Release和Debug。生成即可,结果如下:
测试注意
测试第二段代码时需要将glad.c添加进工程中。
其他测试例子
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
float vertices[] = {
-0.5f,-0.5f,0.0f,//left
0.5f,-0.5f,0.0f,//right
0.0f,0.5f,0.0f//top
};
GLFWwindow* window;
void init()
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
window = glfwCreateWindow(800, 600, "hht", NULL, NULL);
if (window == NULL)
{
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return ;
}
glfwMakeContextCurrent(window);
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) //初始化glad
{
std::cout << "faild to initialize GLAD" << std::endl;
return ;
}
}
void VAOSet()
{
unsigned int VBO, VAO;
glGenVertexArrays(1, &VAO);
glGenBuffers(1, &VBO);
glBindVertexArray(VAO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
//往显卡写值,分配显存空间,GL_STATIC_DRAW表示,值不修改
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices,GL_STATIC_DRAW );//放到VBO里面,大小,内容是什么
//告诉显卡,值的结构
glVertexAttribPointer(0,3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (GLvoid*)0);
glEnableVertexAttribArray(0);
}
int main()
{
init();
//渲染引擎
VAOSet();
while (!glfwWindowShouldClose(window))
{
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glDrawArrays(GL_TRIANGLES, 0, 3);//画三角
glfwPollEvents();
glfwSwapBuffers(window);
}
//退出
glfwTerminate();
return 0;
}
效果:
也可参考其他文章: