2009-11-09 1 views
2

하늘을 나타내는 두 개의 텍스처 인 .jpg (낮에는 하나, 밤에는 하나). 내 질문은, 내가 다른 하나의 텍스처를 페이드하는 것이 가능한가? 그들은 D3DXCreateTextureFromFileInMemoryEx으로 생성됩니다. 이런 종류의 전환을 어떻게 수행 할 수 있습니까? 나는 두 개의 객체를 생성하고 싶지 않고 단지 점진적으로 텍스처를 변경합니다.D3DXCreateTextureFromFileInMemoryEx로 생성 된 하나의 위치에서 두 텍스처 사이를 점진적으로 알파 블렌딩 할 수 있습니까?

시간이 지남에 따라 하나의 텍스처에서 다른 텍스처로 (천천히) 천천히 혼합되기를 바랍니다. 그러나 나는 항상 페이드가 계속되기를 원하지 않는다. 제공 할 수있는 조언에 대해 미리 감사드립니다.

당신은 하나 개의 질감에서 다른 전환 텍스처 블렌딩 모두 텍스처를 사용할 수 있습니다 -

답변

2

는 현재 꽤 많은 옵션이 있습니다.

그러나 오랜 시간 동안이 작업을 수행하는 경우 세 번째 텍스처 (블렌드 된 상태)를 사전 계산하여 단일 텍스처로 사용하고 싶을 수 있습니다. 경우에 따라 "새"상태를 다시 계산하십시오. 이렇게하면 잠재적으로 시간이 지남에 따라 천천히 변경되는 단일 텍스처를 사용하기 때문에 렌더링을 단순화 할 수 있습니다.이 효과 대신 항상 멀티 텍스처링을 수행해야합니다. (텍스처링하는 객체로 다른 작업을 수행하지 않고 텍스처가 거대하지 않은 경우 간단한 2 텍스처 멀티 텍스처는 별 효과가 없습니다.)

+0

질감 혼합은 어떻게 이루어 집니까? 이 작업을하려면 .png 파일이 필요합니까, 아니면 .jpg로 충분합니까? –

+0

텍스쳐 블렌딩은 멀티 텍스쳐 또는 셰이더의 일부로 GPU에서 발생합니다. 형식은 모두 D3D 텍스처이기 때문에이 시점에서는 관련이 없습니다. –

+0

흥미 롭습니다. 어떻게 시간이 지남에 따라 두 개의 서로 다른 텍스처 사이를 천천히 움직일 수 있습니까? –

1

픽셀을 사용하십시오 셰이더.

float t : register(c0); 

float4 t1 = tex2D(g_sampler1, texcoord); 
float4 t2 = tex2D(g_sampler2, texcoord); 

float4 result = lerp(t1, t2, t); 

선형 보간 량으로 t를 전달합니다. t = 0.0은 첫 번째 텍스처를 제공하고, t = 1.0은 두 번째 텍스처를 제공하며 중간에서 선형으로 보간합니다.

파일 형식은 차이가 없으므로 세 번째 텍스처가 계산되지 않습니다.

관련 문제