私は現在ゲームに取り組んでおり、私は背景イメージを持つメインメニューを持っていたいと思っています。大きな画像ではGraphics.DrawImageが遅すぎますか?
しかし、私はこの方法Graphics.DrawImage()
は本当に遅い見つけます。私はある程度の測定をしました。 MenuBackgroundが解像度800 x 1200ピクセルの私のリソースイメージであると仮定しましょう。私は別の800 x 1200ビットマップに描画します(まず、すべてをバッファビットマップにレンダリングしてから、それをスケールして最終的に画面に描画します)。これが複数のプレーヤーの解像度の可能性にどう対処するのですか?それは決して次の段落を参照してください)。
だから私は、次のコードを測定しました:
Stopwatch SW = new Stopwatch();
SW.Start();
// First let's render background image into original-sized bitmap:
OriginalRenderGraphics.DrawImage(Properties.Resources.MenuBackground,
new Rectangle(0, 0, Globals.OriginalScreenWidth, Globals.OriginalScreenHeight));
SW.Stop();
System.Windows.Forms.MessageBox.Show(SW.ElapsedMilliseconds + " milliseconds");
結果は私には意外に静かである - Stopwatch
対策40 - 50 milliseconds
の間に何かを。また、背景画像だけが描画されるわけではないので、メニュー全体には約100ms以上の時間がかかります。これは、観測可能なラグを意味します。
私はPaintイベントによって与えられたGraphicsオブジェクトにそれを描くことを試みたが、結果は30 - 40 milliseconds
だった - あまり変わっていません。
だから、それはGraphics.DrawImage()
が大きく画像を描画するため使用不可能であることを、意味するのでしょうか?もしそうなら、私は自分のゲームのパフォーマンスを向上させるために何をすべきですか?
「使用できない」とは、「糖蜜のカタツムリのようにゆっくり」を意味する場合は「はい」です。他の人が言っているように、XNAに試してみてください。 XNAフレームワークに慣れていないかぎり、2Dスプライトレンダリングに固執し、そうするなら3Dに向かって移動します。 – CodeHxr
私はそれだけで類推のためにupvotingです。 :) – Ani