2012-03-18 5 views
8

안녕하세요 저는 크로스 플랫폼 기능 때문에 Firemonkey를 사용하고 있습니다. 입자 시스템을 렌더링하고 싶습니다. 이제 입자를 빠르게 표시 할 수있는 TMesh를 사용하고 있습니다. 각 파티클은 두 개의 텍스처가있는 삼각형을 통해 메쉬에 표현됩니다. 다른 텍스처 좌표를 사용하여 동일한 메쉬로 다양한 입자 유형을 표시 할 수 있습니다. 문제는 모든 입자가 자체 투명도/불투명도를 가질 수 있다는 것입니다. 현재의 접근 방식으로 각 삼각형 (또는 정점)마다 개별적으로 투명도를 설정할 수는 없습니다. 내가 무엇을 할 수 있을지?투명도가 다른 수천 개의 Sprite를 그리는 방법은 무엇입니까?

TMesh.Data.VertexBuffer에는 Diffuse 또는 다른 텍스처 집합 (TexCoord1-3)과 같은 몇 가지 속성이 있지만 TMesh에서는 이러한 속성이 사용되지 않습니다 (초기화되지 않았 음). 또한 TMesh를 상속하여이 동작을 변경하는 것도 쉽지 않은 것처럼 보입니다. 더 많은 속성을 가진 VertextBuffer를 초기화하기 위해서는 더 낮은 레벨의 컨트롤을 상속 받아야합니다. 이것을 시도하기 전에 삼각형의 투명도를 제어하는 ​​것이 가능한지 묻고 싶습니다. 예 : 투명 색상 (Diffuse)을 설정하거나 투명 텍스처 (TextCoor1)를 사용할 수 있습니까? 아니면 Firemonkey에서 입자를 그릴 수있는 더 좋은 방법이 있습니까?

+2

"투명 색상을 설정하거나 투명 텍스처를 사용할 수 있습니까?" 그런 다음 다시 와서 알려주십시오. – Ben

답변

0

필자는이 특정 프레임 워크에 대해 많이 모른다는 것을 인정하지만 3D 모델의 정점을 통해 투명도를 변경할 수 없어야합니다. 포인트는 보통 x, y, z 좌표입니다. 이제 조명 시스템을 사용하는 경우 정점 점이 스프라이트가 켜지는 방식에 영향을 미칩니다. 버텍스 정보를 사용하여 다른 투명도 효과를 적용 할 수도 있습니다.

이제이 작업에는 여러 가지 방법이 있습니다. 일반적으로 런타임에 설정할 수있는 알파 값의 정도가 다른 텍스처가 있습니다. 그래픽 API는 일반적으로 스프라이트/텍스처에 값을 신속하게 적용 할 수있는 필터링 기능을 가지고 있으며, 좋은 경우 그래픽 칩을 사용합니다.

효과를 사용할 수있는 경우 핵의 방법은 스프라이트의 여러 복사본을 만들어 개별적으로 효과를 적용하기 때문에 일반적으로 효과적입니다. Gouraud Shading을 사용하고 있다면 Gouraud가 텍스처 정보를 채우기 위해 코드를 사용하기 때문에 더 쉬워집니다.

이제 가벼운 입자를 사용하고 있습니까? 일부 그래픽 API에는 실제로 가벼운 입자를 만드는 코드가 있습니다.

편집 : 방금 Vertex Shaders를 기억했습니다.

관련 문제