使用着色器我想着色一個平面,以便它複製紋理上的像素。紋理是32x32像素,平面的尺寸也是32x32的空間座標。基於紋理像素着色平面
有誰知道我會如何檢查紋理上的第一個像素,然後用它在飛機上着色第一個方塊(1x1)?
生成的紋理例如:(初像素是紅色的目的)
該代碼使用一個具有座標VEC2(0,0)作爲我預期不起作用。我認爲在(0,0)的顏色是紅色,但它不是,它是綠色的:
vec4 color = texture2D(texture, vec2(0, 0));
我想有我失蹤,或不理解有關的Texture2D的東西(0,0)沒有按」 t看起來也是結束像素。
如果有人能夠幫助我,它會非常appriciated。謝謝。
編輯:
感謝您的意見和解答!使用此代碼,它的工作現在:
// Flip the texture vertically
vec3 verpos2 = verpos.xyz * vec3(1.0, 1.0, -1.0);
// Calculate the pixel coordinates the fragment belongs to
float pixX = floor(verpos2.x - floor(verpos2.x/32.0) * 32.0);
float pixZ = floor(verpos2.z - floor(verpos2.z/32.0) * 32.0);
float texX = (pixX + 0.5)/32.0;
float texZ = (pixZ + 0.5)/32.0;
gl_FragColor = texture2D(texture, vec2(texX, texZ));
這就是說,我在與每個「塊」的邊緣鋸齒線的問題。在我看來,像我的數學是關閉的,它對雙方應該是什麼顏色感到困惑,因爲當只使用頂點顏色時,我沒有這個問題。任何人都可以看到我出錯的地方或者它可以做得更好嗎?
再次感謝!
如果您有GL-ES 3.0,您可以使用['texelFetch'](http://www.khronos.org/opengles/sdk/docs/manglsl/xhtml/texelFetch.xml)。否則,[this](http://stackoverflow.com/questions/5879403/opengl-texture-coordinates-in-pixel-space)答案可能會有所幫助。 –
感謝您的鏈接。顯然,WebGL不支持texelFetch,所以不幸的是我不能使用它:( –
我相信OpenGL ES的座標系從左下角開始 - 在iOS上,有時需要垂直翻轉圖像。 –