【问题标题】:Double buffered sprite issue in OpenGLOpenGL中的双缓冲精灵问题
【发布时间】:2011-12-22 20:31:52
【问题描述】:

很遗憾,截图并不能重现问题,所以我必须解释一下。

我的角色是一个带有纹理的 QUAD。当我向任何方向移动这个角色时,像素的“后端”会出现绿色和红色的“余辉”或像素条。很难解释,但我假设这是双缓冲的问题。是否存在与移动精灵和尾随像素相关的已知问题?

【问题讨论】:

  • 并非如此,而且没有更多细节,很难诊断。在这一点上我唯一的猜测是你只使用纹理的一个子集(即你的 UV 不只是 0 和 1),并且你在绘制的矩形之外有一些彩色像素,并且由于双线性过滤,你瞥见他们。同样,没有任何信息,我们只能在黑暗中刺伤。
  • 我会调查此事。不幸的是,该问题的屏幕截图没有显示出来。
  • CRT 还是 LCD?如果是 LCD,像素刷新率是多少?
  • @Headspin:你是在重绘整个场景,还是只是想移动精灵而不重绘场景的其余部分?如果是后者,那是你的问题。在 OpenGL 中总是重绘整个东西。
  • 我在循环结束时重绘整个屏幕。

标签: c++ opengl sdl sprite


【解决方案1】:

此时我唯一的猜测是您只使用纹理的一个子集(即您的 UV 不只是 0 和 1),并且您在绘制的矩形之外有一些彩色像素,并且由于双线性过滤,您可以瞥见它们。

使用 alpha 创建纹理时,请务必在纹理的可见部分周围创建一个具有相同颜色的轮廓(即,如果您的纹理是棕色木栅栏,请确保栅栏附近的所有透明像素也是棕色的) .

请注意,如果像素完全透明,某些纹理压缩算法会从像素中移除颜色值,因此如有必要,请编写一个忽略 Alpha 的测试像素着色器,以确保您的纹理完好无损地通过管道。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 2012-09-07
    相关资源
    最近更新 更多