1 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
vec4 c = texture(texAtlas, vec3(iCoords.x%16, iCoords.y%16, 7))
這是行不通的。 在歸一化坐標(biāo)處對(duì)紋理進(jìn)行采樣,因此紋理位于(在域中,第三維是圖層,此處是正確的),通過您指定的模式(重復(fù),夾緊到邊緣,夾緊到邊框)處理的ar之外的坐標(biāo)。由于始終是一個(gè)整數(shù),即使重復(fù)也只有坐標(biāo)的小數(shù)部分才重要,因此您基本上是一遍又一遍地對(duì)相同的紋素進(jìn)行采樣。texture
[0,1]
st
GL_WRAP_...
int % 16
如果您需要完整的紋理采樣(紋理過濾,sRGB轉(zhuǎn)換等),則必須使用規(guī)范化坐標(biāo)。但是,如果您只想訪問單個(gè)紋理數(shù)據(jù),則可以改用和保留整數(shù)數(shù)據(jù)。texelFetch
請(qǐng)注意,由于您將紋理濾鏡設(shè)置為 ,因此您似乎想要過濾,但是,您的坐標(biāo)看起來好像您希望 at 訪問紋素中心,因此,如果您要走紋理路線 ,那么到達(dá)紋素中心(與 一起)將是正確的歸一化,但是,過濾將產(chǎn)生與 相同的結(jié)果。GL_LINEAR
vec3(vec2(iCoords.xy)/vec2(16) + vec2(1.0/32.0) , layer)
GL_REPEAT
GL_LINEAR
GL_NEAREST
- 1 回答
- 0 關(guān)注
- 127 瀏覽
添加回答
舉報(bào)