Xna环境在PC平台下的功能扩展

来源:互联网 发布:掷骰子软件 编辑:程序博客网 时间:2024/06/13 14:02

 如大家所知,DirectX与Xna之间有着千丝万缕的联系,而后者更侧重于跨平台,于是便在前者的基础上砍掉了部分PC的专属功能,新增了一些各平台通用的功能。

 如果仅仅是使用Xna写PC平台下的游戏,而不考虑跨平台问题。我们依然可以通过某些手段,重拾部分PC功能,但要切记,这些功能为PC专有,不满足跨平台的需要

1.Xna播放视频文件(借助ManagedDirectX)

using Microsoft.DirectX.AudioVideoPlayback;

using System.Windows.Forms;

Video video;

string videoFile = "clock.avi";

video = new Video(videoFile);

video.Owner = Form.FromHandle(this.Window.Handle);

video.Owner.Size = new System.Drawing.Size(1024,768);

video.Size = new System.Drawing.Size(1024, 768 - 30); // 30是窗口任务栏的高度

video.Play();

Xna目前貌似还没有现成的视频管线,要自己实现的话具备相当的难度。如果是PC平台下,则可使用这个现成的方法。

2.Xna播放音频文件(借助ManagedDirectX)

using Microsoft.DirectX.AudioVideoPlayback;

Audio audio;

string mp3File = "HunDouLuo.mp3";

audio = new Audio(mp3File);

audio.Play();

Xna2.0之前仅支持wav的音频播放,3.0、3.1具备了支持MP3的内容管线。如果要播放MP3,而又不借助于Xna的内容管线,可以用这个方法。

3.Xna绘制中文字体(借助Gdi+)

少量灵活的字体或者效率要求不高时,可以采用这个方法。参看我以前的文章即可。

 

如下是一些常见的Xna类型与WinApp类型间的平行接口,熟练掌握有利于更加灵活的扩展Xna环境在PC平台下的功能。

1. GameWindow <==> Control

    Control = Form.FromHandle(GameWindow .Handle);

2. Texture2D <==> MemoryStream

    Texture2D = Texture2D.FormFile(GraphicsDevice, MemoryStream);

 

Xna在PC平台下常用的初始化操作总结:

1.设置鼠标可见,且感应游戏窗口操作
     Mouse.WindowHandle = this.Window.Handle;
     this.IsMouseVisible = true;

2.修改游戏窗口大小
     graphics.PreferredBackBufferWidth = 1280;
     graphics.PreferredBackBufferHeight = 720;

3.设置全屏效果
     graphics.IsFullScreen = true;

原创粉丝点击