[OpenGL] 一.简易上手创建第一个Window窗口
学习于LearnOpenGl 开了个学习图形学的新坑!
首先要提前准备好两个文件glew-2.1.0-win32.zip、glfw-3.2.1.bin.WIN32.zip
文件已放于github请自行下载
一.配置头文件
在VS中创建一个新的C++ Windows 控制台应用程序 ,然后打开"解决方案资源管理器",如图创建的项目右键"属性"
进去后,记得先把"配置"和"平台"改为"所有配置"和"所有平台",然后如下图配置即可
1.
2.
3.
上述配置完成后,即可引入头文件了!
二.创建我们第一个window窗口
直接上代码了,有详细的注释解释代码的意思
#define GLEW_STATIC //使用静态链接库
#include<GL/glew.h>
#include<GLFW/glfw3.h>
#include<iostream>
//回调函数
void processInput(GLFWwindow* window) {
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) {//按住Escape键
glfwSetWindowShouldClose(window, true);//退出窗口
}
}
int main() {
//固定格式
glfwInit();//初始化GLFW库
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//定义最高版本为3
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//定义最低版本为3
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
//Open GLFW Window
GLFWwindow* window = glfwCreateWindow(800, 600, "My OpenGL Game", NULL, NULL);//创建一个窗口800×600 第三个参数为标题名
if (window == NULL)
{
printf("Open window failed.");
glfwTerminate();//关闭中止窗口
return -1;
}
glfwMakeContextCurrent(window); //选择当前的window作为主线程
//Init GLEW
glewExperimental = true;//能让GLEW在管理OpenGL的函数指针时更多地使用现代化的技术
if (glewInit() != GLEW_OK)
{
printf("Init GLEW failed");
glfwTerminate();
return -1;
}
glViewport(0, 0, 800, 600);//前两个参数是窗口的左下角的位置,后两个参数设置宽高
//为了不让我们的程序花了一个简单的图像就立即退出或者关闭窗口,我们需要创建一个渲染循环(render loop)
while (!glfwWindowShouldClose(window))
{
//输入
processInput(window);
glClearColor(1.0f, 1.0F, 0, 1.0f);//当调用glClear()清除颜色缓冲之后,整个颜色缓冲会被填充为设置里的颜色
glClear(GL_COLOR_BUFFER_BIT);//清空颜色缓冲
glfwSwapBuffers(window);//分为front buffer和back buffer,front buffer解决最终输出在屏幕上的图片,
//在渲染的时候都是在back buffer中进行,一旦渲染指令完成了,就交换back buffer和front buffer完成目标
glfwPollEvents();//接受用户的交互操作指令
}
glfwTerminate();//释放GLFW分配的内存
return 0;
}
运行一下:
黄色的原因是glClearColor(1.0f,1.0f,0,1.0f) 四个参数分别代表rgba:red,green,blue,alpha,红+绿=黄