很长一段时间(1-2个月),我一直在努力解决这个问题:
虽然我讨厌除了Java SDK之外的库,但我尝试过LWJGL和JOGL,但由于某些愚蠢的原因,它们在我的电脑上无法工作。
我尝试使用
现在,我非常绝望。我会尽一切努力来解决这个问题!所以,请告诉我解决方案(我知道你们中的一些人知道),这样我就能摆脱这个问题。
我的代码:
我希望您能理解这段代码。请以任何方式修改它,以帮助我找到解决问题的方法。
注意:除非您确信我无法在没有它们的情况下使其正常工作,否则请不要发布有关外部库的内容。
另外,我的显卡是否不支持加速?(因为我看到其他人的硬件加速可以工作,但我不能)顺便说一句,它是GeForce 430 GT。
提前感谢!
无法使我的图像硬件加速!
我在网上搜索了很多,尝试了自己的方法,用键盘砸头(还感觉疼),但都没有成功。虽然我讨厌除了Java SDK之外的库,但我尝试过LWJGL和JOGL,但由于某些愚蠢的原因,它们在我的电脑上无法工作。
我尝试使用
System.setProperty("Dsun.java2d.opengl", "True")
,我使用了VolatileImage,但我无法向其绘制单个像素。(我尝试使用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。
提前感谢!