簡體   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