问题描述
我在一个简单的项目上苦苦挣扎,作为示例/沙箱,我在我的输出上渲染了一个小的振荡矩形。我没有使用 glclearcolor() 而是在每一帧我先画一个黑色矩形,与 glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
我的目标是在我使用之前帧的黑色矩形反馈的 alpha 进行游戏时,看到慢慢淡出,出现某种轨迹,并且或多或少起作用。
不过,我的主要问题是,这条小路从来没有真正消失过,而且我试图找到这条小路的时间越长,情况就越糟。另外,在看到任何踪迹之前,我必须完全启动 alpha,我真的不明白为什么。
解决方法
default OpenGL framebuffer 的每个颜色分量仅使用 8 位。您可以通过使用由浮点数或 16 位或 32 位组件支持的自定义 framebuffer 来增加这一点。
,我不确定不使用 glClearColor 是否是实现运动轨迹的正确方法。 alpha 混合的最后一点可能会遇到精度/舍入问题,其中 0.9 * 0x01 可能会返回 0x01(对于每个 rgba 八位字节)。 (虽然我会很惊讶你能看到差异,但谁知道呢)。如果不是这种情况,我会切换到一个合适的 glClearColor,然后创建一个类似于你做前导框的盒子的轨迹,确定性的衰减/资源释放。