Kích thước Sprites OpenGL ES 2.0


15

Tôi đang cố gắng vẽ các họa tiết điểm trong OpenGL ES 2.0, nhưng tất cả các điểm của tôi đều có kích thước 1 pixel ... ngay cả khi tôi đặt gl_PointSize thành giá trị cao trong trình tạo bóng đỉnh của tôi.

Làm thế nào tôi có thể làm cho điểm của tôi lớn hơn?

Câu trả lời:


24

OpenGL ES 2.0 hỗ trợ Sprites Point; tôi sử dụng chúng cho các hạt. Chỉ cần sử dụng glDrawElementsvới GL_POINTS.

Trong shader đỉnh, bạn đặt kích thước với gl_PointSizevà sử dụng gl_PointCoordtrong shader mảnh để ánh xạ kết cấu.

Shader đỉnh của tôi:

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;  
}

Mảnh vỡ của tôi shader:

uniform sampler2D tex0;
varying vec4 vColor;

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

Nếu bạn đang ở trên Android, bạn có thể xem Hướng dẫn tiếng Pháp của tôi . Có một dự án đầy đủ với các sprite điểm.


Đừng quên chỉ định rõ ràng floatđộ chính xác trong các shader mảnh - chúng không có floatđộ chính xác mặc định và trên một số trình điều khiển, các shader như vậy có thể không biên dịch được.
keaukraine

1

Đáng ngạc nhiên, glLineWidth () làm cho điểm lớn hơn:

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

Bạn là một anh hùng. Bob chúc phúc.
netpoetica

0

OpenGLES 2.0 không hỗ trợ trực tiếp các sprite điểm. Bạn có thể tạo họa tiết cho các điểm ảnh của mình hoặc tạo thủ công một góc đối diện với camera và hướng camera ở giữa.


5
Sai. sử dụng GL_POINTS và gl_PointSize trong trình tạo bóng đỉnh
Ellis

@Ellis Vâng, anh ấy nói thế. Nếu bạn nhìn vào liên kết được đăng, nó sẽ nói về phần GL ES 1 không được dùng nữa và cách "kết cấu glPoints của bạn"
bobobobo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.