Введение в программирование трехмерных игр с DX9



Режимы визуализации точечных спрайтов



14.1.2. Режимы визуализации точечных спрайтов

Поведение точечных спрайтов в основном контролируется через режимы визуализации. Сейчас мы рассмотрим эти режимы.

  • D3DRS_POINTSPRITEENABLE— Логическое значение. Значение по умолчанию — false.

    • True указывает, что установленная в данный момент текстура накладывается на точечные спрайты целиком.

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

    _device->SetRenderState(D3DRS_POINTSPRITEENABLE, true);

  • D3DRS_POINTSCALEENABLE — Логическое значение. Значение по умолчанию — false.

    • True указывает, что размер точки интерпретируется в единицах пространства вида. Единицы пространства вида просто ссылаются на трехмерную точку в пространстве камеры. В этом случае размер точечного спрайта масштабируется в зависимости от того, как далеко он находится. В результате, подобно всем другим объектам, частицы расположенные далеко от камеры будут выглядеть меньше, чем частицы, расположенные близко к камере.

    • False указывает, что размер точки интерпретируется в единицах экранного пространства. Единицы экранного пространства это отображаемые на экране пиксели. Так что если вы укажете false и, например, установите размер точечного спрайта равным 3, то он будет занимать на экране область размером 3 × 3 пикселя.

    _device->SetRenderState(D3DRS_POINTSCALEENABLE, true);

  • D3DRS_POINTSIZE — Используется для задания размера точечных спрайтов. Значение интерпретируется либо как единицы пространства вида, либо как единицы экранного пространства, в зависимости от установленного значения режима D3DRS_POINTSCALEENABLE. Приведенный ниже фрагмент кода устанавливает размер точки равным 2.5 единицам:

    _device->SetRenderState(D3DRS_POINTSIZE, d3d::FtoDw(2.5f));

    Функция d3d::FtoDw — это вспомогательная функция, добавленная нами в файлы d3dUtility.h/cpp, которая выполняет приведение типа float к типу DWORD.


    Содержание  Назад  Вперед