2012-03-18 28 views
8

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ì?Làm thế nào để vẽ hàng ngàn Sprites với tính minh bạch khác nhau?

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 tài trợ) 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.

+2

"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

Trả lời

0

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ô 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 các hiệu ứng trong suốt khác nhau

Bây giờ, có thể có hàng chục cách khác nhau để thực hiện việc 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, thường là 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 hiệu ứng cho từng ảnh. 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 có đang sử dụng các hạt ánh sáng khô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 vừa nhớ Vertex Shaders, có thể.

Các vấn đề liên quan