计算机图形学(一)——创建一个窗口

创建一个窗口

刚接触计算机图形学,首先是配置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;    
}

运行结果

在这里插入图片描述
如果出现上图的窗口且程序没有报错,说明创建成功。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值