繁体   English   中英

结合使用带有Qt的OpenGL帧缓冲区对象(QOpenGLWidget),如何在绘制到帧缓冲区时禁用多重采样

[英]Using OpenGL frame buffer objects with Qt (QOpenGLWidget), how to disable multisampling when drawing to frame buffer

如标题所示,我将Qt用于OpenGL绘图,并且可以使用QOpenGLWidget使用QSurfaceFormat的setSamples()函数打开主屏幕缓冲区的多重采样。 这工作正常,看起来非常不错。 但是,我还在后台绘制了一个自定义帧缓冲区(使用glGenFramebuffers,glBindFramebuffer()等),在此我不想进行抗锯齿(因为它使用颜色编码进行选择)将以某种方式从主QOpenGLWidget继承多采样。 关于如何禁用它,在主窗口中而不是在我自己的自定义屏幕外帧缓冲区中使用多重采样的任何想法?

使用glEnable/Disable(GL_MULTISAMPLE)启用或禁用多采样渲染。 此状态属于帧缓冲区状态; 它是常规的上下文状态。 这样,即使您切换帧缓冲区,该状态也不会受到影响。

此外,如果您所连接的图像没有多个样本,则多样本启用/禁用开关没有任何意义。 如果要为非多重采样渲染创建图像,则没有理由使用多个样本创建它们。 因此,创建单样本图像。

好吧,在我的OpenGL代码中找不到禁用或避免它的方法,但是如果我将默认格式设置为0个样本,而QOpenGLWidget的格式设置为2/4/8 /,则为framebuffer对象创建抗锯齿功能时将不会使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM