Пятница, 15 Ноября 2024, 01:09

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
DirectX 11: Global Effect
RDeviceДата: Пятница, 05 Августа 2016, 02:36 | Сообщение # 1
был не раз
Сейчас нет на сайте
Хочется узнать, можно ли запретить ImmediateContext'у устанавливать эффекты в текущий кадр?
Если по-русски, то:
Код

    GraphicsDevice->Clear(1);

    GraphicsDevice->SetForceEffectThisFrame(Effect); //Устанавливаем эффект на весь кадр
                    //(При вызове Present он обнуляется и не используется до последующего вызова)
    GraphicsDevice->DrawMyLittlePony(OtherEffect);  //Рисуем какую-то фигню, используя какой-то другой эффект

    GraphicsDevice->Present();

Как следствие, после вызова SetForceEffectThisFrame(), нужно запретить вызов ImmediateContext->VSSetShader() и ImmediateContext->PSSetShader(),
чтобы у нас использовался только Effect для всей геометрии, а не Effect и OtherEffect.

Первым делом я решил просто сделать проверку:
Код

void GraphicsDevice::DrawMyLittlePony(OtherEffect)
{
    if (Effect == NULL)
    {
        ImmediateContext->VSSetShader(OtherEffect->VertexShader, ..., ...);
        ImmediateContext->PSSetShader(OtherEffect->PixelShader, ..., ...);
    }
}

Но понял, что можно вызвать так:
Код

    GraphicsDevice->Clear(1);

    GraphicsDevice->SetForceEffectThisFrame(Effect);
    GraphicsDevice->ImmediateContext->VSSetShader(OtherEffect->VertexShader, ..., ...);
    GraphicsDevice->ImmediateContext->PSSetShader(OtherEffect->PixelShader, ..., ...);
    GraphicsDevice->DrawMyLittlePony(OtherEffect);

    GraphicsDevice->Present();

Добавлено (05 августа 2016, 02:36)
---------------------------------------------
ладно, понял, прошаренных тут нет, тему можно закрыть

  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг