2012-11-11 143 views
0

我正在使用OpenGL ES在Android中開發視頻遊戲。我在紋理的重新調整方面遇到了一些問題。在opengles中重構紋理

我想,我的遊戲可以與任何分辨率兼容,爲此,我創建了遊戲分辨率和屏幕分辨率,這樣的關係的常數:

Display display = getWindowManager().getDefaultDisplay(); 
KTE.SCREEN_WIDTH = display.getWidth(); 
KTE.SCREEN_HEIGHT = display.getHeight(); 
KTE.REDIMENSION_X = KTE.SCREEN_WIDTH/KTE.GAME_WIDTH; 
KTE.REDIMENSION_Y = KTE.SCREEN_HEIGHT/KTE.GAME_HEIGHT; 

使用此常數,我使用不同的屏幕大小獲得了相同的結果(使用之前代碼中計算的常量重新繪製所有紋理的尺寸)。

問題是我想減少GAME的分辨率來使所有的紋理更大,現在我得到紋理周圍的黑色像素,因爲我的redimension常量是有很多小數的浮點數,我猜所有那些黑色像素是在這個計算過程中剩下的職位...

任何人都有過這個問題嗎?任何提示重新調整遊戲?我嘗試了很多東西,而且我很困難。謝謝。

回答

0

這聽起來像紋理的「重新尺寸」不按預期工作。例如,也許你只是調整紋理的數據大小,但紋理本身仍然和以前一樣大小。這將解釋邊界處的黑色像素。確保您使用KTE.REDIMENSION_X/Y因子創建了紋理,並且確保在寫入您正在寫入其邊緣的紋理時。

至於redimensioning遊戲,你的意思是你渲染的屏幕大小?爲此,它應該是glViewport(...)的一個簡單變更,也許是您創建的用於查看您的場景的視角(frustrum或orthos)。通常在屏幕尺寸發生變化時進行這兩種更改 - 通常不需要對紋理進行更改,除了可能會提高分辨率(例如對於具有2個像素的iOS視網膜顯示器)。