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;
}
당신이 안드로이드에 있다면, 내 프랑스어 자습서를 볼 수 있습니다 . 포인트 스프라이트가 포함 된 전체 프로젝트가 있습니다.