Компьютерная графика, мультимедиа и игры на Visual C#


Глава Методика проектирования неподвижных и подвижных пространственных фигур - часть 3


    //При помощи матрицы проецирования (projection matrix)

    //выполняем перспективные преобразования:

    myDevice.Transform.Projection =

        Matrix.PerspectiveFovLH(

        (float)Math.PI / 4.0f, 1.0f, 1.0f, 100.0f);

}

//Определяем освещение фигуры цветом формата ARGB:

private void SetupLights()

{

    //Устанавливаем материал и его цвет.

    //Можно одновременно использовать только один материал:

    Material myMaterial = new Material();

    Color myColor = Color.White;

    myMaterial.Diffuse = myColor;

    myMaterial.Ambient = myColor;

    myDevice.Material = myMaterial;

    //Устанавливаем белое освещение

    //с изменяющимся направлением:

    myDevice.Lights[0].Type = LightType.Directional;

    myDevice.Lights[0].Diffuse = Color.DarkTurquoise;

    myDevice.Lights[0].Direction = new Vector3(

       (float)Math.Cos(Environment.TickCount / 250.0f), 1.0f,

       (float)Math.Sin(Environment.TickCount / 250.0f));

    //Включаем освещение:

    myDevice.Lights[0].Enabled = true;

    //Включаем немного отраженного (Ambient)

    //равномерно рассеянного света:

    myDevice.RenderState.Ambient = Color.FromArgb(0x202020);

}

//Выполняем визуализацию преобразованных вершин:

public void myRendering()

{

    if (myPause) return;

    //Очищаем и заливаем форму Form1 белым цветом:

    myDevice.Clear(ClearFlags.Target | ClearFlags.ZBuffer,

        Color.White, 1.0f, 0);

    //Начинаем сцену:

    myDevice.BeginScene();

    //Устанавливаем освещение и матерал:

    SetupLights();

    //Задаем матрицы (world, view, projection):

    SetupMatrices();

    myDevice.SetStreamSource(0, myVertexBuffer, 0);

    myDevice.VertexFormat =

        CustomVertex.PositionNormal.Format;

    //Рисуем фигуру:

    myDevice.DrawPrimitives(

        PrimitiveType.TriangleStrip, 0, (4 * 25) - 2);

    //Заканчиваем сцену:

    myDevice.EndScene();

    //Обновляем экран:

    myDevice.Present();

}

//Останавливаем вращение фигуры

//во время изменения размеров формы Form1:   




Начало  Назад  Вперед



Книжный магазин