#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <process.h>
#include <iostream>
using namespace std;
void processInput(GLFWwindow *window);
int main()
{
glfwInit();
//设置主版本号和次版本号都为3
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
//使用的是核心模式,不再需要向后兼容
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
////获得版本号
//int major, minor, rev;
//glfwGetVersion(&major, &minor, &rev);
//printf("", major, minor, rev);
//绘制一个窗口,渲染在窗口中进行。不涉及OpenGL。所以后面用到OpenGL渲染时才用GLAD定位
GLFWwindow * window = glfwCreateWindow(800, 600, "window", NULL, NULL);
if (window == NULL)
{
cout << "Failed to create GLFW window" << endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
//用GLAD管理OpenGl的函数指针,调用任何OpenGL函数之前要初始化。
//因为OpenGL有特别多的版本,而硬件版本也有很多,就需要GLAD来将他们联系在一起。
//int gladLoadGLLoader(GLADloadproc load):任何的OpenGL接口调用都必须在初始化GLAD库后才可以正常访问。如果成功的话,该接口将返回GL_TRUE,否则就会返回GL_FALSE。
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
cout << "Failed to initialize GLAD" << endl;
return -1;
}
//前两个参数为左下角坐标,即OpenGL渲染窗口大小:视口(viewport)
glViewport(0, 0, 800, 600);
//while让GLFW一直保持运行,能不断接受我们的输入来绘制图像
while (!glfwWindowShouldClose(window))
{
//输入
//processInput(window);
//渲染命令
//在每个新的渲染开始前,我们都需要清屏。通过调用glClear来清屏。他接受一个缓冲位(buffer_bit)来指定要清空的缓存。可能的缓冲位有3种
//清屏后所有颜色都被填充位glClearColor中的颜色
glClearColor(0, 2, 2 ,1);
glClear(GL_COLOR_BUFFER_BIT);
//检查有没有什么触发事件(键盘输入等),更新窗口状态等
glfwPollEvents();
//交换颜色缓冲(十一个存储着GLFW窗口每一个像素颜色的大缓冲)
//双缓冲机制
glfwSwapBuffers(window);
}
//释放资源用
glfwTerminate();
return 0;
};
//用于管理窗口和视口大小的
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
glViewport(0, 0, width, height);
}
OpenGL初体验~