1
我一直試圖做簡單的紋理映射與土壤,並在加載PNG紋理我一直有奇怪的輸出..離奇GLSL紋理座標
輸出僅顯示。 (SOIL_load_OGL_texture) 其他紋理顯示爲灰色或白色。
頂點通過爲:
struct Vertex {
float position[3];
float texturepos[2];
};
Vertex vertices[] = { // w and h are width and height of square.
0,0,0,0,0,
w,0,0,1,0,
0,h,0,0,1,
w,0,0,1,0,
w,h,0,1,1,
0,h,0,0,1
};
頂點着色器:
attribute vec2 texpos;
attribute vec3 position;
uniform mat4 transform;
varying vec2 pixel_texcoord;
void main(void) {
gl_Position=transform * vec4(position,1.0);
pixel_texcoord=texpos;
}
片段着色器:
varying vec2 pixel_texcoord;
uniform sampler2D texture;
void main(void) {
gl_FragColor=texture2D(texture,pixel_texcoord);
}
制服的所有和都驗證屬性。
紋理試圖呈現:
(爲128x128,2的冪)
輸出[正常着色器]:
然而,我想問題完全在於我嘗試調試時發生的奇怪事情。
我改變了片段着色器:
varying vec2 pixel_texcoord;
uniform sampler2D texture;
void main(void) {
gl_FragColor=vec4(pixel_texcoord.x,0,pixel_texcoord.y,1);
}
,並得到這結果: 東西是非常錯誤的紋理座標,如根據着色器,Y現在是X和X不復存在。 任何人都可以解釋這一點嗎?
如果我的紋理座標正確定位,然後我就開始尋找另一個圖像庫..
[編輯]我想通過原始GIMP生成的數據加載圖像,並有同樣的問題。 就好像紋理座標是一維的。
你應該添加你設置頂點流的方式。 glvertexattribpointer等調用。 – starmole 2013-04-11 06:00:43
從描繪調試着色器中的紋理座標可以清楚地看出,它根本不可能與紋理圖像有任何關係。我第二* starmole *,在顯示實際頂點格式設置(和繪圖)的情況下,對於解決問題至關重要。 – 2013-04-11 07:53:52
你的'#版本'指令在哪裏? – genpfault 2013-04-11 16:46:05