如何使用OpenGlE爲Android繪製像素(2D視圖)?使用OpenGLEs爲Android繪製像素
這是簡單,當我們使用繪製
draw(Canvas canvas)
{
...
}
所以使用它我們得出
canvas.drawPoint(i, j, paint);
但OpenGlEs我還沒有得到任何類似的功能。
請提前回復 謝謝
如何使用OpenGlE爲Android繪製像素(2D視圖)?使用OpenGLEs爲Android繪製像素
這是簡單,當我們使用繪製
draw(Canvas canvas)
{
...
}
所以使用它我們得出
canvas.drawPoint(i, j, paint);
但OpenGlEs我還沒有得到任何類似的功能。
請提前回復 謝謝
glDrawElements(GL_POINTS,0,NUM_POINTS,point_array); 如果您先使用glVertexPointer,則也可以使用glDrawArrays。
使用glPointParameter,glPointSize和glColor修改點的外觀。使用glPointSizePointer可以指定一個點大小的數組,這對於粒子效果非常有用。
GLES20Renderer.programLight = GLES20.glCreateProgram();
int vertexShaderLight = GLES20Renderer.loadShader(GLES20.GL_VERTEX_SHADER, GLES20Renderer.vertexShaderCodeLight);
int fragmentShaderLight = GLES20Renderer.loadShader(GLES20.GL_FRAGMENT_SHADER, GLES20Renderer.fragmentShaderCodeLight);
GLES20.glAttachShader(GLES20Renderer.programLight, vertexShaderLight);
GLES20.glAttachShader(GLES20Renderer.programLight, fragmentShaderLight);
GLES20.glLinkProgram(GLES20Renderer.programLight);
uPLocationLight = GLES20.glGetUniformLocation(GLES20Renderer.programLight, "uP");
uVPositionLocationLight = GLES20.glGetUniformLocation(GLES20Renderer.programLight, "uVPosition");
GLES20.glUseProgram(GLES20Renderer.programLight);
GLES20.glUniform4f(uVPositionLocationLight, LightPosInEyeSpace[0], LightPosInEyeSpace[1], LightPosInEyeSpace[2], LightPosInEyeSpace[3]);
GLES20.glUniformMatrix4fv(uPLocationLight, 1, false, ProjectionMatrix, 0);
GLES20.glDrawArrays(GLES20.GL_POINTS, 0, 1);
private static final String vertexShaderCodeLight =
"uniform vec4 uVPosition; \n"
+ "uniform mat4 uP; \n"
+ "void main(){ \n"
+ " gl_PointSize = 15.0; \n"
+ " gl_Position = uP * uVPosition; \n"
+ "} \n";
private static final String fragmentShaderCodeLight =
"#ifdef GL_FRAGMENT_PRECISION_HIGH \n"
+ "precision highp float; \n"
+ "#else \n"
+ "precision mediump float; \n"
+ "#endif \n"
+ "void main(){ \n"
+ " gl_FragColor = vec4(1.0,1.0,1.0,1.0); \n"
+ "} \n";
thnx user473358 – CoDe 2010-12-30 11:05:14