PIXNET Logo登入

StreamWhite

跳到主文

Enjoy your Coding Live!

部落格全站分類:數位生活

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 9月 14 週二 201016:09
  • [XNA 4.0學習筆記] 使用Microphone來記錄聲音

XNA 4.0在聲音的部分新增加了麥克風的功能,現在可以使用麥克風來錄製聲音。

這個功能支援WP7、Xbox 360和PC等具有麥克風的產品。

我們可以藉由這項功能,來豐富話我們的遊戲。

這邊就提供簡單的範例程式。用麥克風這項功能主要是會用到Microphone這個物件。

如果在標頭的地方沒有using Microsoft.Xna.Framework.Audio請手動加入。

(繼續閱讀...)
文章標籤

teexit1224 發表在 痞客邦 留言(0) 人氣(354)

  • 個人分類:XNA
▲top
  • 9月 14 週二 201012:15
  • [XNA 4.0學習筆記] 抓取出Model裡面的Vertex資訊

模型是由很多Vertex所組成的,在content pipeline中會將3D model轉換成XNB檔案。

然後在Content.Load這個指令再去讀取XNB檔案。

讀取進來以後,裡面就會有3D model有的資料(像是vertex, normal, texture coordniate等)

而我們要如何取出這些資訊呢?

我們需要準備N個容器(如果只要抓取Vertex就只要一個容器即可)。

(繼續閱讀...)
文章標籤

teexit1224 發表在 痞客邦 留言(0) 人氣(394)

  • 個人分類:XNA
▲top
  • 9月 14 週二 201009:45
  • [XNA 4.0 學習筆記] 3D模型呈現和如何與2D貼圖並存

在很早之前的文章,有針對XNA 1.0的版本做3D模型顯像的範例程式說明。

使用著還是可以參考之前的說明,然後對照看一下即可。

兩著不會差異太多。

要將模型顯像出來,首先需要宣告一個Model的物件

可以在類別中空白位置宣告一個變數

(繼續閱讀...)
文章標籤

teexit1224 發表在 痞客邦 留言(0) 人氣(1,049)

  • 個人分類:XNA
▲top
  • 9月 14 週二 201000:10
  • [XNA 4.0 學習筆記] Streaming的方式播放音樂

在XNA 4.0中,針對Audio的部分提供一個方便用好用的方法供使用者使用。

現在你可以將你的MP3 Content放在網路上面,然後再XNA用streaming的方式來播放音樂。

要使用這個功能相當的簡單!!

1. 開啟你的XNA 4.0專案。

2. 在initialize的函數中,打入以下程式碼

(繼續閱讀...)
文章標籤

teexit1224 發表在 痞客邦 留言(0) 人氣(305)

  • 個人分類:XNA
▲top
  • 9月 11 週六 201023:55
  • [XNA 4.0學習筆記] 內建狀態物件

XNA 4.0提供狀態物件,狀態物件將原本以往零零散散的屬性設定變成一個單一個物件。
像原本3.0的時候,我們要將要將3D模型用網格畫出來,我需要設定特定的屬性。
設定Cull模式,也是要設應特定的屬性。
每次要找那些屬性都是一個頭兩個大,而在這次新的改版中,XNA 4.0提供
BlendState, DepthStencilState, RasterizerState, 和SamplerState,讓程式設計師使用。
比較常用的是
RasterizerState: 設定Cull模式(順時鐘或是逆時鐘),設定填滿模式(填滿或是網格)。
SamplerState: 設定貼圖取樣方式。在使用者自訂的shader code當中,我們可以在shader設定
貼圖取向的方式,如:
texture diffusemap;
sampler mdiffusemap;Sampler = sampler_state
{
    texture = <diffusemap>;
    magfilter = LINEAR;
    minfilter = LINEAR;
    mipfilter = LINEAR;
    AddressU = CLAMP;
    AddressV = CLAMP;
};
上述程式碼是使用shader的方式控制貼圖取樣。
而現在XNA 4.0讓你也可以在程式碼當中指定類似這樣的事情。
EX:
SamplerStateCollection temp = GraphicsDevice.SamplerStates;
temp[0].Filter = TextureFilter.Linear;
用這種方式來設定第0張貼圖的資訊。

(繼續閱讀...)
文章標籤

teexit1224 發表在 痞客邦 留言(0) 人氣(229)

  • 個人分類:XNA
▲top
  • 9月 11 週六 201023:31
  • [XNA 4.0學習筆記] 新增五個內建特效

XNA 4.0在特效上面提供更多的選擇讓使用者選擇使用,而這些效果都是可以支援到Reach和HiDef兩個Profile。
這次XNA 4.0提供的特效如下所示:

1. Basic Effects: 提供基本的Blinn-Phong打光效果,這是在之前的XNA版本就有提供的操作,設計者可以
自行開啟打光效果,設定相關參數設定等等。
2. Dual Texture Effects: 雙重貼圖效果,使用兩張貼圖並使用混合的方式達到更多樣的效果。(像是使用者
可以先貼上基本的貼圖,然後再貼上一張細節貼圖,增加模型的好看效果)
3. Alpha Test Effects: 提供一種方式來做Alpha的測試效果。
4. Skinned Effects: 這個效果是提供給Skinned(3D模型的變形)所使用的效果。(最多可以支援到72個骨頭,
每個骨頭最多可以有四個不同的權重。
5. Environment Map Effects: 使用環境貼圖的特效。

基本上上述五個特效,主要是補足Reach的不足。因為Reach並不支援使用者自訂的特效。所以我們可以藉由上述
五個預設的特效來做到我們需要的效果。

(繼續閱讀...)
文章標籤

teexit1224 發表在 痞客邦 留言(0) 人氣(212)

  • 個人分類:XNA
▲top
  • 9月 11 週六 201015:05
  • [XNA 4.0學習筆記] Profile顯像材質參數設定

XNA 4.0在顯示上面(包含RenderTarget和一般直接顯像)有提供兩種不同的Profile,Profile根據文件所說指的就是硬體所提供的功能。

每個繪圖卡都可能會提供不同的功能,像是有些繪圖卡提供浮點數運算的材質貼圖,有些沒有這個功能等等。
在之前的XNA版本中,XNA主要受限這個限制所以有時候會發生一種情況...

明明寫了一個RT相關的程式,結果在自己的電腦跑不出來該有的效果,然後拿到別台又OK的情況...

在新版的XNA 4.0中,特別在RT上面提供兩種不同的格式: Reach和HiDef。

Reach主要適用於所有XNA可以支援的平台,包含PC、360和WP7等。
HiDef支援360和部分PC(需支援DX10顯卡)可能大家看了應該就很高興了,竟然會用到DX10顯卡的功能!!
這意味是不是XNA開始提供DX 10的功能了呢!?

這是否定的!XNA主要架構還是建立在DX9的SDK上面,會使用DX10顯卡,主要是確保顯卡能夠提供足夠的功能
(包含貼圖格式的屬性、大小限制等等)

要如何設定現在使用的是Reach還是HiDef格式呢?
在Initialize的地方:
graphics.GraphicsProfile = GraphicsProfile.HiDef;

這樣就是設定顯像方式的貼圖設定是使用HiDef的規格。

目前個人見解是...  如果是PC或XBOX360的遊戲開發,直接使用HiDef的格式比較好,提供的支援比較大。

兩個模式比較結果如下。

 


支援但是存有些限制(不支援Wrap重複貼圖模式、不支援MIPMAP、DXT壓縮格式需要2的指數次方)


(繼續閱讀...)
文章標籤

teexit1224 發表在 痞客邦 留言(0) 人氣(238)

  • 個人分類:XNA
▲top
  • 9月 11 週六 201014:15
  • [XNA 4.0學習筆記] 轉移ZUNE或ZUNE HD程式碼到WP7

這部份算官方文件的一部分,因為剛好也在學習中,所以就把所知道的東西分享出來。

WP7最低解析度800*480。如果要從ZUNE的專案改到WP7,解析度部分需要調整。(ZUNE HD 480*272)(ZUNE240*320)
針對解析度調整的部分,有兩種方式可以設定:
1. 由美術手動調整材質資源的大小(像是貼圖的大小調整)。
2. 由內建的硬體調整(也就是更改目前顯示的解析度)。對於上述所說的方法,第一種是不太建議的,通常都是使用第二種方法來做解析度的調整。
要調整解析度只需要更改preferred back buffer的大小即可,像是:
在Initialize的函數中的程式碼中
graphics = new GraphicsDeviceManager(this);
graphics.PreferredBackBufferWidth = 272;
graphics.PreferredBackBufferHeight = 480;

建立好GraphiceDeviceManager後可以使用graphice的物件來做preferred back buffer大小調整。

解析度調整過後,還需要針對於輸入操作上面做調整。在WP7上面你可以使用觸控或是加速器的資訊來做輸入的操作。
在觸控操作這邊需要手動加入一個標頭檔"Microsoft.Xna.Framework.Input.Touch"
在程式碼的最上方加入using Microsoft.Xna.Framework.Input.Touch,如此一來就可以開始寫觸控上面的操作。

在加速器的部分,這部分主要是由Microsoft Windows Phone Developer Tools CTP所管理的,並非XNA的framework內容
,所以需要引入Microsoft.Devices.Sensors來做加速器的資訊取得。

在WP7的儲存資源部分與ZUNE上有些微的不同,原本的在XNA 3.1之前都是使用StorageContainer.TitleLocation來設定儲存的設定。
不過StorageContainer.TitleLocation在4.0當中是已經不被准許的操作(這個方法被移除掉了)
如果要存取檔案的部分,這邊需要使用OpenStream的方式來做存取操作。
EX:
long size;

void openFile()
{
     try
     {
          System.IO.Stream stream = TitleContainer.OpenStream("ship.dds");
          System.IO.StreamReader sreader = new System.IO.StreamReader(stream);
          // use StreamReader.ReadLine or other methods to read the file data

          Console.WriteLine("File Size: " + stream.Length);
          size = stream.Length;
          stream.Close();
     }
     catch (System.IO.FileNotFoundException)
     {
          throw;
     }
}

 

檔案存取的部分,可以用上述方式取得資料。但是,如果要將使用者的資訊儲存在WP7上面的話,需要使用IsolatedStorageFile.GetUserStoreForApplication來存取使用者個別的資料。

(繼續閱讀...)
文章標籤

teexit1224 發表在 痞客邦 留言(0) 人氣(259)

  • 個人分類:XNA
▲top
  • 5月 05 週三 201014:20
  • XNA WP7 教學文件

現在網路上面開始有些教學文件交使用者怎麼開發WP7的遊戲程式。

現在推薦一個簡易的PDF文件

裡面有交怎麼樣開發XNA的WP7遊戲程式

http://charlespetzold.com/phone/index.html

(繼續閱讀...)
文章標籤

teexit1224 發表在 痞客邦 留言(1) 人氣(843)

  • 個人分類:XNA
▲top
  • 4月 25 週日 201014:50
  • XNA 4.0 Phong Shading 實作 shader implement

接下來就是進行實作的部分,時做的部分這邊我只說明實作可能會想問的問題,詳細內容各位可以下載原始的程式碼。

(本範例程式碼,包含使用基本的basicEffect特效將模型顯示)

模型的部分,這邊我是使用OBJ檔案格式,在XNA Creater club上面有一個範例,裡面是使用自定的content pipeline來將obj檔案資訊分析出來,這邊我們就直接運用它即可。

在renderer.cs的程式碼中,裡面有一個函數use_BasicEffect程式碼如下

 1: public void use_BasicEffect()
 2: {
 3:  for (int i = 0; i < scene_model.Length; i++)
 4:  {
 5:  foreach (ModelMesh mesh in scene_model[i].Meshes)
 6:  {
 7:  foreach (BasicEffect effect in mesh.Effects)
 8:  {
 9:  effect.EnableDefaultLighting();
 10:  effect.World = Matrix.Identity;
 11:  effect.View = camera.View;
 12:  effect.Projection = camera.Projection;
 13:  }
 14:  mesh.Draw();
 15:  }
 16:  }
 17: }

(繼續閱讀...)
文章標籤

teexit1224 發表在 痞客邦 留言(0) 人氣(527)

  • 個人分類:
▲top
«123...18»

個人頭像

teexit1224
暱稱:
teexit1224
分類:
數位生活
好友:
累積中
地區:

MSN

文章分類

  • 未分類文章 (1)

網誌搜尋

近期文章

    XNA教學

    XNA DPT Blog

    Game Developer

    工具

    BLOG AD

    參觀人氣

    • 本日人氣:
    • 累積人氣:

    誰來我家

    XNA 4.0

    資源

    廣告聯播

    我的蒐藏

    BLOG觀察

    Where from

    Microsoft@MVP

    Take Easy