ฉันกำลังพยายามวาด sprite พอยต์ใน OpenGL ES 2.0 แต่จุดทั้งหมดของฉันจบลงด้วยขนาด 1 พิกเซล ... แม้ว่าฉันจะตั้งค่า gl_PointSize ให้มีค่าสูงใน Shader ของฉันก็ตาม
ฉันจะทำให้จุดสไปรต์ของฉันใหญ่ขึ้นได้อย่างไร
ฉันกำลังพยายามวาด sprite พอยต์ใน OpenGL ES 2.0 แต่จุดทั้งหมดของฉันจบลงด้วยขนาด 1 พิกเซล ... แม้ว่าฉันจะตั้งค่า gl_PointSize ให้มีค่าสูงใน Shader ของฉันก็ตาม
ฉันจะทำให้จุดสไปรต์ของฉันใหญ่ขึ้นได้อย่างไร
คำตอบ:
OpenGL ES 2.0 รองรับ Point Sprites; ฉันใช้มันเป็นอนุภาค เพียงแค่ใช้glDrawElements
GL_POINTS
มี
ใน Shader ที่คุณตั้งขนาดด้วย 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;
}
ส่วนย่อยของฉัน:
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 ไม่สนับสนุน sprite point โดยตรง คุณสามารถพื้นผิว glPoints ของคุณหรือสร้างรูปสี่เหลี่ยมหันหน้าเข้าหากล้องและตั้งศูนย์กล้องด้วยตนเองที่กึ่งกลางจุด
float
ความแม่นยำอย่างชัดเจนในตัวแยกส่วน - พวกมันไม่มีfloat
ความแม่นยำเริ่มต้นและในไดรเวอร์บางตัวเช่นตัวแปลงอาจไม่สามารถคอมไพล์ได้