Основы построения 3-х мерных сцен с использованием библиотеки DirectX. Макушкина Л.А - 12 стр.

UptoLike

14
Рисунок1.5 - Представление
На рисунке 1.5 графически показаны параметры этой функции. В точке Р
находится камера и из этой точки мы смотрим на мир. Все, что ближе плоскости
ZN или дальше ZF, мы видеть не можем. Угол между двумя линиями взора,
направленными под углом вниз и вверх, — это и есть значение fovy.
Теперь необходимо установить созданную матрицу устройству
iDirect3DDevice. Для ЭТОГО используется метод SetTransform:
HRESULT SetTransform(
D3DTRANSFORMSTATETYPE State,
CONST D3DMATRIX *pMatrix
);
Теперь функцию инициализации можно считать завершенной. Для
освобождения интерфейсов Direct3D используется метод Release. Сначала
необходимо вызвать этот метод, а потом обнулить переменную. При этом
освобождение ресурсов должно идти в обратном созданию порядке. В нашем
приложении сначала был создан интерфейс iDirect3D9, а затем iDirect3DDevice9.
Это значит, что сначала нужно уничтожить iDirect3DDevice9, а потом уже
iDirect3D9. Перед вызовом Release необходимо проверить существование
интерфейса.
Примитивы Direct3D
В Direct3D есть три примитива точка, отрезок и треугольник. Все
остальные примитивы можно построить с помощью этих трех составляющих. в
качестве примера начнем писать приложение, вращающее куб. Каждая сторона
его должна быть окрашена в свой цвет, чтобы вы могли увидеть, что это куб. Дело
в том, что у нас пока не будет освещения, без которого монолитно окрашенная
фигура будет казаться плоской. Разный цвет каждой грани позволит увидеть
объемность фигуры без освещения.
Листинг 1.3 - Функция инициализации куба
void CreateQuad()
{
// Массив вершин куба
const sVertex svVortexList[] = {
// Грань 1
                            Рисунок1.5 - Представление
     На рисунке 1.5 графически показаны параметры этой функции. В точке Р
находится камера и из этой точки мы смотрим на мир. Все, что ближе плоскости
ZN или дальше ZF, мы видеть не можем. Угол между двумя линиями взора,
направленными под углом вниз и вверх, — это и есть значение fovy.
     Теперь необходимо       установить созданную       матрицу   устройству
iDirect3DDevice. Для ЭТОГО используется метод SetTransform:
HRESULT SetTransform(
      D3DTRANSFORMSTATETYPE State,
      CONST D3DMATRIX *pMatrix
);
     Теперь функцию инициализации можно считать завершенной. Для
освобождения интерфейсов Direct3D используется метод Release. Сначала
необходимо вызвать этот метод, а потом обнулить переменную. При этом
освобождение ресурсов должно идти в обратном созданию порядке. В нашем
приложении сначала был создан интерфейс iDirect3D9, а затем iDirect3DDevice9.
Это значит, что сначала нужно уничтожить iDirect3DDevice9, а потом уже
iDirect3D9. Перед вызовом Release необходимо проверить существование
интерфейса.
     Примитивы Direct3D
     В Direct3D есть три примитива — точка, отрезок и треугольник. Все
остальные примитивы можно построить с помощью этих трех составляющих. в
качестве примера начнем писать приложение, вращающее куб. Каждая сторона
его должна быть окрашена в свой цвет, чтобы вы могли увидеть, что это куб. Дело
в том, что у нас пока не будет освещения, без которого монолитно окрашенная
фигура будет казаться плоской. Разный цвет каждой грани позволит увидеть
объемность фигуры без освещения.
     Листинг 1.3 - Функция инициализации куба
void CreateQuad()
{
  // Массив вершин куба
  const sVertex svVortexList[] = {
    // Грань 1
                                         14