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



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


Нам приходится выполнять эту операцию потому что функция IDirect3DDevice9::SetRenderState ожидает значения типа DWORD а не float.

DWORD d3d::FtoDw(float f) { return *((DWORD*)&f); }

  • D3DRS_POINTSIZE_MIN — Задает минимальный размер точечного спрайта. Приведенный ниже пример устанавливает минимальный размер равным 0.2:

    _device->SetRenderState(D3DRS_POINTSIZE_MIN, d3d::FtoDw(0.2f));

  • D3DRS_POINTSIZE_MAX — Задает максимальный размер точечного спрайта. Приведенный ниже пример устанавливает максимальный размер равным 5.0:

    _device->SetRenderState(D3DRS_POINTSIZE_MAX, d3d::FtoDw(5.0f));

  • D3DRS_POINTSCALE_A, D3DRS_POINTSCALE_B, D3DRS_POINTSCALE_C — Эти три константы позволяют управлять тем, как будет меняться размер точечного спрайта при изменении расстояния от него до камеры.

  • Для вычисления итогового размера точечного спрайта на основании расстояния до камеры и рассматриваемых констант Direct3D использует следующую формулу:





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