जवाबों:
OpenGL ES 2.0 प्वाइंट स्प्राइट्स का समर्थन करता है; मैं उन्हें कणों के लिए उपयोग करता हूं। बस के glDrawElements
साथ उपयोग करें GL_POINTS
।
वर्टेक्स शेडर में, आप बनावट मानचित्रण के लिए टुकड़े के साथ आकार निर्धारित करते हैं gl_PointSize
और gl_PointCoord
टुकड़े टुकड़े करना में उपयोग करते हैं ।
मेरा शीर्ष shader:
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;
}
मेरा टुकड़ा shader:
uniform sampler2D tex0;
varying vec4 vColor;
void main()
{
gl_FragColor = texture2D(tex0, gl_PointCoord) * vColor;
}
यदि आप Android पर हैं, तो आप मेरे फ्रेंच ट्यूटोरियल देख सकते हैं । बिंदु स्प्राइट के साथ एक पूर्ण परियोजना है।
हैरानी की बात है, 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 सीधे प्वाइंट स्प्राइट का समर्थन नहीं करता है। आप या तो अपने glPoints को बनावट कर सकते हैं या मैन्युअल रूप से एक बिंदु पर केंद्रित एक कैमरा-फेसिंग और कैमरा-संरेखित क्वाड बना सकते हैं।
float
टुकड़े टुकड़े में सटीकता को स्पष्ट रूप से निर्दिष्ट करने के लिए मत भूलना - उनके पास डिफ़ॉल्टfloat
परिशुद्धता नहीं है और कुछ ड्राइवरों पर ऐसे शेड संकलित करने में विफल हो सकते हैं।