【问题标题】:Draw a transparent framebuffer onto the default framebuffer [closed]在默认帧缓冲区上绘制透明帧缓冲区 [关闭]
【发布时间】:2021-11-27 21:22:34
【问题描述】:

我正面临这种情况,我需要将帧缓冲区对象的内容呈现到屏幕上。屏幕上已经有一些内容,我想将帧缓冲区的内容绘制到这些内容上。

我正在使用 Qt5 和 QNanoPainter 来实现它。

我实现的渲染命令基本上采用QOpenGLFramebufferObject 并将其转换为QNanoImage(使用this),然后调用QNanoPainter::drawImage

这可以正常工作,但问题是当 fbo 的内容被渲染到屏幕上时,屏幕先前存在的内容变得“像素化”。 例如,在我绘制 FBO 之前,屏幕是这样的

然后当我将 FBO 绘制到默认渲染目标上时,我得到了这个(红色是 FBO 的内容)

我认为这与混合和 OpenGL 有关,但我不确定如何解决这个问题。

【问题讨论】:

    标签: c++ qt opengl framebuffer


    【解决方案1】:

    当您在其自身上多次过度绘制半透明图像时会发生这种情况。白色像素变得更白,蓝色像素变得更蓝,因此,经过几次迭代,抗锯齿边缘消失了。

    因此,我推断您的“透明帧缓冲区”已经包含蓝线和黑网格线。因此,解决方案是在继续绘制红线之前清除“透明帧缓冲区”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 2014-12-05
      相关资源
      最近更新 更多