2013-07-16 9 views
2

是如果2D紋理GL_NEAREST MAG和分鐘過濾(和沒有 mipmap處理,即,僅存在1級)在4個紋理像素之間的中部進行採樣準確將要返回的值是什麼?具有GL_NEAREST過濾的樣本之間的中間值:返回值是什麼?

不幸的是,在官方文檔中沒有關於這方面的單一記錄。

更新:

事實上,整個橫看起來相當曖昧的給我。在下圖中我畫與x曖昧點(線),以及4個紋理元由o表示:

o---x---o 
| x | 
x x x x x 
| x | 
o---x---o 

因此,如果紋理在x的取樣,它的值返回?

+0

「官方文檔」...你在談論['man' pages](http://www.opengl.org/sdk/docs/man/)或[規格](http:// www .opengl.org /註冊表/)? – genpfault

+0

是的,'人'頁。 –

回答

2

如果我正確閱讀Section 3.8.8 (page 175),它看起來像在兩個軸上都使用floor()

o4--xA--o3 
| x | 
x x x x xB 
| x | 
o1--x---o2 

因此,所有的x ES將樣品o1。除xAxB,其中將樣品和o2

+0

我對他們的符號有點困惑:什麼是'u','v','w'和'i','j','k'? –

+0

看起來他們在第156頁定義了'i/j/k'。在頁173的底部定義了'u/v/w' * sci * – genpfault

+0

@genpfault請你解釋爲什麼它看起來像floor )? – Petrakeas

1

我讀了selected answer中的規格部分,看起來所選的答案是錯誤的。

根據使用GL_NEAREST時的規格,爲指定的(s,t,r)返回的紋理值是具有以下特徵的紋理元素之一:i = floor(u),j = floor(v)。 請注意,texel(i,j)的值是座標爲(u,v)=(i + 0.5,j + 0.5)的值。見圖。 3.10在第160頁。

這歸結爲給定採樣點的簡單規則,即使用最接近紋理元素的值。在我們正好在2個紋理中心之間採樣的情況下,使用右側或頂部的一個。例如,如果我們想要在u = 1處(在texel 0和1箇中心之間距離相等)進行採樣,那麼我們將選擇i = floor(1)= 1,即紋理右側。 texel的中心在u = 1.5。

因此,這是會發生什麼:

o4----x3----o3 
|  x3  | 
x4 x4 x3 x3 x3 
|  x2  | 
o1----x2----o2 

我還進行了使用OpenGL ES,測試通過抽樣在預定秒的彩色編碼的紋理,T從片段着色器內的座標,它表現爲預期。

相關問題