Câu hỏi nhanh: Phương pháp nhanh nhất để kết xuất một mảng lớn các hạt 4x4 / 8x8 trong opengl là gì? Hiện tại tôi dành 2triangles cho mỗi người nhưng tôi nghĩ rằng nó chậm nên tôi thực sự muốn biết nếu tôi làm đúng .....
Câu hỏi nhanh: Phương pháp nhanh nhất để kết xuất một mảng lớn các hạt 4x4 / 8x8 trong opengl là gì? Hiện tại tôi dành 2triangles cho mỗi người nhưng tôi nghĩ rằng nó chậm nên tôi thực sự muốn biết nếu tôi làm đúng .....
Câu trả lời:
Bạn có thể vẽ điểm với OpenGL.
Bạn muốn gọi glDrawArrays () hoặc glDrawElements () bằng GL_POINTS (thay vì GL_TRIANGLE_STRIP hoặc bất cứ điều gì bạn đang sử dụng.)
Điều này sẽ vẽ các điểm vào màn hình dựa trên kích thước điểm hiện tại mà bạn có thể đặt qua glPointSize () . Bạn cũng có thể bí danh những điểm này, nhưng theo kinh nghiệm của tôi, không phải tất cả các trình điều khiển / phần cứng đều hỗ trợ các điểm bí danh.
Bạn không thể kết cấu những điểm này; chúng chỉ là một màu duy nhất.
Trong lõi OpenGL 3.2 trở lên, các shader hình học có sẵn để sử dụng. Để đưa ra một cái nhìn tổng quan ngắn gọn, bạn sẽ chỉ yêu cầu OpenGL vẽ các điểm đại diện cho vị trí của các hạt của bạn và những điểm này sẽ đi qua trình tạo bóng đỉnh một cách bình thường, nhưng sau đó khi chúng đến trình đổ bóng hình học, nó sẽ tạo ra hình chữ nhật (ra của hai tris) bằng cách phát ra các đỉnh đến giai đoạn tiếp theo của đường ống. Cùng với các đỉnh bạn có thể lập trình tạo các quy tắc và tọa độ kết cấu.
Vì tất cả đều được thực hiện trong phần cứng, tôi khá chắc chắn rằng đây là cách nhanh nhất để kết xuất các hạt sprite.