OpenglES 2.0 GL_POINTS исчезают - PullRequest
       0

OpenglES 2.0 GL_POINTS исчезают

0 голосов
/ 01 марта 2012

Я использую gl_points в качестве спрайтов, когда точки достигают границы экрана, они исчезают, проблема в том, что мои точки превышают 1 пиксель, поэтому они исчезают, когда половина точек выходит за границы экрана, я предполагаю, что есть какой-то видОтключение выбрано для удаления точек, находящихся за кадром, вопрос в том, как его отключить.

Ответы [ 3 ]

1 голос
/ 03 августа 2012
    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";
0 голосов
/ 26 февраля 2013

GL_POINTS обрезаются в центре. Это всего лишь ограничение GL_POINTS. Если вы не можете с этим смириться, просто используйте обычные квадраты (если производительность может с этим справиться)

0 голосов
/ 05 августа 2012

Увеличение размера области просмотра помогает, или вы можете сделать это для текстуры и масштабирования:)

...