Por definición, el GL_TEXTURE_MIN_FILTER se usa cuando el pixel con textura se asigna a un área que es más grande que un elemento de textura.¿Cuándo debería establecer GL_TEXTURE_MIN_FILTER y GL_TEXTURE_MAG_FILTER?
Digamos que tengo una textura con una resolución de 1024 * 768 y quiero asignarla a un rectángulo. La matriz de proyección se establece usando:
glOrtho(0, 1024, 0, 768, 0, 1);
y el rectángulo se establece con:
glTexCoord2f(0.0f, 0.0f); glVertex3f(0.0f, 0.0f, 0.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(1024.0f, 0.0f, 0.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(1024.0f, 768.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(0.0f, 768.0f, 0.0f);
Con la configuración actual, mi entendimiento es cada píxel en el rectángulo se asigna a un único píxel de la textura .
Sin embargo, después de la prueba descubrí que MIN_FILTER está trabajando para esta configuración. Incluso si duplico el tamaño del rectángulo, concretamente 2048 * 1536 y solo se muestra la esquina inferior izquierda en la ventana gráfica, sigue siendo el MIN_FILTER el que está funcionando.
En tal situación, mi comprensión personal es que cada píxel en la ventana gráfica está mapeado a solo un cuarto de píxel en la textura, ¿por qué todavía está trabajando MIN_FILTER?
Para probar qué filtro está funcionando, simplemente comente la línea para establecer ese filtro y vea si el resultado es incorrecto. Si comento la línea de configuración MIN_FILTER, el resultado sería totalmente amarillo, porque no configuré el nivel máximo de textura para que coincida con su nivel. Pero si hago un comentario en la línea MAG_FILTER, el resultado sigue siendo el correcto.
¿Qué quiere decir con "está trabajando" y "no está funcionando"? –
Si en su caso la ventana es más pequeña que 1024 × 768, entonces efectivamente haría una minificación. – datenwolf