我有两个纹理,都是.jpg,代表天空(白天一个,晚上一个)。我的问题是,我可以将一个纹理淡入另一个吗?它们是使用D3DXCreateTextureFromFileInMemoryEx
创建的。我该如何进行这种转变?我不想创建两个对象,只是逐渐改变纹理。
要清楚,我希望,随着时间的推移,慢慢地从一个纹理混合到另一个纹理(和背面)。但是,我不希望任何时候都能继续褪色。如果您有任何建议,请提前致谢。
答案 0 :(得分:2)
你有很多选择 -
您可以将两种纹理与纹理混合一起使用,以便从一种纹理过渡到另一种纹理。
但是,如果您长时间执行此操作,则可能需要预先计算第三个纹理(混合状态)并将其用作单个纹理。偶尔,重新计算“新”状态。这可能会简化您的渲染,因为您将使用单个纹理(随着时间的推移而变化缓慢),而不必为此效果始终进行多纹理。 (如果你没有做任何其他事情,除了你正在纹理化的物体,如果纹理不是很大,那么简单的2纹理多纹理并不是什么大问题。)
答案 1 :(得分: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为您提供第二个纹理,并在其间线性插值。
您的文件格式没有任何区别,它可以避免计算第三个纹理。