[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 05/10 12:02 / Filesize : 200 KB / Number-of Response : 649
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Javaゲーム作成総合スレ



168 名前:名前は開発中のものです。 mailto:sage [2009/01/08(木) 07:19:56 ID:4pdEl9iG]
>>154
自前のCompositeを使うと、内部でGeneralCompositePipeという物が使われる。
sun.java2d.pipe.GeneralCompositePipeの88-89行目を見ると、
 dstIn = dstRaster.createChild(x, y, w, h, 0, 0, null);
 dstOut = dstIn.createCompatibleWritableRaster();
となっている。この時確保されるdstOutのサイズはw×hではなくて、dstRasterと同じサイズになる。
(java.awt.image.Rasterのソースを参照)
多分開発者は、createCompatibleWritableRaster(w,h);と同じ結果を期待していたんだと思う。
そのせいで、大量のメモリの確保を何度も行う事になる。何度も。
しかも、大きい図形は内部で32×32に分割して描画しているからメモリを確保する回数がさらに増加する。
これではアクセラレーション以前の問題。
どう見てもバグだけど、誰もゲームに使わないからか特に問題にならず、一向に修正されない。
描画に使う一時的なRasterは一々確保せずにキャッシュを使ってほしいけど、面倒だったのか毎回確保してる。
だから、自作Compositeをゲームに使いたいなら、Graphics2Dを使わず自分で処理するのが無難。
英語が得意なら、バグを報告して修正を待つ手もあるけど。

あと、Composite内で使うgetPixels()やsetPixels()も妙に遅い気がする。
sun.awt.image.DataBufferNativeが怪しい。自分の所だけかもしれないけど。






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<200KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef