XNA
をテンプレートにして作成
[
ホーム
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
*XNA [#hd6ed4ec]
このページの情報は古いです。
2008年頃の情報です。
XNAのバージョン2.0くらいです。
[[Wikipedia:XNA:http://ja.wikipedia.org/wiki/Microsoft_X...
----
#contents
** 初期設定 [#hfdb116f]
XNAのバージョン2.0くらい。
- インストールするもの
- Visual C# 2005 Express Edition(Visual studio2005が無...
XNA Game Studio
- Visual C# 2005 Express Edition
http://www.microsoft.com/japan/msdn/vstudio/express/past/...
- XNA Game Studio 2.0
http://www.microsoft.com/downloads/details.aspx?FamilyId=...
- プロジェクトの作成
Visual C# を起動。
[ファイル]タブ -> [新しいプロジェクト] -> 左側の[プロジェ...
あとは普通にビルドすれば青い画面が表示されるはずです。
** Vsync同期をOFFにする [#ld52e0ab]
GraphicsDeviceManager.SynchronizeWithVerticalRetrace = f...
** パフォーマンス計測 [#m195c67b]
System.Diagnostics.Stopwatch Stopwatch = new System.Diag...
Stopwatch.Start();
/// コード
Stopwatch.End();
float time = Stopwatch.ElapsedTicks / (float)(System.Dia...
** カリング面の変更 [#n73b748b]
GraphicsDevice.RenderState.CullMode = ;
// モードの種類
CullMode.CullCounterClockwiseFace;
CullMode.CullClockwiseFace;
CullMode.None;
** 深度バッファ(Zバッファ)をONにする [#cc1b5428]
GraphicsDevice.RenderState.DepthBufferEnable = true;
** ポリゴンの描画 [#y59313f3]
- 変数
VertexDeclaration m_VertexDeclaration = null; // 頂...
VertexPositionColor[] m_Vertices = null; // 頂点データ
BasicEffect m_BasicEffect = null; // シェーダ
- コンストラクタ
// 頂点データ定義
m_VertexDeclaration = new VertexDeclaration(GraphicsDevi...
// 頂点データ
m_Vertices = new VertexPositionColor[3];
m_Vertices[0] = new VertexPositionColor(new Vector3(0.0f...
m_Vertices[1] = new VertexPositionColor(new Vector3(3.0f...
m_Vertices[2] = new VertexPositionColor(new Vector3(-3.0...
// 基本シェーダ
m_BasicEffect = new BasicEffect(GraphicsDevice, null);
m_BasicEffect.VertexColorEnabled = true;
- 描画
// 頂点データの定義
GraphicsDevice.VertexDeclaration = m_VertexDeclaration;
// ViewMatrix
m_BasicEffect.View = Matrix.CreateLookAt(
new Vector3(0.0f, 0.0f, 10.0f), // pos
Vector3.Zero, // view
Vector3.Up // upper
);
// Projection
m_BasicEffect.Projection = Matrix.CreatePerspectiveField...
MathHelper.ToRadians(45.0f), // pers
(float)GraphicsDevice.Viewport.Width / (float)Graphics...
1.0f, // near
100.0f // far
);
// begin effect
m_BasicEffect.Begin();
// パスの数だけ描画
foreach (EffectPass pass in m_BasicEffect.CurrentTechniq...
{
pass.Begin();
// ポリゴンを描画する
GraphicsDevice.DrawUserPrimitives(
PrimitiveType.TriangleList, // 描画モード
m_Vertices, // 頂点データ
0, //
1 // ポリゴン枚数
);
pass.End();
}
m_BasicEffect.End();
** シェーダ [#id53f63e]
*** Contentで生成 [#h1210f0d]
Effect effect = i_Content.Load("shader/test"); // ./Shad...
effect.CurrentTechnique = effect.Techniques["main"]; // ...
EffectParameter uniform = effect.Parameters["WVP"]; // ...
*** 文字列から生成 [#ce7d806b]
string src = "..." // ここにソース文字列
CompiledEffect compiledEffect = Effect.CompileEffectFrom...
Effect effect = new Effect(GraphicsDevice,
compiledEffect.GetEffectCode(),
CompilerOptions.Debug,
null);
effect.CurrentTechnique = effect.Techniques["main"];
EffectParameter uniform = effect.Parameters["WVP"];
*** 使用 [#rea7d6e7]
uniform.SetValue(Matrix);
effect.Begin();
foreach(EffectPass pass in effect.CurrentTechnique.Passes)
{
pass.Begin();
// 描画
pass.End();
}
effect.End();
*** 生成時のエラー:X3000 [#jd879c51]
なにやら文字コードの関係で、日本語を使用すると発生する可...
Asciiに戻してからロードするか、コメントも英語でやるか。
** CONTENT [#wf839a04]
外部リソースデータをコンパイルして使用できるようにする物...
***一番簡単な生のtxtをstringに落とし込む事を。 [#c189e5e4]
1.ソリューション エクスプローラ
->ソリューションを右クリック
->追加
->新しいプロジェクト
->Content Pipeline Extension Library
2.できた.csに以下の記述を。
//========================================
// インポーター
//========================================
// Attributeで拡張子と、説明文を設定する
[ContentImporter(".txt", DisplayName = "TextFileImporter...
public class TextContentImporter : ContentImporter
{
// 読み込みメソッドのオーバーライド
public override string Import(string hfilename, Conten...
{
string ret = "";
using (StreamReader reader = File.OpenText(hfilename))
{
ret = reader.ReadToEnd();
}
return ret;
}
}
3.ビルド
4.実行プロジェクトの方へ戻る
Contentに"test.txt"を追加
->右クリック
->プロパティ
->パラメータを以下のように
ContentImporter:TextFileImporter(先ほどライブラリとして...
ContentProcessor:No Processing Required
ビルドアクション:コンパイル
->Microsoft.Xna.Framework.Gameを継承したクラスのLoadConte...
string txt = Content.Load("test.txt");
で読み込めているはず。
** RenderTexture [#p60b3114]
*** 初期化 [#x0e3062b]
GraphicsDevice device = getDevice(); // デバイス
RenderTarget2D target = null;
RenderTarget last_target = null;
target = new RenderTarget2D(device,
i_Width,
i_Height,
1, // mip level
SurfaceFormat.Bgr565); // format
*** 設定 [#t0460b8b]
last_target = device.GetRenderTarget(0);
device.SetRenderTarget(0, target); // 0番のターゲットを
device.Clear(ClearOptions.Target, Color.CornflowerBlue, ...
設定した後は普通にモデル描画
*** 解除 [#g311fc7c]
device.SetRenderTarget(0, last_target as RenderTarget2D);
last_target = null;
*** テクスチャとして、描画したものを取得 [#s3109689]
Texture2D tex = target.GetTexture();
** Tips [#af351901]
終了行:
*XNA [#hd6ed4ec]
このページの情報は古いです。
2008年頃の情報です。
XNAのバージョン2.0くらいです。
[[Wikipedia:XNA:http://ja.wikipedia.org/wiki/Microsoft_X...
----
#contents
** 初期設定 [#hfdb116f]
XNAのバージョン2.0くらい。
- インストールするもの
- Visual C# 2005 Express Edition(Visual studio2005が無...
XNA Game Studio
- Visual C# 2005 Express Edition
http://www.microsoft.com/japan/msdn/vstudio/express/past/...
- XNA Game Studio 2.0
http://www.microsoft.com/downloads/details.aspx?FamilyId=...
- プロジェクトの作成
Visual C# を起動。
[ファイル]タブ -> [新しいプロジェクト] -> 左側の[プロジェ...
あとは普通にビルドすれば青い画面が表示されるはずです。
** Vsync同期をOFFにする [#ld52e0ab]
GraphicsDeviceManager.SynchronizeWithVerticalRetrace = f...
** パフォーマンス計測 [#m195c67b]
System.Diagnostics.Stopwatch Stopwatch = new System.Diag...
Stopwatch.Start();
/// コード
Stopwatch.End();
float time = Stopwatch.ElapsedTicks / (float)(System.Dia...
** カリング面の変更 [#n73b748b]
GraphicsDevice.RenderState.CullMode = ;
// モードの種類
CullMode.CullCounterClockwiseFace;
CullMode.CullClockwiseFace;
CullMode.None;
** 深度バッファ(Zバッファ)をONにする [#cc1b5428]
GraphicsDevice.RenderState.DepthBufferEnable = true;
** ポリゴンの描画 [#y59313f3]
- 変数
VertexDeclaration m_VertexDeclaration = null; // 頂...
VertexPositionColor[] m_Vertices = null; // 頂点データ
BasicEffect m_BasicEffect = null; // シェーダ
- コンストラクタ
// 頂点データ定義
m_VertexDeclaration = new VertexDeclaration(GraphicsDevi...
// 頂点データ
m_Vertices = new VertexPositionColor[3];
m_Vertices[0] = new VertexPositionColor(new Vector3(0.0f...
m_Vertices[1] = new VertexPositionColor(new Vector3(3.0f...
m_Vertices[2] = new VertexPositionColor(new Vector3(-3.0...
// 基本シェーダ
m_BasicEffect = new BasicEffect(GraphicsDevice, null);
m_BasicEffect.VertexColorEnabled = true;
- 描画
// 頂点データの定義
GraphicsDevice.VertexDeclaration = m_VertexDeclaration;
// ViewMatrix
m_BasicEffect.View = Matrix.CreateLookAt(
new Vector3(0.0f, 0.0f, 10.0f), // pos
Vector3.Zero, // view
Vector3.Up // upper
);
// Projection
m_BasicEffect.Projection = Matrix.CreatePerspectiveField...
MathHelper.ToRadians(45.0f), // pers
(float)GraphicsDevice.Viewport.Width / (float)Graphics...
1.0f, // near
100.0f // far
);
// begin effect
m_BasicEffect.Begin();
// パスの数だけ描画
foreach (EffectPass pass in m_BasicEffect.CurrentTechniq...
{
pass.Begin();
// ポリゴンを描画する
GraphicsDevice.DrawUserPrimitives(
PrimitiveType.TriangleList, // 描画モード
m_Vertices, // 頂点データ
0, //
1 // ポリゴン枚数
);
pass.End();
}
m_BasicEffect.End();
** シェーダ [#id53f63e]
*** Contentで生成 [#h1210f0d]
Effect effect = i_Content.Load("shader/test"); // ./Shad...
effect.CurrentTechnique = effect.Techniques["main"]; // ...
EffectParameter uniform = effect.Parameters["WVP"]; // ...
*** 文字列から生成 [#ce7d806b]
string src = "..." // ここにソース文字列
CompiledEffect compiledEffect = Effect.CompileEffectFrom...
Effect effect = new Effect(GraphicsDevice,
compiledEffect.GetEffectCode(),
CompilerOptions.Debug,
null);
effect.CurrentTechnique = effect.Techniques["main"];
EffectParameter uniform = effect.Parameters["WVP"];
*** 使用 [#rea7d6e7]
uniform.SetValue(Matrix);
effect.Begin();
foreach(EffectPass pass in effect.CurrentTechnique.Passes)
{
pass.Begin();
// 描画
pass.End();
}
effect.End();
*** 生成時のエラー:X3000 [#jd879c51]
なにやら文字コードの関係で、日本語を使用すると発生する可...
Asciiに戻してからロードするか、コメントも英語でやるか。
** CONTENT [#wf839a04]
外部リソースデータをコンパイルして使用できるようにする物...
***一番簡単な生のtxtをstringに落とし込む事を。 [#c189e5e4]
1.ソリューション エクスプローラ
->ソリューションを右クリック
->追加
->新しいプロジェクト
->Content Pipeline Extension Library
2.できた.csに以下の記述を。
//========================================
// インポーター
//========================================
// Attributeで拡張子と、説明文を設定する
[ContentImporter(".txt", DisplayName = "TextFileImporter...
public class TextContentImporter : ContentImporter
{
// 読み込みメソッドのオーバーライド
public override string Import(string hfilename, Conten...
{
string ret = "";
using (StreamReader reader = File.OpenText(hfilename))
{
ret = reader.ReadToEnd();
}
return ret;
}
}
3.ビルド
4.実行プロジェクトの方へ戻る
Contentに"test.txt"を追加
->右クリック
->プロパティ
->パラメータを以下のように
ContentImporter:TextFileImporter(先ほどライブラリとして...
ContentProcessor:No Processing Required
ビルドアクション:コンパイル
->Microsoft.Xna.Framework.Gameを継承したクラスのLoadConte...
string txt = Content.Load("test.txt");
で読み込めているはず。
** RenderTexture [#p60b3114]
*** 初期化 [#x0e3062b]
GraphicsDevice device = getDevice(); // デバイス
RenderTarget2D target = null;
RenderTarget last_target = null;
target = new RenderTarget2D(device,
i_Width,
i_Height,
1, // mip level
SurfaceFormat.Bgr565); // format
*** 設定 [#t0460b8b]
last_target = device.GetRenderTarget(0);
device.SetRenderTarget(0, target); // 0番のターゲットを
device.Clear(ClearOptions.Target, Color.CornflowerBlue, ...
設定した後は普通にモデル描画
*** 解除 [#g311fc7c]
device.SetRenderTarget(0, last_target as RenderTarget2D);
last_target = null;
*** テクスチャとして、描画したものを取得 [#s3109689]
Texture2D tex = target.GetTexture();
** Tips [#af351901]
ページ名: