2012-09-07 6 views
5

Tôi hiện đang viết một ứng dụng Android hoạt động với OpenGL ES 1.1. Nó hoạt động tốt trên HTC Desire của tôi (Android 2.3.7), nơi tôi đã phát triển nó. Bây giờ tôi muốn thử nghiệm nó trên Nexus 7 nhưng nó chỉ hiển thị một màn hình màu đen. Tôi phát hiện ra rằng tất cả các họa tiết đều đơn giản là màu đen. Trên các phần không có đối tượng và không có kết cấu nào được hiển thị, tôi nhận được màu nền (gần như) màu đen.Kết cấu chỉ hiển thị trên một số thiết bị

Vì vậy, câu hỏi của tôi là tại sao các họa tiết được hiển thị tốt trên một số thiết bị chứ không phải trên các thiết bị khác?

Kết cấu đều là bậc hai với công suất kích thước là 2 (tức là 512x512, 1024x1024). Đây là các cài đặt được sử dụng khi kết cấu được tạo:

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); 

Tôi có thể thử kết cấu được hiển thị trên cả hai thiết bị?

Trả lời

8

Nếu bạn đang nhận được bitmap của bạn từ drawables, hãy chắc chắn rằng họ là tất cả trong thư mục drawable-nodpi.

Nếu không, sức mạnh của hai hình ảnh có thể không phải là sức mạnh của hai sau khi được phóng to trên mật độ Android khác nhau (một hình ảnh 1024x1024 trong thư mục drawable trở thành 1536x1536 trên thiết bị HDPI).

+0

vì vậy tôi cần thêm thư mục "drawables-nodpi"? Cho đến bây giờ tôi chỉ có ldpi, mdpi, hdpi và xhdpi ... Mặc dù chúng là tất cả ... – evident

+0

Ahh tôi đã tìm thấy nó: Tôi cần một thư mục draw-tvdpi với kết cấu ... Khi tôi tạo một thư mục với tên này và đặt các kết cấu trong đó nó hoạt động tốt ... :) Cảm ơn bạn! – evident

+0

Bất kỳ thứ gì bạn đưa vào một thư mục có tên là 'drawable-nodpi' sẽ không bao giờ được thu nhỏ. Vì vậy, kết cấu 1024x1024 sẽ luôn là 1024x1024. Nếu bạn chỉ bán kết cấu giống nhau vào 5 thư mục khác nhau thật sự lãng phí @evident. – Tim