Mon but est d'implémenter une fonction de zoom sur le défilement de la souris. Jusqu'à présent, j'ai implémenté l'effet de zoom en utilisant glViewport, qui fonctionne très bien. Mais bien sûr l'image n'est pas vraiment lisse, elle montre des pixels énervés.OpenGL Smooth Zooming
Je veux essayer maintenant de rendre l'image plus lisse après le zoom. J'ai déjà essayé d'utiliser le glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); (et MIN_FILTER), mais il ne montre aucune différence par rapport au GL_NEAREST.
Avez-vous de bonnes idées sur la façon de rendre l'image agrandie plus lisse? Est-ce peut-être une bonne idée de prendre la matrice de pixels et de calculer les pixels manuellement en utilisant un algorithme scalaire comme 2xSal par exemple?
jusqu'à présent, mon code est
void zoom(double scale) {
GLint m_viewport[4];
glGetIntegerv(GL_VIEWPORT, m_viewport);
if (scale > 0) {
glViewport(m_viewport[0] - (m_viewport[2]/2), m_viewport[1] - (m_viewport[3]/2), m_viewport[2] * 2, m_viewport[3] * 2);
}
else {
glViewport(m_viewport[0] + (m_viewport[2]/4), m_viewport[1] + (m_viewport[3]/4), m_viewport[2]/2, m_viewport[3]/2);
}
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
* mais il ne montre aucune différence par rapport à GL_NEAREST. * - alors il n'est pas réglé correctement. – Rotem