對於標準OpenGL紋理,濾波狀態是紋理的一部分,並且在創建紋理時必須被定義。這導致代碼如:創建多重採樣紋理正確
glGenTextures(1,&_texture_id);
glBindTexture(GL_TEXTURE_2D,_texture_id);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexImage2D(...);
這很好用。我正在嘗試製作多重採樣紋理(用於FBO)。代碼非常相似:
glGenTextures(1,&_texture_id);
glBindTexture(GL_TEXTURE_2D_MULTISAMPLE,_texture_id);
glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D_MULTISAMPLE,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexImage2DMultisample(...);
我使用的是調試上下文,以及與此代碼的第一glTexParameterf(...)
呼叫的原因:產生
GL_INVALID_ENUM錯誤。多重採樣紋理目標不支持採樣器狀態
我不知道這是什麼意思。請注意,多重採樣紋理僅支持最近的過濾。我正在指定這一點。我注意到,對於一些電話(尤其是glTexParameterf(...)
)時,GL_TEXTURE_2D_MULTISAMPLE
不是文檔中上市的輸入(如果他們確實無效,不只是忘了確實會解釋無效枚舉錯誤)。但是,如果它不被接受,那麼我應該如何設置最近的過濾?
我沒有使用過多重採樣紋理,但我的理解是,因爲只有最近的過濾支持,你不需要進行設置。你的代碼在沒有調用'glTexParameterf'的情況下工作嗎? – GuyRT
它的確如此。如果你可以找到一個來源,發佈回答,我會接受。 – imallett