2012-03-01 91 views
0

我正在使用gl_points作爲精靈,當點到達屏幕邊界時它們消失,問題在於我的點大於1像素,所以當點喙屏幕邊界的一半時消失,我假設有是一種剔除打開清除屏幕外的點,問題是如何關閉它。OpenglES 2.0 GL_POINTS消失

+0

增加視口有助於在這種情況下:) – ZZZ 2012-05-28 16:13:31

回答

-2

增加視口大小的幫助,也可以將其紋理渲染和放大:)

1
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

GL_POINTS在中心裁剪。這只是GL_POINTS的限制。如果你不能忍受這只是使用常規四邊形(假設性能可以處理它)

+0

我知道,這就是爲什麼我增加了視口的大小,所以它更大的兩點大小在x和y和點現在罰款罰款 – ZZZ 2013-02-27 06:05:00