Verzerrte Pixeldarstellung in LWJGL-TexturenJava

Java-Forum
Guest
 Verzerrte Pixeldarstellung in LWJGL-Texturen

Post by Guest »

Ich habe ein einfaches Spiel erstellt und meine Pixel erscheinen verzerrt (Bild). Es ist nicht perfekt.
Ich habe keine Erfahrung mit dieser Bibliothek und habe zwei Tutorials zum Laden von Texturen und zum Einrichten des Bildschirms befolgt. Und jetzt habe ich ein Problem damit. Es funktioniert zwar bei vergrößerten Texturen, aber bei kleinen Räumen funktioniert es nicht.
Methode zum Zeichnen von Texturen: (unten) Hier liegt meiner Meinung nach das Problem, aber ich weiß nicht, wo. Ich zeichne ein Quadrat mit einer Textur basierend auf Seitenverhältnis und Parametern.
ublic static void image(DisplayScreen screen, Texture texture, float x1, float y1, float width, float height) {
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
texture.bind();
int screenWidth = screen.getWidth();
int screenHeight = screen.getHeight();
glEnable(GL_TEXTURE);
glEnable(GL_TEXTURE_2D);
glBegin(GL_QUADS);
float extendedX = (x1 * screenHeight) / screenWidth + (width * screenHeight) / screenWidth;
glTexCoord2f(0.0f, .0f);
GL11.glVertex2f((x1 * screenHeight) / screenWidth, y1+height);
GL11.glTexCoord2f(1.0f, 0.0f);
GL11.glVertex2f(extendedX, y1+height);
GL11.glTexCoord2f(1.0f, 1.0f);
GL11.glVertex2f(extendedX, y1);
GL11.glTexCoord2f(0.0f, 1.0f);
GL11.glVertex2f((x1 * screenHeight) / screenWidth, y1);
GL11.glEnd();
}

Das habe ich aus einem Tutorial:
public Texture(String filename) {
BufferedImage bi;
try {
bi = ImageIO.read(new File(filename));
width = bi.getWidth();
height = bi.getHeight();

int[] pixels_raw;
pixels_raw = bi.getRGB(0, 0, width, height, null, 0, width);
ByteBuffer pixels = BufferUtils.createByteBuffer(width*height*4);
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
int pixel = pixels_raw[i * height + j];
pixels.put((byte) ((pixel >> 16) & 0xFF)); //RED
pixels.put((byte) ((pixel >> 8) & 0xFF)); //GREEN
pixels.put((byte) (pixel & 0xFF)); //BLUE
pixels.put((byte) ((pixel >> 24) & 0xFF)); //ALPHA
}
}
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
pixels.flip();
id = glGenTextures();
bind();
glOrtho(2, 2, 2, 2, 2, 2);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
} catch(Exception e) {
e.printStackTrace();
}

Ich habe das hinzugefügt, weil ich dachte, es würde etwas bewirken: (es hat nicht viel bewirkt und das Problem ist immer noch da)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_UNPACK_ALIGNMENT, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post