Я начинаю использовать LWJGL / OpenGL в Java для создания 2D-игры, однако у меня возникают трудности с рендерингом простого квадрата (квадрат) 32x32 с текстурой.Я создал систему загрузки текстуры и следовал соответствующим инструкциям для текстуры, но текстура не будет отображаться.Мой код ниже:
devBlock64.bind();
glEnable(GL_TEXTURE_2D);
GL11.glBegin(GL11.GL_QUADS);
GL11.glTexCoord2f(0, 0);
GL11.glVertex2f(0, 0);
GL11.glTexCoord2f(0, 1);
GL11.glVertex2f(32, 0);
GL11.glTexCoord2f(1, 1);
GL11.glVertex2f(32, 32);
GL11.glTexCoord2f(1, 0);
GL11.glVertex2f(0, 32);
GL11.glEnd();
glDisable(GL_TEXTURE_2D);
Выше приведен код для каждого вызова "render"."devBlock64" - это просто объект текстуры, который загрузил текстуру 64x64 (но в данном случае это 32x32, потому что я сохранил ее как неправильный размер)
Кроме того, это опции и функции, которые я вызвал после загрузкитекстура и генерация ее id текстуры:
this.bind();
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
Изображение загружается правильно, но оно не будет отображаться.this.bind();
вызывает мою функцию, которая просто делает это: glBindTexture(GL_TEXTURE_2D, id):
И, мой игровой цикл, если кому-то интересно, все остальное было сделано в соответствии с руководствами OpenGL по настройке окна:
public void loop() {
// Binds GLFW with OpenGL
GL.createCapabilities();
glOrtho(0f, 800, 600, 0f, 0f, 1f);
glClearColor(1.0f, 1f, 1f, 1f);
//glLoadIdentity();
world.loadTextures();
while(!hasWindowRequestedClose()) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
world.onUpdate();
world.render();
glfwSwapBuffers(handle);
glfwPollEvents();
}
destroy();
}