раженням тіней в XNA. Існують різні техніки роботи з тінями, ми розглянемо отрисовку тіней з використанням так званого буфера трафаретів, або, по-англійськи - Stencil Buffer. Buffer є стандартним пристроєм, що входить до складу сучасних відеокарт. Однак, різні відеокарти можуть мати різний розмір цього буфера, тому, перед його використанням, необхідно визначити, який саме буфер доступний на відеокарті, використовуваної в даний момент. p align="justify"> Для створення тіні ми скористаємося методом CreateShadow об'єкта Matrix. Він дозволяє створювати тінь від об'єкту на основі інформації про джерело освітлення і площини, на яку повинна проектуватися тінь. p align="justify"> Після того, як усвідомлена матриця, що представляє собою тінь, ми використовуємо цю матрицю для виведення тіні. Причому, техніка роботи така: спочатку вивести сцену, освітлену так, як потрібно, після цього відповідним чином налаштувати буфер трафаретів і вивести ту ж сцену без освітлення, модифікувавши світову матрицю за допомогою отриманої матриці тіні. p align="justify"> У цій програмі так само розробимо переміщенням джерела світла. Зокрема, ми застосуємо для малювання об'єктів один направлений джерело світла, напрямок якого можна міняти за допомогою клавіш клавіатури - координата Z змінюється за допомогою клавіш-Z і X, координата X - С і V, координата Y - B і N. Зміна напрямку освітлення впливає не тільки на висвітлення об'єктів, а й на тінь. br/>
6. Програмна реалізація системи моделювання руху 3D об'єкту modCls, який відповідатиме за зберігання параметрів, відповідних цим об'єктам і за їх візуалізацію
public class modCls: Microsoft.Xna.Framework.DrawableGameComponent
{
// МодельModel myModel;
// Світова матриця, матриці виду і проекції
publicMatrix WorldMatrix; ViewMatrix; ProjectMatrix;
// Напрямок світла
public Vector3 LightDirection;
// Матриця для відображення теніshadow;
// Площина, на якій відображається тінь
Plane sPlane;
// Співвідношення сторін екранаaspectRatio;
// Для управління графічним пристроєм
GraphicsDeviceManager graphics;
// Конструктор отримує на вхід
// ігровий клас, модель, об'єкт для управління графічним пристроєм
public modCls (Game game, Model mod, GraphicsDeviceManager grf, Plane pl) (game)
{
myModel = mod; = grf; = pl; = (float) graphics.GraphicsDevice.Viewport.Width/
(float) graphics.GraphicsDevice.Viewport.Height;
LightDirection = new Vector3 ();
}
Після тог...