概述
创建一个窗口
刚接触计算机图形学,首先是配置GLEW, GLFW, SOIL2等环境,跟着网上的教程一步步来,比较容易上手。
首先需要创建一个窗口,就像是一张画画的纸,接下来的代码是上课内容的记录。
#include <iostream>
#define GLEW_STATIC
#include<GL/glew.h>
#include<GLFW/glfw3.h>
int main()
{
glfwInit();//初始化
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//括号中的第一个参数:要修改的参数
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
//窗口设置
glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);//GLFW_OPENGL_CORE_PROFILE)表示核心模式
/*
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT,
GL_TRUE);//for mac
*/
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);//GL_FALSE:不可改变窗口大小;若改成GL_TRUE,可以改变窗口的纵横比
int WIDTH = 800, HEIGHT = 600;//设置窗口的宽和高
//创建一个窗口对象
GLFWwindow* window = glfwCreateWindow(WIDTH, HEIGHT,
"Learn OpenGL ", nullptr, nullptr);
//retina diaplay
int screenWidth, screenHeight;
glfwGetFramebufferSize(window, &screenWidth, &screenHeight);//获得屏幕帧缓存大小
if (window == nullptr) {
std::cout << "Failed to creat GLFW window" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);//MakeContent:由于实际可以创建很多个窗口,而每次操作只能对一个窗口操作,所以该函数作用:针对当前窗口操作
glewExperimental = GL_TRUE;
if (glewInit() != GLEW_OK) {
std::cout << "Failed to initialize GLEW" << std::endl;
glfwTerminate();
return -1;
}
//画图操作
while (!glfwWindowShouldClose(window)) {//循环画图,在同样的位置画同样的东西
glViewport(0, 0, screenWidth, screenHeight);//glViewport放在while 里面,不然有些功能无法实现
//将显存中的图像映射到窗口中显示
glfwPollEvents();//如果有事件响应的话就从操作系统中获取,如鼠标响应、键盘响应
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);//颜色,浮点数获取,最后一个参数表示透明度,范围0~1
glClear(GL_COLOR_BUFFER_BIT);//清除颜色缓存
glfwSwapBuffers(window);//双缓存模式,在显示信号的过程中,可以画另一个窗口,画完以后可以切断前一个,显示另一个,大大提高的效率
}
glfwTerminate();//清理所有资源并退出
return 0;
}
运行结果
如果出现上图的窗口且程序没有报错,说明创建成功。
最后
以上就是轻松皮卡丘为你收集整理的计算机图形学(一)——创建一个窗口创建一个窗口的全部内容,希望文章能够帮你解决计算机图形学(一)——创建一个窗口创建一个窗口所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复