簡體   English   中英

OpenGL平滑縮放

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM