[英]OpenGL Smooth Zooming
我的目標是在滾動鼠標時實現縮放功能。 到目前為止,我使用glViewport實現了縮放效果,效果非常好。 但當然圖像並不是很平滑,它顯示出前衛的像素。
我想現在嘗試在縮放后使圖像更加平滑。 我已經嘗試過使用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);
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);
這些函數修改當前綁定到OpenGL上下文的任何紋理。 在調用它們之前,必須首先綁定要更改的參數的紋理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.