2012-09-07 84 views
5

我目前正在編寫一個可與​​OpenGL ES 1.1一起使用的Android應用程序。 它在我開發它的HTC Desire(Android 2.3.7)上運行良好。現在我想在Nexus 7上測試它,但它只顯示黑屏。我發現所有的紋理都是黑色的。在沒有渲染對象和紋理的部分,我得到(幾乎)黑色背景色。紋理僅在某些設備上顯示

所以我的問題是爲什麼紋理在某些設備上呈現正常,而不是在其他設備上呈現?

紋理都是二次的,尺寸冪爲2(即512x512,1024x1024)。 這些紋理被創建時使用的設置:

gl.glBindTexture(GL10.GL_TEXTURE_2D, getTextureId()); 

// Create Nearest Filtered Texture 
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, 
     GL10.GL_LINEAR); 
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, 
     GL10.GL_LINEAR); 

// Different possible texture parameters, e.g. GL10.GL_CLAMP_TO_EDGE 
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, 
     GL10.GL_CLAMP_TO_EDGE); 
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, 
     GL10.GL_REPEAT); 

gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, /*GL10.GL_REPLACE*/ GL10.GL_MODULATE); 

// Use the Android GLUtils to specify a two-dimensional texture image 
// from our bitmap 
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0); 

我能設法得到呈現兩個設備上的紋理?

回答

8

如果您從drawables獲取位圖,請確保它們都位於drawable-nodpi文件夾中。

否則,在不同的機器人密度(drawable文件夾中的1024x1024圖像在HDPI設備上變爲1536x1536)後,您的兩個圖像的強度可能不會是兩個強度。

+0

所以我需要一個額外的「drawables-nodpi」文件夾?到目前爲止,我只有ldpi,mdpi,hdpi和xhdpi ...雖然他們都是... – evident

+0

啊我發現它:我需要一個帶有紋理的drawable-tvdpi文件夾......當我創建一個帶有這個名稱的文件夾和把紋理放在那裏它可以正常工作...... :)謝謝! – evident

+0

您放入名爲'drawable-nodpi'的文件夾中的任何內容都不會被縮放。所以一個1024x1024紋理將永遠是1024x1024。如果你只是將相同的紋理轉儲到5個不同的目錄中,那真是浪費。 – Tim

相關問題