Довольно долго, 1-2 месяца, я пытался найти ответ именно на эту проблему:
Я не могу получить аппаратное ускорение моего изображения!
Я искал в сети, создал свои собственные методы, ударился головой о клавиатуру (до сих пор чувствую боль), но безуспешно.
Хотя я ненавижу другие библиотеки, кроме 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.
ЗАРАНЕЕ СПАСИБО!