cocos2d-x如何解決圖片顯示模糊問題


    

cocos2d-x如何解決圖片顯示模糊問題                    

由於一些特定的原因,程序並沒有使用plist方式打包資源,而現在使用的是零散的小圖片。在運行時,發現會出現某些圖片顯示模糊的情況。找到的原因如下:

紋理在初始化的時候默認調用了setAntiAliasTexParameters接口,而該接口設置GL_TEXTURE_MIN_FILTER和GL_TEXTURE_MAG_FILTER爲GL_LINEAR。而使用GL_LINEAR渲染時,如果文理的像素點和顯示區域的座標不能一一對應(例如放大,縮小,或者顯示位置爲浮點數),就會使用附近的四個像素(2*2, 2D顯示)做顏色混合,這樣會使圖片看上去模糊。

解決辦法:

根據上述分析,可以用如下幾種辦法:

1. 調用Texture的setAliasTexParameters接口,副作用在放大或縮小時會導致鋸齒嚴重,而且如果顯示位置爲浮點數的話,會導致最後一行(一列)像素被截掉。

2. 不要使用圖片分辨率爲奇數的圖片,因爲使用奇數的圖片,如果設置AnchorPoint爲(0.5f, 0.5f), 即使setPosition()傳入整數參數,也會導致圖片的顯示座標爲小數。

3. 如果一定要使用分辨率爲奇數的圖片,錨點設爲(0.0f, 0.0f), 這樣可以保證只要setPosition()傳入的是整數(注意父控件的位置也不能是浮點數)就不會有顯示問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章