根據定義,GL_TEXTURE_MIN_FILTER用於紋理像素映射到大於一個紋理元素的區域。什麼時候應該設置GL_TEXTURE_MIN_FILTER和GL_TEXTURE_MAG_FILTER?
說我有一個1024 * 768分辨率的紋理,我想將它映射到一個矩形。投影矩陣是使用設置:
glOrtho(0, 1024, 0, 768, 0, 1);
和矩形被設定爲:
glTexCoord2f(0.0f, 0.0f); glVertex3f(0.0f, 0.0f, 0.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(1024.0f, 0.0f, 0.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(1024.0f, 768.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(0.0f, 768.0f, 0.0f);
在當前的配置,我的理解是在矩形的每個像素被映射到一個單個像素的紋理。
經過測試,我發現MIN_FILTER正在爲此配置工作。即使將矩形的大小加倍(即2048 * 1536),只有左下角顯示在視口中,它仍然是正在運行的MIN_FILTER。
在這種情況下,我個人的理解是,視口中的每個像素映射到紋理中只有四分之一像素,爲什麼它仍然是MIN_FILTER工作?
爲了測試哪個過濾器正在工作,我只是註釋掉設置該過濾器的行並查看結果是否錯誤。如果我將MIN_FILTER設置行註釋掉,結果將會是全黃色,因爲我沒有將紋理的最大級別設置爲與其級別相符。但是,如果我註釋掉MAG_FILTER行,結果仍然正確。
你所說的「工作」和「不工作」是什麼意思? –
如果你的情況視小於1024×768,那麼你會有效地做一個微小。 – datenwolf