私は赤の色を塗りたいです。 GL10を使用して要素を描画すると、問題はありませんが、GLES20を使用すると図形は赤色ではなく黒色になります。OpenGLEsは私のポイントをよく色付けしません。
ここに私のコードがある:色のfloat配列やバッファを設定するには :
for (int i=0;i<colors.length;i++)
{
colors[i]=1f;
colors[++i]=0f;
colors[++i]=0f;
colors[++i]=1f;
}
byteBuffer=ByteBuffer.allocateDirect(4*colors.length);
byteBuffer.order(ByteOrder.nativeOrder());
colors_buff=byteBuffer.asFloatBuffer();
colors_buff.put(colors);
colors_buff.position(0);
マイ頂点とフラグメントシェーダ:
private String v_shader="" +
"attribute vec4 verte;" +
"attribute vec4 colors;" +
"varying vec4 vcolor;" +
"void main(){" +
"gl_Position=verte;" +
"vcolor=colors;" +
"}";
private String c_shader="" +
"precision mediump float;" +
"varying vec4 vcolor;" +
"void main(){" +
"gl_FragColor=vcolor;" +
"}";
My機能要素描画する:
public void DrawShader(){
GLES20.glUseProgram(progra);
int v_handler=GLES20.glGetAttribLocation(progra,"verte");
int f_handler=GLES20.glGetUniformLocation(progra,"colors");
GLES20.glEnableVertexAttribArray(v_handler);
GLES20.glEnableVertexAttribArray(f_handler);
GLES20.glVertexAttribPointer(v_handler,3,GLES20.GL_FLOAT,false,12,vertexbuffer);
GLES20.glVertexAttribPointer(f_handler,4,GLES20.GL_FLOAT,false,16,colors_buff);
GLES20.glDrawElements(GLES20.GL_LINES,indicies.length,GLES20.GL_UNSIGNED_SHORT,indicies_buff);
GLES20.glDisableVertexAttribArray(v_handler);
GLES20.glDisableVertexAttribArray(f_handler);
}
を
カラー配列を変更して、バッファに入れると私はGL10を使って要素を描いていましたが、drwという色は変わりません。 ありがとうございました。