0
這應該是一個簡單的任務,但我失敗了。第一個認罪:我對OpenGL知之甚少,我學到的一些東西來自各種教程(其中一些可能已過時並棄用)如何在片段着色器中使用沒有插值的純色繪製三角形?
我試圖繪製一個使用定義在運行。四邊形繪製的尺寸和位置正確,但顏色錯誤。這是我的頂點和片段着色器:
public static final String VS_SOLIDCOLOR =
"uniform mat4 uMVPMatrix;" +
"attribute vec4 aPosition;" +
"attribute vec4 aColor;" +
"varying vec4 vColor;" +
"void main() {" +
" gl_Position = uMVPMatrix * aPosition;" +
" vColor = aColor;" +
"}";
public static final String FS_SOLIDCOLOR =
"precision mediump float;" +
"varying vec4 vColor;" +
"void main() {" +
" gl_FragColor = vColor;" +
"}";
顏色設置是這樣的(我已刪除GL錯誤校驗和檢查colorHandle == -1):
float r = 1.0f;
float g = 0.0f;
float b = 0.0f;
float a = 1.0f;
final int colorHandle = GLES20.glGetAttribLocation(shaderProgramSolidColor, "aColor");
GLES20.glVertexAttrib4f(colorHandle, r, g, b, a);
我本來期望的上面的代碼導致實心的紅色三角形,但它們最終爲純黃色。從我讀過的片段着色器中將插入vColor向量,但我不想(也不知道爲什麼它最終會變成黃色)。我如何在運行時設置顏色,並在三角形上繪製出未改變的顏色?
PS如果我是這樣做的片段着色器,我會得到一個堅實的紅色爲我的整個四:
gl_FragColor = vec4(1,0,0,1);
讓我知道,如果你需要我張貼更多的代碼。