1
0
mirror of https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git synced 2025-08-23 12:45:29 +08:00

Replace html with tags

This commit is contained in:
Meow J
2015-07-11 21:09:55 +08:00
parent db7a0d06a5
commit 6edab0e657
7 changed files with 92 additions and 71 deletions

View File

@@ -11,8 +11,9 @@
// GLFW
#include <GLFW/glfw3.h>
```
!!! Attention
> 请确认在包含GLFW的头文件之前包含了GLEW的头文件。在包含glew.h头文件时会引入许多OpenGL必要的头文件例如GL/gl.h所以#include < GL/glew.h\>应放在引入其他头文件的代码之前。
请确认在包含GLFW的头文件之前包含了GLEW的头文件。在包含glew.h头文件时会引入许多OpenGL必要的头文件例如GL/gl.h所以#include <GL/glew.h>应放在引入其他头文件的代码之前。
接下来我们创建main函数并做一些初始化GLFW的操作
@@ -36,7 +37,10 @@ int main()
```c++
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
```
>请确认您的系统支持OpenGL3.3或更高版本否则此应用有可能会崩溃或者出现不可预知的错误。可以通过运行glew附带的glxinfo程序或者其他的工具例如[OpenGL Extension Viewer ](http://download.cnet.com/OpenGL-Extensions-Viewer/3000-18487_4-34442.html)来查看的OpenGL版本。如果您的OpenGL版本低于3.3请更新您的驱动程序或者有必要的话更新您的设备。
!!! Important
请确认您的系统支持OpenGL3.3或更高版本否则此应用有可能会崩溃或者出现不可预知的错误。可以通过运行glew附带的glxinfo程序或者其他的工具例如[OpenGL Extension Viewer ](http://download.cnet.com/OpenGL-Extensions-Viewer/3000-18487_4-34442.html)来查看的OpenGL版本。如果您的OpenGL版本低于3.3请更新您的驱动程序或者有必要的话更新您的设备。
接下来我们创建一个窗口对象这个窗口对象中具有关和窗口相关的许多数据而且会被GLFW的其他函数频繁地用到。
@@ -77,7 +81,9 @@ glViewport(0, 0, 800, 600);
```
前两个参数设置窗口左下角的位置。第三个和第四个参数设置渲染窗口的宽度和高度,我们设置成与GLFW的窗口的宽高大小我们也可以将这个值设置成比窗口小的数值然后所有的OpenGL渲染将会显示在一个较小的区域。
>OpenGL 使用glViewport定义的位置和宽高进行位置坐标的转换将OpenGL中的位置坐标转换为你的屏幕坐标。例如OpenGL中的坐标(0.5,0.5)有可能被转换为屏幕中的坐标(200,450)。注意OpenGL只会把-1到1之间的坐标转换为屏幕坐标因此在此例中(-11)转换为屏幕坐标是0,600
!!!Important
OpenGL 使用glViewport定义的位置和宽高进行位置坐标的转换将OpenGL中的位置坐标转换为你的屏幕坐标。例如OpenGL中的坐标(0.5,0.5)有可能被转换为屏幕中的坐标(200,450)。注意OpenGL只会把-1到1之间的坐标转换为屏幕坐标因此在此例中(-11)转换为屏幕坐标是0,600
###准备好你的引擎
@@ -95,9 +101,12 @@ while(!glfwWindowShouldClose(window))
* glfwPollEvents函数检查有没有触发什么事件比如键盘有按钮按下、鼠标移动等然后调用对应的回调函数我们可以手动设置这些回调函数。我们一般在游戏循环的一开始就检查事件。
* 调用glfwSwapBuffers会交换缓冲区储存着GLFW窗口每一个像素颜色的缓冲区
>双缓冲区
>应用程序使用单缓冲区绘图可能会存在图像闪烁的问题。 这是因为生成的图像不是一下子被绘制出来的,而是按照从左到右,由上而下逐像素地绘制而成的。因为这些不是在瞬间显示给用户,而是通过一步一步地计算结果绘制的,这可能会花费一些时间。为了规避这些问题,我们应用双缓冲区渲染窗口应用程序。前面的缓冲区保存着计算后可显示给用户的图像,被显示到屏幕上;所有的的渲染命令被传递到后台的缓冲区进行计算。当所有的渲染命令执行结束后,我们交换前台缓冲和后台缓冲,这样图像就立即呈显出来,之后清空缓冲区。
!!! Important
**双缓冲区**
应用程序使用单缓冲区绘图可能会存在图像闪烁的问题。 这是因为生成的图像不是一下子被绘制出来的,而是按照从左到右,由上而下逐像素地绘制而成的。因为这些不是在瞬间显示给用户,而是通过一步一步地计算结果绘制的,这可能会花费一些时间。为了规避这些问题,我们应用双缓冲区渲染窗口应用程序。前面的缓冲区保存着计算后可显示给用户的图像,被显示到屏幕上;所有的的渲染命令被传递到后台的缓冲区进行计算。当所有的渲染命令执行结束后,我们交换前台缓冲和后台缓冲,这样图像就立即呈显出来,之后清空缓冲区。
###最后一件事
@@ -167,7 +176,9 @@ glClear(GL_COLOR_BUFFER_BIT);
```
注意除了glClear之外我们还要调用glClearColor来设置要清空缓冲的颜色。当调用glClear函数之后整个指定清空的缓冲区都被填充为glClearColor所设置的颜色。在这里我们将屏幕设置为了类似黑板的深蓝绿色。
>你应该能够想起来我们在 [OpenGL]() 教程的内容, glClearColor函数是一个状态设置函数而glClear函数则是一个状态应用的函数。
!!! Important
你应该能够想起来我们在 [OpenGL]() 教程的内容, glClearColor函数是一个状态设置函数而glClear函数则是一个状态应用的函数。
![](http://learnopengl.com/img/getting-started/hellowindow2.png)