OpenGL ES 2.0 포인트 스프라이트 크기 높은 값으로 설정하더라도 1 픽셀 크기로

OpenGL ES 2.0에서 포인트 스프라이트를 그리려고하지만 모든 점은 버텍스 쉐이더에서 gl_PointSize를 높은 값으로 설정하더라도 1 픽셀 크기로 끝납니다.

포인트 스프라이트를 더 크게 만들려면 어떻게해야합니까?



답변

OpenGL ES 2.0은 포인트 스프라이트를 지원합니다. 입자에 사용합니다. glDrawElements와 함께 사용하십시오 GL_POINTS.

정점 셰이더에서는 텍스처 매핑을 위해 크기를 설정하고 프래그먼트 셰이더에서 gl_PointSize사용 gl_PointCoord합니다.

내 버텍스 셰이더 :

uniform mat4 uMvp;
uniform float uThickness;

attribute vec3 aPosition;
attribute vec2 aTexCoord;
attribute vec4 aColor;

varying vec4 vColor;

void main() {
    vec4 position = uMvp * vec4(aPosition.xyz, 1.);
    vColor = aColor;
    gl_PointSize = uThickness;
    gl_Position =  position;
}

내 프래그먼트 셰이더 :

uniform sampler2D tex0;
varying vec4 vColor;

void main()
{
   gl_FragColor = texture2D(tex0, gl_PointCoord) * vColor;
}

당신이 안드로이드에 있다면, 내 프랑스어 자습서를 볼 수 있습니다 . 포인트 스프라이트가 포함 된 전체 프로젝트가 있습니다.


답변

놀랍게도 glLineWidth ()는 포인트를 더 크게 만듭니다.

    GLES20.glLineWidth(8); // Make the edges (and points!) thicker
    GLES20.glDrawArrays(GLES20.GL_POINTS, 0, 38);// 38 is number of my vertexes

답변

OpenGLES 2.0은 포인트 스프라이트를 직접 지원하지 않습니다. glPoint텍스처 처리 하거나 점을 중심으로 카메라를 향한 카메라 정렬 쿼드를 수동으로 생성 할 수 있습니다 .