突然喧嘩口調のレスが来たから何事かと思って変なレスしてしまった。ただの人違いか。
特に>>170が誰宛なのか判らずに悩んだ。>>168はjoglの人とは別人なんだけど。
>だからその程度の技術力しかないなら、普通にJava API(高度に抽象化したAPI)を
そのJava APIの話が>>168。java.awt.*とjava.awt.image.*を参照。
あと、「だからその程度の技術力」の根拠詳しく。joglの人と間違えたんだと思うけど。
>確かjdk1.5ではBufferedImageは全てキャッシュされるって書いてあったから、その指摘も数年で色あせ
createCompatibleWritableRasterは0で初期化したラスターを返す。(これは仕様)
つまり、憶測通りBufferedImageがキャッシュされるとしても、
全画面を黒く塗り潰す処理を何度も実行したのと同じ負荷がかかる。
これを防ぐには、無駄な領域を確保せず、staticなソフト参照を使って使い回す必要がある。
それにはGeneralCompositePipeの修正が必須。数年で色あせてくれるんなら助かるんだけど。
>そもそもjava.awtパッケージなのに、内部実装sun.*パッケージのソースにいちゃもんつけてるし、結局おまえじゃ何も出来
java.awt.image.Rasterの方は修正すると既存のプログラムに影響しうる。変更は望めない。
sun.java2d.pipe.GeneralCompositePipeの内部処理を変更するべき。
あと、デバッグツールによりsun.awt.image.WritableRasterNative.setPixels()が遅い事が分かっている。
DataBufferNativeが関係している可能性がある。これは自分の環境が悪い可能性が高いけど。
何もできないのは同意。これを修正できるのはVMの開発者だけ。バグ報告も自力じゃ無理。

あと、BufferdImage.getRGBのソースを見たけど、内部で同じメソッドを呼んでいるから速度は大して変わらない。

>>172
ゲームのエフェクト等に有効な加算合成がJava2Dに搭載されていないから、
自前でCompositeを用意して解決しようとしたら異常な遅さで困った。
一番重い筈のcompose()の中身を全部コメントアウトしても尚遅いまま。
なかなか原因が分からず、苦労している内にGeneralCompositePipeのバグに到達した。
AlphaComposite以外を使うと異常に遅くなるのは主にこの手抜き実装のせい。
この事を話す機会が無かったからつい。ゲームは作れないけど知識は凄いよ。