Навигация
Категории
C++,C#,C [19]
Уроки по средам разработки приложений с использованием C,C++,C#, а также .Net, DirectX, OpenGL и других
Delphi [14]
Уроки работы в среде программирования Delphi
Basic [13]
Уроки разработки приложений в среде Basic
DirectX [8]
Уроки по работе с DirectX, включая Direct3D и другие инструменты
Web [7]
Уроки по "Веб-программированию"
JavaScript [12]
Уроки по кодингу в Java и JavaScript
XNA [9]
Статьи и уроки программирование в среде XNA C++&C#
Профиль
Статистика
Rambler's Top100

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Locations of visitors to this page
Главная » Статьи » Программирование » XNA

Урок 4. Как рисовать простые 3D-объекты с помощью HLSL
Использование простого HLSL-шейдера для рисования 3D-объектов.
Перед изучением данного урока вам нужно ознакомиться со следующими уроками:
Шаг 1. Кликните правой кнопкой по папке проекта "Content" в окне "Solution Explorer". В появившемся меню выберите команду "Add -> New Item...".


Шаг 2.
Выберите тип файла "Effect File". Введите имя файла "effect.fx". Нажмите кнопку "Add".


Шаг 3. Студия создаст шаблонный эффект код которого нужно удалить, будем делать свой с нуля.


Шаг 4. В классе Programm замените поле типа BasicEffect на поле типа Effect.
1
2
3
4
5
// эффект BasicEffect
//BasicEffect effect;
 
// эффект (шейдер)
Effect effect;

Шаг 5. В методе LoadContent() замените код создания объекта BasicEffect на код создания объекта Effect загружающегося из файла "effect.fx".

метод LoadContent()
1
2
3
4
5
// создать эффект BasicEffect
//effect = new BasicEffect(graphics.GraphicsDevice, null);
 
// создать объект Effect используя контент менеджер
effect = Content.Load<Effect>("Effect");

 


Шаг 6. Добавьте в файл "effect.fx" следующий HLSL-код в котором объявляются функции вершинного и пиксельного шейдера, а также описывается первый проход техники "Technique0":
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// вершинный шейдер
void VS()
{
 
}
 
// пиксельный шейдер
void PS()
{
 
}
 
// первая техника (по-умолчанию)
technique Technique0
{
// первый проход
pass P0
{
// компиляция вершинного шейдера
vertexShader = compile vs_1_1 VS();
 
// компиляция пиксельного шейдера
pixelShader = compile ps_1_0 PS();
}
}

Шаг 7. Добавьте в функцию вершинного шейдера описание входящих и исходящих параметров.
1
2
3
4
5
6
7
8
9
10
11
12
// вершинный шейдер
void VS(
// входящие параметры - позиция и цвет вершины
in float4 inPos : POSITION,
in float4 inColor : COLOR0,
 
// исходящие параметры - позиция и цвет вершины
out float4 outPosition : POSITION,
out float4 outColor : COLOR0 )
{
 
}

 


Шаг 8. Добавьте в функцию вершинного шейдера код копирования позиции и цвета вершины.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// вершинный шейдер
void VS(
 
// входящие параметры - позиция и цвет вершины
in float4 inPos : POSITION,
in float4 inColor : COLOR0,
 
// исходящие параметры - позиция и цвет вершины
out float4 outPosition : POSITION,
out float4 outColor : COLOR0 )
{
// копируем позицию вершины
outPosition = inPos;
 
// копируем цвет вершины
outColor = inColor;
}

Шаг 9. Добавьте в функцию пиксельного шейдера описание входящих и исходящих параметров.

 

1
2
3
4
5
6
7
8
9
10
// пиксельный шейдер
void PS(
// входящий параметр - цвет пикселя
in float4 inColor : COLOR0,
 
// исходящий параметр - цвет пикселя
out float4 outColor : COLOR0 )
{
 
}

 

Шаг 10. Добавьте в функцию пиксельного шейдера код копирования цвета пикселя.
1
2
3
4
5
6
7
8
9
10
11
12
// пиксельный шейдер
void PS(
 
// входящий параметр - цвет пикселя
in float4 inColor : COLOR0,
 
// исходящий параметр - цвет пикселя
out float4 outColor : COLOR0 )
{
// копируем цвет пикселя
outColor = inColor;
}

Теперь при запуске приложения мы увидим пустое окно в котором будет нарисован цветной треугольник

В секции загрузок лежит архив с исходным кодом этого и других уроков.



Источник: http://www.xnadev.ru/articles.php?cat_id=2&rowstart=15
Категория: XNA | Добавил: gforcer (31.01.2010) | Автор: Админ
Просмотров: 1419 | Комментарии: 3 | Теги: программирование, xna, C#, c++ | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Друзья сайта
Демотиваторы
Copyright Зямаев Денис © 2017