2011-11-30 71 views
5

我一直在嘗試使用Multisampling工作來獲得SDL FSAA,但它不想。SDL Multisampling

我開始用簡單的東西:

SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS,1); SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES,2);

但我做關聯的獲取,它返回0爲緩衝區和1樣本。 (SetVideo之前和之後)。

我在我的GeForce 280M上試了兩次,並懷疑它是一個移動問題,在我的580上嘗試過它也沒有運氣。

我使用最新的驅動程序運行Windows 7。

如果我在NVidia控制面板中強制使用FSAA,它很好,但我似乎無法讓應用程序啓用它。

任何想法?

+0

FSAA是全屏反鋸齒。它呈現高分辨率,然後縮放sesult以顯示。 MSAA是多采樣抗鋸齒。這裏只有深度緩衝區被放大並且可見深度像素的百分比定義了不透明度。多采樣的FSAA不存在。 – Arne

回答

1

這些函數應該返回0或-1。他們不應該返回1。 。 。所以我不知道那裏發生了什麼。那些其他函數的返回值是什麼?

無論如何,重要的是要注意,這些是請求。不能保證它們就是你認爲的那樣。這就是SDL_GL_GetAttribute函數存在的原因(在SDL_SetVideoMode後面調用它來查看你得到的)。

您正在請求一個多采樣緩衝器,每個像素有兩個採樣。這不是一個非常大量的多重採樣。在SDL_SetVideoMode之前,請嘗試以下操作:

SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); 
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES,16); 

如果看到平滑邊緣,請不要擔心。

+0

0和1是創建上下文後調用SDL_GL_GetAttribute時的值。所以,我的請求似乎被忽略了;我只是不知道爲什麼。我只是選擇了2,因爲我認爲這是最有可能成功的。 –

+0

我明白了。可能是這張卡不支持2.我會使用更大的東西。通常情況下,我會推薦4或8個,但是我已經成功在我的580(M)上使用了32個FBO,如果16個FBO不工作,我會感到驚訝。無論如何,我會更擔心你所看到的。如果它看起來一切順利,請不要擔心SDL_GL_GetAttribute(...)所說的內容。 – imallett