Моя цель - реализовать функцию масштабирования при прокрутке мыши. До сих пор я реализовал эффект масштабирования с помощью glViewport, который работает очень хорошо. Но, конечно, изображение не очень гладко, оно показывает острые пиксели.OpenGL Smooth Масштабирование
Я хочу попробовать, чтобы сделать изображение более плавным после масштабирования. Я уже пробовал использовать glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); (и MIN_FILTER), но это не показывает никакой разницы по сравнению с GL_NEAREST.
Есть ли у вас хорошие идеи о том, как сделать увеличенное изображение более гладким? Может быть, неплохо взять матрицу пикселей и вычислить пиксели вручную, например, используя скалярный алгоритм, например, 2xSal?
до сих пор, мой код
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);
* но это не показывает никакой разницы по сравнению с GL_NEAREST. * - тогда он не устанавливается правильно. – Rotem