2010-05-13 4 views
3

OpenGlE를 사용하여 Android 용 픽셀 (2D보기)을 어떻게 그릴 수 있습니까? 우리가 그것을 사용 Android 용 OpenGLE을 사용하여 픽셀 그리기

draw(Canvas canvas) 
{ 
    ... 
} 

을 그리기 위해 사용하는 경우

우리가

canvas.drawPoint(i, j, paint); 

을 그릴하지만 OpenGlEs에 나는 여전히 같은 모든 기능을 없어 간단합니다.

사전에 감사를 회신 해 주시기 바랍니다

답변

3

glDrawElements (GL_POINTS, 0, NUM_POINTS, point_array); glVertexPointer를 먼저 사용하는 경우 glDrawArrays를 사용할 수도 있습니다.

glPointParameter, glPointSize 및 glColor를 사용하여 점의 모양을 수정하십시오. glPointSizePointer를 사용하면 점 크기의 배열을 지정할 수 있으므로 입자 효과에 편리합니다.

+0

thnx user473358 – 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"; 
관련 문제