Искаженное отображение пикселей в текстурах LWJGL.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Искаженное отображение пикселей в текстурах LWJGL.

Сообщение Anonymous »

Я создавал простую игру, и мои пиксели выглядят искаженными (изображение). Она не идеальна.
У меня нет опыта работы с этой библиотекой, и я выполнил два руководства по загрузке текстур и настройке экрана. И теперь у меня с этим проблема. Это работает для увеличенных текстур, но с небольшими пространствами это не работает.
Метод рисования текстур: (ниже) именно здесь, я думаю, проблема, но я не знаю, где. Рисую квадрат с текстурой на основе соотношения сторон и параметров.

Код: Выделить всё

public 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();
}
Я взял это из урока:

Код: Выделить всё

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();
}
Я добавил это, потому что думал, что это что-то даст: (это мало что дало, и проблема все еще существует)

Код: Выделить всё

 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);


Подробнее здесь: https://stackoverflow.com/questions/793 ... l-textures
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»