渲染 |
导言
在之前的教程中,屏幕上什么也没显示。本教程将说明如何设置你的OpenGL ES窗口开始简单的绘图。如果您使用GLUT|ES, 请咨询 GLUT 如何设置一个OpenGL程序渲染窗口,程序代码是类似的。另外,您可以下载此页面底部的示例源代码 。
当我们在屏幕上绘图时我们使用双缓冲区技术。当你绘图时,你会画在后面的缓冲区上,一旦所有的信息都被画好了后,交换缓冲区,然后开始在另一个缓冲区上绘图。这样做可以防止由于连续在一个缓冲区上清屏和重画造成的闪烁现象。
下面将更清楚地实现双缓冲技术。
在我们初始化函数里,我们调用了glClearColor. 这个函数用来指定窗口应该被清空填充为什么颜色。这个函数有4个参数。这些参数表示RGBA 颜色值,变化范围为 0 到 1.
前三个参数指示你的红,绿,蓝值。值越大,色彩越亮。如果所有值是0,则你得到黑色。如果所有值为1,你得到白色
最后一个参数为透明度。1.0f是完全不透明和0.0f是完全透明的。下面的代码设置清除色为黑色。
void init()
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
}
另一个需要改动的函数是我们的display函数。记住我们说过这个代码是每一帧都运行的。
void display(UGWindow uwin)
{
我们首先使用 glClear函数清除色彩缓冲区。这个函数接受一个参数,这个参数为你想清除的缓冲区。其他的缓冲区将在后面的章节讨论。现在,你只需要知道色彩缓冲区。这是用GL_COLOR_BUFFER_BIT标志来指定的。这会使屏幕清除为上面指定的黑色。
glClear(GL_COLOR_BUFFER_BIT);
当在OpenGL中显示图像时,OpenGL命令被缓冲到几个地方,例如网络的缓冲区或者图形加速卡。为了确保所有的命令已经执行,
才能继续,我们用glFlush函数。这个函数没有参数。它刷新所有的缓冲区,以确保所有的命令执行
glFlush();
记得我们说过在画完一帧之后,我们交换缓冲区并且开始画另一块。ugSwapBuffers 函数是用来完成这个的。它有一个参数来
指定必须交换缓冲区的UGWindow。
ugSwapBuffers(uwin); }
恭喜.如果你运行这个程序,你将看到一款黑色屏幕。
GLUT|ES Source Files : | ![]() | |
UG Source Files : | ![]() |