06.05.2024 18:43:22
Навигация
· XNA FAQ
· С чего начать
· Конкурсы
· Обратная связь
· XNA Блоги
Сейчас на сайте
· Гостей: 2

· Пользователей: 0

· Всего пользователей: 7,142
· Новый пользователь: Sarahseato
Последние фото
Thurs Puzzle
Thurs Puzzle
Альбом: XNA Games

Thurs Puzzle
Thurs Puzzle
Альбом: XNA Games

Thurs Puzzle
Thurs Puzzle
Альбом: XNA Games

Блоги
general
» Unity3D – Chunky ...
general
» Unity3D: Simple p...
dampirik
» Записки программи...
dampirik
» Локализация прило...
dampirik
» Эффективность рас...
general
» HLSL: Шейдер воды
general
» Unity 3D: Управле...
general
» Unity 3D: FPS scr...
yavshoke
» XboxOne - интерес...
dampirik
» Push уведомления ...
Поддержка
microsoft.com
1gb.ru - Дом для вашего сайта
Урок 1. Пишем первое приложение с XNA 3.0
Это первый урок из серии уроков по XNA, поэтому он самый простой, и я не думаю, что те, кто работал с MDX (Managed DirectX) найдут здесь что-то необычное. Прошу меня не винить, если вам что–то не нравиться в моем коде или статье, я средний программист и просто у меня нашлось время разобраться в XNA и написать пару статей.

Что предполагается разобрать и сделать на этом уроке:
  • подключить сборки XNA Framework,
  • создать пустое приложение с закрашиванием фона
  • реализовать полноэкранный режим (fullscreen).

Первым делом создайте пустой проект. Сейчас вы должны подключить сборки XNA Framework. Для этого нажмите правой кнопкой мыши на References и нажмите Add References. Выберите Microsoft.XNA.Framework и Microsoft.XNA.Framework.Game.

Добавьте файл класса и придумайте ему, какое-нибудь название, например, “Simple.cs”. Пропишите в директиву using объявления сборок как показано ниже:

 

1
2
3
4
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

Теперь вы уже готовы чтобы работать с XNA. Для реализации основного класса игры можете либо использовать главный класс программы, где у вас точка входа, либо написать в другом классе, например, class Game1. Мы напишем в нашем главном классе. Унаследуйте ваш класс от Microsoft.Xna.Framework.Game.

 

 

1
class Program : Microsoft.Xna.Framework.Game

 

Это даст нам доступ к методам рисования, обновления, инициализации приложения и т.п. Теперь пропишите в точке входа main следующий код:

 

1
2
3
4
5
6
7
static void Main(string[] args)
{
using(Program game1 = new Program())
{
game1.Run();
}
}

Где “Program” это название вашего класса, вы можете использовать любое другое. Здесь мы просто запускаем наше приложение – игру (функция Run()), которую переопределять нет необходимости. Создайте в классе Program графический компонент, который мы будем использовать для вывода графики. Объявите переменную “graphics” как показано ниже и пропишите конструктор, где будет инициализироваться эта переменная.

 

 

1
2
3
4
5
6
7
//Объявляем графический компонент - который будет использоваться для вывода
GraphicsDeviceManager graphics;
 
public Program()
{
graphics = new GraphicsDeviceManager(this);
}

 

Также на будущее можете переопределить функцию обновления и рисования (где мы зальем светло синим цветом экран).

 

1
2
3
4
5
6
7
8
9
protected override void Update(GameTime gameTime)
{
//обновление различных параметров (напр. Использование физики)
}
 
protected override void Draw(GameTime gameTime)
{
//рисование
}

 

Теперь мы можем смело рисовать в окне. Для того чтобы закрасить экран напишите в функции Draw() этот код.

 

1
2
3
4
5
6
7
8
9
//Используем графический компонент для очистки в светло-синий цвет
graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
 
graphics.GraphicsDevice.BeginScene();
 
//Здесь описывается сама сцена
 
//Представляем все на экран
base.Draw(gameTime);

Очистка экрана выполняется с помощью Clear которая имеет пять вариантов:

В первом который мы используем пристутствует один параметр который задает, каким цветом мы хотим очистить главную область. Есть также такие варианты:

 

1
2
3
4
void GraphicsDevice.Clear(ClearOptions options, Color color, float depth, int stencil);
void GraphicsDevice.Clear(ClearOptions options, Vector4 color, float depth, int stencil);
void GraphicsDevice.Clear(ClearOptions options, Color color, float depth, Rectangle[] regions);
void GraphicsDevice.Clear(ClearOptions options, Vector4 color, float depth, Rectangle[] regions);

Второй и тертий(четверты и пятый) варианты отличатся лишь тем что по разному задается компонента цвета. В тертьем варианте задается с помощью четырех параметров (RGBA). Параметр regions позволяет задать какие определенные прямоуголные области будут подвергнуты очистке.

Если вы хотите сделать ваше приложение (игру) полноэкранным то добавьте в функцию инициализации графического компонента следующий код.

1
2
3
4
5
6
7
8
9
10
//настраиваем устройство
this.graphics.BackBufferWidth = 800;//Задаем ширину
this.graphics.BackBufferHeight = 600;//И высоту
 
//перед тем как задавать формат пиксела рекомендуется удостовериться, что
//этот форат поддерживает ваша видеокарта
this.graphics.BackBufferFormat = SurfaceFormat.Bgr565; //Устанавливаем формат пиксела
 
//Задаем режим fullscreen
this.graphics.IsFullScreen = true;

 

В следуещем уроке вы узнаете как вводить спрайты и загружать текстуры.

Автор: Василенко Владислав
Комментарии
#1 | Gargo 03.05.2009 22:42:07
1)блин, а нельзя было сделать, чтобы код можно было нормально скопировать со страницы, ато либо вручную приходится, либо копировать, потом править каждую строчку. А если у человека времени в обрез на изучение?
По крайней мере такое в Эксплорере.
2)эта строчка XNA3.0 не воспринимает вообще:
graphics.GraphicsDevice.BeginScene();
#2 | SolarWind 05.05.2009 22:13:01
Эти уроки писались когда XNA была еще в бете.
Для торопящихся изучить все есть готовые исходники - http://www.xnadev.ru/downloads.php?page_id=9
#3 | starostin 28.11.2009 20:41:39
По-моему надо подправить, когда реч зашла о полноэкранном режиме возникли проблемы с именами методов
#4 | semverchenko 31.01.2010 18:31:23
так, вроде, работает(XNA 3.1)

GeSHi: C#
  1. using System;
  2. using System.Collections.Generic;
  3. using Microsoft.Xna.Framework;
  4. using Microsoft.Xna.Framework.Graphics;
  5.  
  6. class Program : Microsoft.Xna.Framework.Game
  7. {
  8. protected override void Update(GameTime gameTime)
  9. {
  10. //обновление различных параметров (напр. Использование физики)
  11. }
  12. protected override void Draw(GameTime gameTime)
  13. {
  14. graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
  15. base.Draw(gameTime);
  16. }
  17. GraphicsDeviceManager graphics;
  18. public Program()
  19. {
  20. graphics = new GraphicsDeviceManager(this);
  21. //настраиваем устройство
  22. graphics.PreferredBackBufferWidth = 1024;//Задаем ширину
  23. graphics.PreferredBackBufferHeight = 768;//И высоту
  24. //перед тем как задавать формат пиксела рекомендуется удостовериться, что
  25. //этот форат поддерживает ваша видеокарта
  26. graphics.PreferredBackBufferFormat = SurfaceFormat.Bgr565; //Устанавливаем формат пиксела
  27. //Задаем режим fullscreen
  28. graphics.IsFullScreen = true;
  29. }
  30. static void Main(string[] args)
  31. {
  32. using (Program game1 = new Program())
  33. {
  34. game1.Run();
  35. }
  36. }
  37. }
  38.  
  39.  
Добавлено за 0.009 секунд, используя GeSHi 1.0.8.2
#5 | Hale_32bit 24.02.2010 18:41:18
Пропишите пожалуйста в уроке закрытие программы по нажатию кнопки, а то не хорошо получается.
#6 | inverse 04.03.2010 16:36:31
Подскажите как сделать, чтобы окно было на весь экран, но возможность свернуть его или уменьшить оставалась?
#7 | NeoN 24.03.2010 23:00:17
//закрытие приложения по нажатии кнопки ESC
if (Keyboard.GetState().IsKeyDown(Keys.Escape))
this.Exit();
//размещение в методе Update
#8 | NeoN 24.03.2010 23:01:55
inverse:
как ты себе представляешь уменьшение или увеличение полно экранного приложения. вопрос яснее пожалуйста.
#9 | XmAN 09.08.2010 21:07:05
Для XNA 3.1 пришлось поправить, чтобы заработало:
1) Убрать из метода Draw() строку
GeSHi: C#
  1. graphics.GraphicsDevice.BeginScene();
Добавлено за 0.005 секунд, используя GeSHi 1.0.8.2

2) В функцию инициализации графического компонента добавить следующий код
GeSHi: C#
  1. this.graphics.ApplyChanges();
Добавлено за 0.004 секунд, используя GeSHi 1.0.8.2
#10 | NightmareZ 20.03.2012 16:37:16
NeoN: Я бы лучше сделал так:
GeSHi: C#
  1. if (Keyboard.GetState().GetPressedKeys().Contains(Keys.Escape))
  2. Exit();
Добавлено за 0.005 секунд, используя GeSHi 1.0.8.2
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Отлично! Отлично! 56% [5 Голоса]
Очень хорошо Очень хорошо 11% [1 Голос]
Хорошо Хорошо 22% [2 Голоса]
Удовлетворительно Удовлетворительно 11% [1 Голос]
Плохо Плохо 0% [Нет голосов]
Авторизация
Логин

Пароль



Забыли пароль?
Запросите новый здесь.
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

11.12.2023

11.12.2023
[img]https://x.pin
-up-world.com/imag
es/img4.jpg[/img]
[url=https://ofoi.
cenditt.loan/new-k
atiana-kay-fucking
-with-lucky-fan-p1
-porn-scenes/]133K
67% New Katiana

11.12.2023
[img]https://wwt.s
sgameadmin2.com/im
ages/img4.jpg[/img
]
[url=https://k.smi
letaxservice.com/r
edirect/SFpEdDR1cG
V4czNKMmxlQi9tVytI
d3dxWW9GWTd5Zk52TD
VVMG1mc3YvUmlDMWUw

11.12.2023

11.12.2023

10.12.2023
[img]https://ey.os
prey-holidays.uk/i
mages/img10.jpg[/i
mg]
[url=https://nby.h
ighlyresponsible.c
om/696488/sexyfeet
girl2020-gotta-kee
p-them-soft-lookin
g-

30.11.2023
[img]https://nuggi
e.army/images/img1
5.jpg[/img]
German Porno kostenlos - Deutsche Pornos & Pornofilme. [url=ht

30.11.2023

30.11.2023
[img]https://where
ijoin.com/images/i
mg8.jpg[/img]
Voir Films VF VOSTFR - . [url=http://mvig.j
ulieemontelaro.com
/]omegleX

30.11.2023
[img]https://steam
unlocked.tangobliv
ion.com/images/img
14.jpg[/img]
Top - Rated Live Sex Cam Videos to Watch Online. [

29.11.2023

29.11.2023
[img]https://chaii
t.com/images/img8.
jpg[/img]
Ottmaza.live - Ottmaza.Com Official Website | Ottmaza | Ottmaza.Net | Ottmaz

29.11.2023
[img]https://ezyja
mb.co.uk/images/im
g10.jpg[/img]
Free Porn - Sex, Tube Videos, XXX Pics, Pussy in Porno

29.11.2023
[img]https://launc
hbusinessloans.org
/images/img15.jpg[
/img]
Asyalı - Koreli Japon Seks Filmleri Türkçe A

29.11.2023
[img]https://panen
poker.org/images/i
mg8.jpg[/img]
[url=http://watchm
ovies.seoullittlem
all.com/]Junkie Musik Lossless &#ff7dee MГєsica ElectrГіnica p

RSS каналы сайта
XNA - Новости
XNA - Статьи
XNA - Форум
XNA - Галерея
XNA - Файлы
Время загрузки: 0,27 секунд 13,298,497 уникальных посетителей