2012-05-28 80 views
1

我正在爲使用OpenGL ES的android開發相當簡單的2D遊戲。我希望它能在市場上幾乎任何設備上運行。我面對的問題是,當我映射我使用的紋理。如果我想要映射的圖像的尺寸與其目標對象的尺寸不同,則會降低圖像質量(即使圖像的尺寸大於對象的尺寸),圖像質量也會得到像素化。我想要非常清晰的圖像,並且接收它們的唯一方法是使用具有相同尺寸的紋理和對象。但在這種情況下,我需要4,5個紋理代表不同尺寸的相同圖像,以支持足夠的屏幕分辨率。我使用PNG圖像和下面的GL方法:爲什麼OpenGL-ES調整大小的圖像看起來像素化?

glClear(GL10.GL_COLOR_BUFFER_BIT); 
glEnable(GL10.GL_TEXTURE_2D); 
glEnable(GL10.GL_BLEND); 
glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); 
//drawing happens here 
glDisable(GL10.GL_BLEND); 

是沒有問題的,我創造這麼多的圖片,但比賽的規模將變得更大。我做錯了什麼,或者只是OpenGL無法調整像Photoshop一樣的圖像?

回答

4

您是否嘗試過其他採樣選項,如GL_NEAREST或GL_LINEAR? (見glTexParameteri)。

我不認爲這是opengl的錯,但是當你顯示的紋理不是它們的原始分辨率(或者它的偶數倍)時,總會有一些精確性的損失(因爲圖像必須在非像素邊界重新採樣)。 GL_LINEAR可能會減輕一些像素化的外觀,但可能會稍微模糊,這可能會或可能不會顯而易見。

+0

謝謝你,我正在使用GL_NEAREST,現在我把它改成了GL_LINEAR,一切都很完美,非常感謝 – mjekov