GLFW 一切都在使用 GL_LINEAR
GLFW Everything is using GL_LINEAR
我原来用的是glut,现在才换成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);
原来我在创建glfw上下文之前加载了一些纹理,根本没有创建纹理,这类似于我程序中GL_LINEAR的特殊效果。
我原来用的是glut,现在才换成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);
原来我在创建glfw上下文之前加载了一些纹理,根本没有创建纹理,这类似于我程序中GL_LINEAR的特殊效果。