2012-08-27 38 views
0

我有troube顯示紋理兩個三角形的平面。 我的紋理是一個32x32 RGBA位圖。 我正在爲android開發。OGL ES 2.0紋理上平面

我的飛機是創建這樣的:

float[] vertices = new float[24]; 
    // first triangle 
    vertices[0] = 0.0f; 
    vertices[1] = 0.0f; 
    vertices[2] = 0.0f; 
    vertices[3] = 1.0f; 

    vertices[4] = 0.0f; 
    vertices[5] = fHeight; 
    vertices[6] = 0.0f; 
    vertices[7] = 1.0f; 

    vertices[8] = fWidth; 
    vertices[9] = fHeight; 
    vertices[10] = 0.0f; 
    vertices[11] = 1.0f; 

    // second triangle 
    vertices[12] = fWidth; 
    vertices[13] = fHeight; 
    vertices[14] = 0.0f; 
    vertices[15] = 1.0f; 

    vertices[16] = fWidth; 
    vertices[17] = 0.0f; 
    vertices[18] = 0.0f; 
    vertices[19] = 1.0f; 

    vertices[20] = 0.0f; 
    vertices[21] = 0.0f; 
    vertices[22] = 0.0f; 
    vertices[23] = 1.0f; 

我設法什麼是創建紋理的平面顯示器的一半。結果是這樣的: Result http://www.imagecrate.de/u/1346090743_texture.png

所以。紋理僅在第一個三角形上可見。我讀到,當三角形以錯誤的順序呈現時,這可能是一個問題,但是當我更改第二個三角形的順序時,它沒有任何作用。另外我認爲紋理應該是透明的,黑色是可見的。任何想法和我可能做錯什麼?

這裏是我的片段着色器代碼:

precision mediump float; 
varying vec2 vTexCoord; 
uniform sampler2D sTexture; 
void main() 
{ 
    gl_FragColor = texture2D(sTexture, vTexCoord); 
} 

這裏是我的紋理座標:

float[] mVertsData1 = 
     { 
       0.0f, 0.0f, // TexCoord 0 
       0.0f, 1.0f, // TexCoord 1 
       1.0f, 1.0f, // TexCoord 2 
       1.0f, 0.0f // TexCoord 3 
     }; 

我不知道如果我的渲染代碼將在這裏幫助,如果我可以添加它你需要它。但我不想根據需要做出更大的問題。 也許有人知道這裏發生了什麼!?

預先感謝您! Zerd1984

回答

1

你有6個頂點和4個紋理座標。你需要有相同的數字(6和6)。

對於每個頂點,要定義爲頂點相同指數在texcoord;頂點4必須texcoord 4,頂點5 texcoord 5等

對於透明度的熱身賽,你需要啓用混合:glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

通常你應該總是包括您的渲染代碼,只要你有一個渲染問題,好。

+0

太謝謝你了!現在看起來很好! 我以爲我不得不把飛機當作一架飛機,這就是爲什麼我使用了4個文本編輯器。但是這使得sence!謝謝 – HashtagMarkus