2012-12-16 38 views
2

我使用此代碼圖像之間切換用的mipmap與否:OPENGL渲染紋理和開關用的mipmap之間或不

if (tex->hasMipMaps) { 
      glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); 
      glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR); 
     } 
     else { 
      glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
      glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
     } 

然而這種情況發生: enter image description here

表中不具有mipmap呈現,但是當我寄存器質地代碼更改爲:

// if (tex->hasMipMaps) { 
       glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); 
       glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR); 
      //} 
      //else { 
      // glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
      // glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
      //} 

這裏是結果: enter image description here mipmap的作品,但我的字體紋理是友善的缺失,有沒有辦法使用mipmap如紋理和一些紋理,如字體,粒子沒有mipmaps紋理? 我需要調用glTexParameteri來切換一些狀態嗎?

+2

GL_TEXTURE_MAG_FILTER的有效值僅爲GL_LINEAR和GL_NEAREST。沒有用於放大的mipmapping。 – datenwolf

回答

1

沒有一套完整的mipmap的紋理對象將(通常)呈現白色,如您所見。

如果某些紋理沒有mipmap,則必須在每個網格級別上啓用/禁用mipmapping(假設每個網格有一個紋理)。