1
Hy OpenGL-ESテクスチャリングに少し問題があります。あなたはhere(1枚目の写真)を見ることができるので、私は3ds maxでモデルを作成し、UVマップを使用しました。私のUVマップがあります。 UVマッピングがなければ、テクスチャの読み込みは「完璧」ですが、UVマップを使って...(2番目の画像here)、ボギーを見てください)。UVマップのOpenGL-ESテクスチャ読み込みの問題
このモデル(ボギー)をobjファイルから読み込むと、コードやobjに問題はありません。単純なテクスチャで作業しているか、loadtextureメソッドが悪い、plsでチェックしている、またはあなたはなにか考えはありますか? あなたの答えをありがとう、私はアイデアがありません。
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;
}
}
P.S.私の英語のために申し訳ありません。