GLFW Все использует GL_LINEAR

Первоначально я использовал перенасыщение, и я только что перешел на GLFW. Мои текстуры GL_NEAREST теперь используют GL_LINEAR, который работает не очень хорошо (мои текстуры имеют очень низкое разрешение для стиля).

if (!glfwInit()) return -1;
glfwWindowHint(GLFW_DOUBLEBUFFER, 1);
glfwSetErrorCallback(error_callback);
window = glfwCreateWindow(800, 600, "GLFW Test", NULL, NULL);
if (!window) {
    glfwTerminate();
    return -1;
}
glfwSetInputMode(window, GLFW_STICKY_KEYS, 1);
glfwMakeContextCurrent (window);
glfwSetKeyCallback(window, keyboardCallback);
glfwSetCharCallback(window, textCallback);
glfwSetCursorPosCallback(window, mouseMotionCallback);
glfwSetMouseButtonCallback(window, mouseCallback);
printf("Loaded.\n");
while (!glfwWindowShouldClose(window)) {
    displayCallback();
    glfwSwapBuffers(window);
    glfwSwapInterval(1);
    glfwPollEvents();
}
glfwTerminate();

Это заканчивается блочными буквами и белыми прямоугольниками (это может быть другой проблемой, но я вспоминаю, что экспериментировал с GL_LINEAR с тем же эффектом).

Код добавления текстуры:

    glBindTexture(GL_TEXTURE_2D, id);
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, s ? GL_NEAREST : GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
#ifdef GL_TEXTURE_MAX_ANISOTROPY_EXT
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 4.0);
#endif
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);

1 ответ

Решение

Оказывается, я загружал некоторые текстуры перед созданием контекста glfw, а не создавал текстуры вообще, что похоже на особый эффект GL_LINEAR в моей программе.

Другие вопросы по тегам