Hy У меня небольшая проблема с текстурированием openGL-ES.Я создал модель в 3ds max и использовал для нее UV-карту, как вы можете видеть здесь (1-е изображение). Моя UV-карта.Без UV-наложения моя загрузка текстур "идеальна", но с UV-картами ... (2-е изображение здесь ), посмотрите на тележку).
Я загружаю эту модель (тележку) изфайл obj, нет проблем с моим кодом или с obj, потому что он работает с простыми текстурами, может быть, мой метод loadtexture плохой, пожалуйста, проверьте его, или у вас есть идеи?Спасибо за ваши ответы, у меня нет идей.
Код загрузки текста:
private int[] textures = new int[3];
public void loadtexture(GL10 gl, Context mContext, String map_source) {
try {
InputStream is = mContext.getAssets().open(map_source);
Bitmap bitmap = BitmapFactory.decodeStream(is);
is.close();
gl.glGenTextures(3, textures, 0);
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER,
GL10.GL_NEAREST);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,
GL10.GL_NEAREST);
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[1]);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER,
GL10.GL_LINEAR);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,
GL10.GL_LINEAR);
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[2]);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER,
GL10.GL_LINEAR);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,
GL10.GL_LINEAR_MIPMAP_NEAREST);
if (gl instanceof GL11) {
gl.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_GENERATE_MIPMAP,
GL11.GL_TRUE);
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
} else {
buildMipmap(gl, bitmap);
}
bitmap.recycle();
} catch (IOException e) {
// Should never happen
}
}
private void buildMipmap(GL10 gl, Bitmap bitmap) {
//
int level = 0;
//
int height = bitmap.getHeight();
int width = bitmap.getWidth();
//
while (height >= 1 || width >= 1) {
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, level, bitmap, 0);
//
if (height == 1 || width == 1) {
break;
}
// Increase the mipmap level
level++;
//
height /= 2;
width /= 2;
Bitmap bitmap2 = Bitmap.createScaledBitmap(bitmap, width, height,
true);
// Clean up
bitmap.recycle();
bitmap = bitmap2;
}
}
PS Извините за мой английский.