Câu hỏi Làm thế nào để vẽ hàng ngàn Sprites với sự minh bạch khác nhau?


Xin chào, tôi đang sử dụng Firemonkey vì đó là khả năng nền tảng chéo. Tôi muốn render một hệ thống hạt. Bây giờ tôi đang sử dụng TMesh hoạt động đủ tốt để hiển thị các hạt nhanh. Mỗi hạt được biểu diễn trong lưới thông qua hai hình tam giác kết cấu. Sử dụng các tọa độ kết cấu khác nhau, tôi có thể hiển thị nhiều loại hạt khác nhau với cùng một lưới. Vấn đề là, mọi hạt có thể có độ trong suốt / độ trong suốt của nó. Với cách tiếp cận hiện tại của tôi, tôi không thể thiết lập độ trong suốt cho mỗi tam giác (hoặc thậm chí là đỉnh). Tôi có thể làm gì?

Tôi nhận ra rằng có một số thuộc tính khác trong TMesh.Data.VertexBuffer, như Diffuse hoặc các bộ kết cấu khác (TexCoord1-3), nhưng các thuộc tính này không được sử dụng (thậm chí không được initalized) trong TMesh. Nó cũng có vẻ không dễ dàng để thay đổi hành vi này bằng cách kế thừa từ TMesh. Có vẻ như người ta phải kế thừa từ một điều khiển mức thấp hơn để khởi tạo VertextBuffer với nhiều thuộc tính hơn. Trước khi tôi thử điều đó, tôi muốn hỏi liệu nó có thể kiểm soát độ trong suốt của một hình tam giác với điều đó không. Ví dụ. thế nào tôi có thể thiết lập một màu trong suốt (Diffuse) hoặc sử dụng một kết cấu trong suốt (TextCoor1)? Hay có cách nào tốt hơn để vẽ các hạt trong Firemonkey.


8
2018-03-18 10:18


gốc


"Tôi có thể đặt màu trong suốt ... hoặc sử dụng kết cấu trong suốt" ... Tại sao bạn không thử? Sau đó quay lại và nói với chúng tôi. - Ben


Các câu trả lời:


Tôi thừa nhận rằng tôi không biết nhiều về khuôn khổ cụ thể đó, nhưng bạn không thể thay đổi độ trong suốt thông qua các điểm đỉnh trong một mô hình 3D. Các điểm thường là các tọa độ x, y, z. Bây giờ, các điểm đỉnh sẽ có ảnh hưởng đến cách các sprites được thắp sáng nếu bạn đang sử dụng một hệ thống chiếu sáng. Bạn cũng có thể sử dụng thông tin đỉnh để áp dụng hiệu ứng trong suốt khác nhau

Bây giờ, có thể có hàng chục cách khác nhau để làm điều này. Thông thường bạn có một kết cấu với các mức độ khác nhau của các giá trị alpha có thể được đặt trong thời gian chạy. Các API đồ họa thường có một số chức năng lọc có thể nhanh chóng áp dụng các giá trị cho các họa tiết / họa tiết, và một cái tốt sẽ sử dụng chip đồ họa của bạn nếu có.

Nếu bạn có thể sử dụng hiệu ứng, nó thường tốt hơn vì cách hạt nhân là tạo ra một loạt các bản sao khác nhau của một sprite và sau đó áp dụng các hiệu ứng cho riêng chúng. Nếu bạn đang sử dụng Gouraud Shading thì sẽ dễ dàng hơn khi Gouraud sử dụng mã để điền thông tin về kết cấu.

Bây giờ, bạn đang sử dụng các hạt ánh sáng? Một số API đồ họa thực sự có mã tạo ra các hạt ánh sáng.

Chỉnh sửa: Tôi chỉ nhớ Vertex Shaders, có thể.


0
2017-08-30 14:05