プロフィール

Na-7

Author:Na-7
SE(システムエンジニア)として約15年間システム系ソフト会社を勤めあげ、2008年3月退社。現在、ゲーム制作会社設立を目指して活動中。


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発
かんたんXNAその29
かんたんXNA その29 テクスチャへの描画 RenderTarget
時々お世話になる「かんたんXNA」で、レンダーターゲットのお勉強。XNA3.0ではバージョンが異なるコードもあるようだ。



◎GetTexture

前回コメントで、yohさんからRenderTarget2D.GetTexture()を教えて頂きました。

メソッド名がGetTextureで戻り値がTexture2Dなので、画面出力をテクスチャに落とせるんじゃないかと期待してしまいますが、ネット上でサンプルを探すと画面の初期化処理らしきもの(?)が多く、ツールに利用したものは見当たりません。

XNAのヘルプには
このレンダリング ターゲットに関連付けられている 2D テクスチャを取得します。
とあります。とりあえずヘルプのサンプルコードをコピペして実行したら、ブルースクリーンならぬパープルスクリーン状態になって、シャットダウンすらできなくなりました(汗)



◎レンダーターゲット

その後LAGさんから「先にレンダーターゲットを設定する必要がある」とご指摘を頂きました。レンダーターゲットについてもっと勉強しないといけないなぁ…。

というわけで、冒頭の記事ヘルプで勉強させて頂きました。

記事を読んでからヘルプを読むとわかりやすくて良いのですが、記事中のGraphicsDevice.ResolveRenderTargetメソッドや、GraphicsDeviceCapabilities.NumberSimultaneousRenderTargetsプロパティはXNA3.0では存在しないようです。多分仕様変更されたのでしょう。



◎またしてもハード

記事のコードをコピペして実行すると、
renderTarget = new RenderTarget2D(~);
の所で例外エラーになりました。
An unexpected error has occurred.

ここでしばらく試行錯誤しましたが、4番目の引数のnumberLevelsを0→1にしたらエラーが解消され動きました。

GetTextureのテスト
GetTextureで取得した画像を表示するテスト

引数の違いは、仕様変更の影響でしょうか?それとも私のハード環境の問題?

気になったのでネットで調べたら、こちらの記事に回答がありました。numberLevelsは、ミップマップを生成するレベルのことだっんですね。1つ勉強になりました。

それはともかく、またしてもハードでした。もはやお決まりのパターン…。

しかし回答でItoさんが言ってるように「テクスチャのサイズが2のn乗でないときにミップマップをサポートしないビデオカードは少なくない」なら、せめてもう少しわかりやすいエラーを返してくれたらいいのになぁ。



◎ファイル出力

画面出力をテクスチャに落とすことが出来たので、今度はテクスチャからファイルに落とします。

Texture2D.Save()

こんな便利なメソッドあったっけ?まぁ今まではテクスチャの加工生成方法がわからなかったから使えなかったのか。

Texture2D capturedTexture;
capturedTexture.Save("TestCapture01", ImageFileFormat.Bmp);


これで、BMPファイルが出力できました。
やった!これで全自動ツールが作れますよ~!



◎サンプルコード

というわけで、HPにサンプルコードをUPしました。

XNAの画面ハードコピー(スクリーンショット)取得サンプルコード



◎次回予告

ついに念願の「XNAの画面を自動的にファイルに落とす」が出来るようになりました!
yohさん、LAGさん、ありがとうございました!

次回は、この技術を使用して3Dアニメ画像自動取得ツールを作成し、槍兵、槍騎兵、城モデルの全方向アニメ画像を取得します。

スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメント

うまく行きました?

今までだいぶ3Dモデルを作ってらしたようですから、これで飛躍的に作業が進むんじゃないかなあ…。

多分あと少しです

複数モデルの配置、ポージング、カメラの回転まで完了しました。現在ライトの回転のズレを調整中です。
予想より手間取ってますが、今日明日中には出来上がると思います。

コメントの投稿


管理者にだけ表示を許可する

トラックバック


この記事にトラックバックする(FC2ブログユーザー)



copyright © ゲーム制作の舞台裏 all rights reserved.Powered by FC2ブログ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。