Возможно ли постепенное альфа-смешение между двумя текстурами в одном месте, созданными с помощью D3DXCreateTextureFromFileInMemoryEx? - PullRequest
2 голосов
/ 09 ноября 2009

У меня есть две текстуры .jpg, представляющие небо (одна днем, другая ночью). У меня такой вопрос, могу ли я добавить одну текстуру в другую? Они созданы с D3DXCreateTextureFromFileInMemoryEx. Как я могу выполнить такой переход? Я не хочу создавать два объекта, просто постепенно меняйте текстуру.

Чтобы было ясно, я хочу со временем медленно смешиваться от одной текстуры к другой (и обратно). Однако я не хочу, чтобы исчезновение происходило все время. Заранее благодарим за любой совет, который вы можете предложить.

Ответы [ 2 ]

2 голосов
/ 09 ноября 2009

У вас есть несколько вариантов здесь -

Вы можете использовать обе текстуры со смешиванием текстур для перехода от одной текстуры к другой.

Однако, если вы делаете это в течение длительного периода времени, вы можете предварительно рассчитать третью текстуру (смешанное состояние) и просто использовать ее как одну текстуру. Изредка пересчитываем «новое» состояние. Это потенциально упростит ваш рендеринг, так как вы будете использовать одну текстуру (которую вы будете менять медленно с течением времени) вместо того, чтобы всегда делать мультитекстурирование только для этого эффекта. (Если вы не делаете ничего, кроме этого, с объектами, которые вы текстурируете, и если текстуры не очень большие, простая мульти-текстура из двух текстур не представляет особой проблемы.)

1 голос
/ 20 ноября 2009

Используйте пиксельный шейдер.

float t : register(c0);

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

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

, где вы передаете в качестве суммы линейной интерполяции. t = 0.0 дает вам первую текстуру, t = 1.0 дает вам вторую текстуру, и она интерполируется линейно между ними.

Ваш формат файла тогда не имеет значения, и это позволяет избежать вычисления третьей текстуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...