Ich habe eine Szene mit einem 3D Objekt und einer Textur (kein Problem soweit, wird alles richtig angezeigt).
Jetzt versuche ich, kurz nach dem ich die Textur auf die Grafikkarte geschoben habe, wieder mit readPixels aus der Grafikkarte zu lesen und dann wieder Testweise in die Grafikkarte zu schrieben... einfach nur um sie zu modifizieren (Glow etc.). Das ist auch nur ein Test, um zu sehen ob readPixel arbeitet...
... tut es aber nicht. Weil ich bekomme dann nur Pixelmüll.
Wenn ich die Pixeldaten mit Grün fülle (0xff,0x00,x000,0xff => RGBA) ist alles ok und das 3D Objekt erstrahlt in einem satten Grün. Irgendwie werden die Pixeldaten mit readPixels nicht richtig gelesen oder verarbeitet.
Hat jemand einen Tip?
Jetzt versuche ich, kurz nach dem ich die Textur auf die Grafikkarte geschoben habe, wieder mit readPixels aus der Grafikkarte zu lesen und dann wieder Testweise in die Grafikkarte zu schrieben... einfach nur um sie zu modifizieren (Glow etc.). Das ist auch nur ein Test, um zu sehen ob readPixel arbeitet...
... tut es aber nicht. Weil ich bekomme dann nur Pixelmüll.
Wenn ich die Pixeldaten mit Grün fülle (0xff,0x00,x000,0xff => RGBA) ist alles ok und das 3D Objekt erstrahlt in einem satten Grün. Irgendwie werden die Pixeldaten mit readPixels nicht richtig gelesen oder verarbeitet.
Hat jemand einen Tip?
Code:
// Image-Daten (imageBuffer) in die Grafikkarte schreiben
IntBuffer textureData = BufferUtils.createIntBuffer(4); // * IntBuffer: RGB + Alpha *
GL11.glGenTextures(textureData);
textureID = textureData.get(0);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, textureID);
GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, width, height, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, imageBuffer);
// * Textur aus der Grafikkarte lesen *
ByteBuffer pixels = ByteBuffer.allocateDirect(texture.getWidth()*texture.getHeight()*4);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture.getTextureID());
GL11.glReadPixels(0, 0, texture.getWidth(),texture.getHeight(), GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, pixels);
// * Textur in die Grafikkarte schreiben *
GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture.getTextureID());
GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, texture.getWidth(), texture.getHeight(), 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, pixels);