2

我第一次尝试使用 OpenGL。我正在网上查看一些代码,然后尝试编写自己的代码,但我总是得到一个空(透明)窗口。(我使用 GLUT 打开窗口)。

我以为我做错了什么,所以我将代码从这里复制到我的 C 源代码中,我的窗口仍然是透明的。此外,glClearColor()的alpha参数似乎没有任何效果。相反,alpha 值似乎redgreenblue参数决定。

glClearColor(0, 0, 0, 0)
glClearColor(0, 0, 0, 1)
在此处输入图像描述

glClearColor(1, 0, 0, 0)
glClearColor(1, 0, 0, 1)
在此处输入图像描述

glClearColor(1, 1, 0, 0)
glClearColor(1, 1, 0, 1)
在此处输入图像描述

glClearColor(1, 0, 0, 0)
glClearColor(1, 0, 0, 1)
在此处输入图像描述

alpha参数不会改变结果。

我使用 Ubuntu 12.04 LTS,libgl1-mesa-dev

这是一个错误还是我做错了什么?

4

2 回答 2

7

GLUT 默认情况下不请求 alpha 缓冲区,我怀疑您所看到的可能是窗口透明度的故障安全、临时实现。尝试添加:

glutInitDisplayMode(GLUT_RGBA | GLUT_ALPHA);

在其他 GLUT 初始化调用附近。请记住此功能,因为如果/当您需要深度或模板缓冲区或双缓冲时,您需要再次修改调用。

于 2012-08-29T10:14:36.147 回答
1

在显示模式下使用 glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB)

于 2016-10-06T09:48:49.510 回答