かなり長い間、1 ~ 2 か月間、私はこの特定の問題に対する答えを見つけようとしてきました。
イメージ ハードウェアを高速化できません。
私はネットで検索し、独自の方法を作成し、キーボードで頭を叩きましたが(まだ痛みを感じています)、成功しませんでした。
Java SDK 以外のライブラリは嫌いですが、LWJGL と JOGL を試してみましたが、何らかの愚かな理由で私のコンピューターでは動作しません。
VolatileImage を使用してみSystem.setProperty("Dsun.java2d.opengl", "True")
ましたが、個々のピクセルを描画できません (使用してみdrawLine(x,y,x,y)
ましたが遅いです) 。
今、私はとても絶望的です。私はこれを修正するために何でもします!ですから、解決策をご存知でしたら (ご存知の方もいらっしゃると思いますが)、この問題を解決できるよう教えてください。
私のコード:
public static void render(int x, int y, int w, int h, ) {
int a[] = new int[3]; // The array that contains RGB values for every pixel
BufferedImage bImg = Launcher.contObj.getGraphicsConfiguration().createCompatibleImage(800, 600, Transparency.TRANSLUCENT); // Creates an image compatible to my JPanel (Runs at 20-24 FPS on 800x600 resolution)
int[] wr = ((DataBufferInt) bImg.getRaster().getDataBuffer()).getData(); // Contains the image data, used for drawing pixels
for (int i = 0; i < bImg.getWidth(); i++) {
for (int j = 0; j < bImg.getHeight(); j++) {
a[0] = i % 256;
a[2] = j % 256;
a[1] = i * j % 256;
wr[i + j * bImg.getWidth()] = new Color(a[0], a[1], a[2]).getRGB(); // Sets the pixels from a[]
}
}
bImg.flush();
g.drawImage(bImg, x, y, w, h, null); // Draws the image on the JPanel
g.dispose();
System.out.println(bImg.getCapabilities(Launcher.contObj.getGraphicsConfiguration()).isAccelerated()); // Prints out whether I was successful and made the image accelerated or failed and made everything worse
}
コードを理解していただければ幸いです。問題の解決策を見つけるのに役立つように、何らかの方法で変更してください。
注: 外部ライブラリなしではこれを機能させることができないと確信していない限り、外部ライブラリについては何も投稿しないでください。
また、グラフィック カードがアクセラレーションをサポートしていない可能性もありますか? (ハードウェア アクセラレータが他の人には機能するが、私には機能しないという投稿を見たため) ところで、それは GeForce 430 GT です。
前もって感謝します!