2010-05-13 6 views
3

Comment puis-je dessiner un pixel (vue 2D) pour Android en utilisant OpenGlEs?Dessiner des pixels en utilisant OpenGLEs pour Android

Il est simple lorsque l'on utilise pour dessiner

draw(Canvas canvas) 
{ 
    ... 
} 

donc l'utiliser, nous tirons

canvas.drawPoint(i, j, paint); 

Mais OpenGLES je n'ai toujours pas eu une fonction semblable.

S'il vous plaît répondre Merci à l'avance

Répondre

3

glDrawElements (GL_POINTS, 0, num_points, point_array); Vous pouvez également utiliser glDrawArrays si vous utilisez d'abord glVertexPointer.

Utilisez glPointParameter, glPointSize et glColor pour modifier l'apparence des points. L'utilisation de glPointSizePointer vous permet de spécifier un tableau de tailles de points, ce qui est pratique pour les effets de particules.

+0

thnx utilisateur473358 – CoDe

6
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"; 
Questions connexes