Я только что слышал от пользователя, который говорит, что мое (Android OpenGL ES 2.0) приложение (игра) не будет работать на его телефоне HTC 1X +. Все, что он получает, это музыка и баннер в верхней части экрана, и ничего больше.Общие причины отсутствия текстур OpenGL
К сожалению, у меня нет HTC 1X +, чтобы проверить это.
Некоторые примечания:
- Хотя мои текстуры не сила 2, я только с помощью GLES20.GL_CLAMP_TO_EDGE
- Из того, что я прочитал, то HTC 1X + имеет максимальный размер текстуры в 2048 x 2048 и он получает свои ресурсы из папки XHDPI (досадно), даже несмотря на это, у меня есть только 1 тексюри, которая превышает этот размер, и все остальные объекты, отображаемые на начальной странице моего приложения, используют текстуры, намного меньшие этой максимальной суммы, поэтому что-то должно отображаться.
- Я не использую текстуры сжатия любого рода
Мое приложение работает довольно счастливо на 15 (приблиз) других устройств ввода, и другие испытали его - только 1x (до сих пор) дает проблемы.
Может ли кто-нибудь указать некоторые общие проблемы с OpenGL ES 2.0, которые могут быть причиной того, что эти текстуры не будут отображаться? Есть ли какие-либо причуды с некоторыми версиями или устройствами Android?
Я еще не разместил ни одного кода, потому что приложение работает на большинстве устройств, и я не уверен, какие части кода будут полезны, но если требуется какой-либо код, просто спросите.
Edit - включая текстуры кода загрузки
public static int LoadTexture(GLSurfaceView view, Bitmap imgTex){
//Array for texture
int textures[] = new int[1];
try {
//texture name
GLES20.glGenTextures(1, textures, 0);
//Bind textures
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textures[0]);
//Set parameters for texture
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
//Apply texture
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, imgTex, 0);
//clamp texture
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T,GLES20.GL_CLAMP_TO_EDGE);
} catch (Exception e){
}
//Increase texture count
textureCount++;
//Return texture
return textures[0];
}
И вы 'GL_TEXTURE_MIN_FILTER' установлено в' 'GL_LINEAR' или GL_NEAREST' для текстур, которые не имеют мип? –
Привет @RetoKoradi, в моем коде есть следующее: GLES20.glTexParameterf (GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR); – Zippy
Я добавил код, который я использую для применения текстур @RetoKoradi, надеюсь, что это поможет вам обнаружить и проблемы - спасибо – Zippy