OpenGL之旅(2)简单的创建一个窗口

title: OpenGL(2)窗口
date: 2020-06-28 10:07
category: 图形学
tags: opengl
链接:OpenGL(2)窗口

1. 视口

在开始渲染之前有一件重要的事情要做,就是告诉OpenGL渲染窗口的尺寸大小,即视口(Viewport).
这样OpenGL才能知道怎样根据窗口大小来显示数据和坐标,通过glViewPort函数来设置窗口的维度

glViewPort(0,0,800,600);

glViewPort函数前两个参数控制窗口左下角的位置,第三个和第四个参数控制渲染窗口的宽度和高度(像素)。

OpenGL使用glViewport中定义的位置和宽高进行2D坐标的转换,将OpenGL中的位置坐标转换为屏幕坐标,假如OpenGL中的坐标(-0.5,0.5)被映射为屏幕中的坐标(200,450),处理过的OpenGL坐标范围只为-1到1,事实上就是将(-1,1)范围内的坐标映射到(0,800)和(0,600)

2. 渲染

2.1 渲染循环(Render Loop)

如果不希望只绘制一个图像之后,应用程序就立即退出并关闭窗口,希望在主动关闭它之前不断的绘制图像,并能接受用户输入,需要在程序中添加一个while循环,让窗口在退出前一直保持运行。

while(!glfwWindowShouldClose(window)){
	glfwSwapBuffers(windo);
	glfwPollEvents();
}
  • glfwWindowShouldClose:每次循环的开始前检查一次GLFW是否被要求退出,如果是函数返回true,然后渲染循环结束,之后关闭应用程序。

  • glfwSwapBuffers:交换颜色缓冲,用来绘制,并且作为输出显示到屏幕上

  • glfwPollEvents:检查触发什么事件、更新窗口状态,并调用对应的回调函数。

2.2 流程

将所有的渲染操作放在渲染循环中,让渲染指令在每次渲染循环迭代中都能被执行。


while(!glfwWindowShouldClose(window)){

	//输入
	processInput(window);

	//渲染指令

	//检查并调用事件,交换缓冲
	glfwPollEvents();
	glfwSwapBuffers(window);
}

设置清屏颜色以及清空颜色缓冲:为了加速渲染,避免看见上一次迭代的渲染结果;
glClear函数用来清空屏幕的颜色缓冲,接收一个缓冲位(Buffer bit)状态使用函数
其中
GL_DEPTH_BUFFER_BIT: 深度缓冲
GL_STENCIL_BUFFER_BIT: 模板缓冲
GL_COLOR_BUFFER_BIT: 颜色缓冲

glClearColor函数来设置清空屏幕所用的颜色,整个颜色缓冲都会被填充为glClearColor里面所设置的颜色。状态设置函数

glClearColor(0.3f,0.2f,0.3f,1.0f);
glClear(GL_COLOR_BUFFER_BIT);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值