SilverLightで動くゲーム
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2009/03/29(日) 16:09:08ID:OFQ4xiYUhttp://silverlight.net/forums/52.aspx
001210
2009/04/10(金) 10:02:11ID:hTdaYG5iいや、逆で最初は使用してたんだが使わなくなった。
最初はSilverlight3で作ってたんだけど、根本的な問題にぶち当たったわけなんだわな。
ttp://social.msdn.microsoft.com/Forums/ja-JP/silverlightgeneralja/thread/d7f40ecb-4651-4fd4-8a4d-7647989e58aa
まだベータ版だから作ったアプリを公開スンナっていうこと。
で、Silverlght2でのアプリ作成となったんだが実行時画像生成が基本的にできないんだよな。
どうにかしてできんものかとぐぐったら、
偉い人がMemoryStreamからBitmapオブジェクトを生成することができるのを利用したPngEncoderクラスがみつかったわけ。
ttp://www.codeplex.com/SlDynamicBitmap/Release/ProjectReleases.aspx?ReleaseId=19105
で、いろいろ調べているうちに(つってもすぐに見つかったが)もっと高速な生成を行うPngEncoderを別の偉い人が作っていてね
ttp://blogs.msdn.com/nikola/archive/2009/03/04/silverlight-super-fast-dymanic-image-generation-code-revisited.aspx
このソースを眺めてみると、最初に画像データ以外のヘッダやチャンク、
画像データブロックのlengthデータ等をあらかじめ書いておき、CRC部分はぶっ飛ばし
画像データだけ実行時に書き換えるということで高速化してる。
だったらということで、Page_Load時にヘッダデータやチャンクデータをべたに画面データ配列に突っ込んでおいて
実行時は画像データを上書きして画面更新を行うということを試したらできたんよ。
ということでPngEncoderクラスは使用しなくなった。
00139
2009/04/16(木) 23:13:38ID:4oObtvfHおー、そういう技術資料を見つけるのスゴいっすね
Page.blitScreen、Page.Blit の辺りっすかね?
なんかイメージデータ作ってんのが難解だったんで読むの諦めてた
0014名前は開発中のものです。
2009/04/18(土) 04:50:36ID:HbbYhoM2http://www.h2.dion.ne.jp/~eee/sample/menu_sample/menu_sample.html
0015名前は開発中のものです。
2009/04/18(土) 13:41:37ID:Xw/HylmB001610
2009/04/18(土) 15:05:35ID:pLwifu2gひとつのバイナリをマルチプラットフォームで実行可能にするには、中間コードでないと無理だからな。
(一応難読化というものでコードを読みにくくすることはできるが)
JAVAがいい例。
JAVAをコンパイルするとバイナリコードでコンパイルして、各プラットフォームで用意している仮想マシンで実行
するのと一緒。もちろん、バイナリコードから逆コンパイルすることも可能。
001710
2009/04/18(土) 15:24:45ID:pLwifu2gそそ。
手順としては、Pngフォーマットの画像データを作るための配列(vBuffer32)を用意して、
1.Page_LoadでPngヘッダを含む各チャンクデータおよび、画像データブロックのレングスデータをvBuffer32に書いておいて
2.blitScreenでは、ブロックレングスが書かれているところを飛ばして画像データをvBuffer32に書き込んで
3.BlitでvBuffer32の中身をMemoryStreamに載せ変えて、MemoryStreamからBitmapImageオブジェクトを生成して
Imgコントロール(UIElement)のSourceにセットして表示。
という流れっす。
■ このスレッドは過去ログ倉庫に格納されています