Ошибка 1281 в stbi_failure_reason (), из-за которой изображения PNG не отображаются - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь создать приложение openGl (lwjgl), которое использует загрузку текстур stb.Прежде чем использовать свою текстуру, я загрузил ее с помощью функции stbi_load ().Мое изображение PNG (sRGB, 4 канала) в окне не отображается.Функция stbi_failure_reason () возвращает «Corrupt JPEG», даже если я использовал файл PNG.После привязки сегмента текстуры GL11.glGetError () возвращает 1281 (неверные значения).Я проверил ByteBuffer - иногда встречаются отрицательные значения.Кто-нибудь знает, что не так?

int w;
int h;
int id;

IntBuffer wx = BufferUtils.createIntBuffer(1);
IntBuffer hx = BufferUtils.createIntBuffer(1);
IntBuffer cx = BufferUtils.createIntBuffer(1);

ByteBuffer data = stbi_load("./assets/img/gui/logo.png", wx, hx, cx, 4);

if(data == null) {
    System.out.println("Failed to load texture");
}
System.out.println(stbi_failure_reason());
System.out.println(cx.get(0));

id = GL11.glGenTextures();
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glBindTexture(GL_TEXTURE_2D, id);
System.out.println(GL11.glGetError());
w = wx.get();
h = hx.get();

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 4, GL_RGBA, GL_UNSIGNED_BYTE, data);
stbi_image_free(data);
glBindTexture(GL_TEXTURE_2D, 0);
...