-1

我在一个简单的项目上苦苦挣扎,作为一个例子/沙箱,我在我的输出上渲染一个小的振荡矩形。我没有使用glclearcolor()而是在每一帧上我先画一个黑色矩形,然后与glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)混合;

我的目标是在我玩之前帧的这个黑色矩形反馈的 alpha 时看到,慢慢地褪色,某种轨迹,它或多或少是有效的。

不过,我的主要问题是,这条小路永远不会真正消失,而且我试图找到这条小路的时间越长,它变得越糟。另外,在看到任何踪迹之前,我必须完全启动 alpha,我真的不明白为什么。

在此处输入图像描述

4

2 回答 2

1

默认的OpenGL 帧缓冲区只为每个颜色分量使用 8 位。您可以通过使用由浮点数或 16 位或 32 位组件支持的自定义帧缓冲区来增加此值。

于 2021-03-30T04:38:18.220 回答
0

我不确定不使用 glClearColor 是否是实现运动轨迹的正确方法。alpha 混合的最后一位可能会遇到精度/舍入问题,其中 0.9 * 0x01 可能会返回 0x01(对于每个 rgba 八位字节)。(虽然我会很惊讶你能看到差异,但谁知道呢)。如果不是这种情况,我会切换到适当的 glClearColor ,然后创建一个类似于你如何做前导框的框的轨迹,具有确定性的衰减/资源释放。

于 2021-03-30T04:32:49.843 回答