0
すべて試しましたが、エミュレータで動作していてもOpenGL ESテクスチャをデバイスで動作させることはできません。OpenGL ESテクスチャはエミュレータでは動作しますが、デバイスでは動作しません
ソースコード:
テクスチャクラス:
public class XAndroidTexture
{
private int[] textures = new int[1];
public int width, height;
Bitmap bmp;
public XAndroidTexture(GL10 gl, Bitmap bitmap)
{
gl.glEnable(GL10.GL_TEXTURE_2D);
this.bmp = bitmap;
width = bmp.getWidth();
height = bmp.getHeight();
gl.glGenTextures(1, textures, 0);
// ...and bind it to our array
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
// create nearest filtered texture
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
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_CLAMP_TO_EDGE);
gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_MODULATE);
// Use Android GLUtils to specify a two-dimensional texture image from our bitmap
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
//GLUtils.texSubImage2D(GL10.GL_TEXTURE_2D, 0, 0, 0, bmp);
// Clean up
bitmap.recycle();
}
public void bind(GL10 gl)
{
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
}
public static XAndroidTexture createTextureFromBitmap(GL10 gl, Bitmap bmp)
{
return new XAndroidTexture(gl, bmp);
}
}
テクスチャ読み込み機能:
public XAndroidTexture Textureload(String path)
{
InputStream is;
Bitmap bmp = null;
try
{
is = this.getAssets().open(path);
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inDither = true;
Bitmap tBmp = BitmapFactory.decodeStream(is, null, opts);
bmp = Bitmap.createBitmap(tBmp.getWidth(), tBmp.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
canvas.drawBitmap(tBmp, 0, 0, null);
canvas.save();
tBmp.recycle();
tBmp = null;
}
catch (IOException e)
{
e.printStackTrace();
}
if(bmp == null)
return null;
else
return new XAndroidTexture(gl, bmp);
}
それはなく上、完全に罰金エミュレータに取り組んでいますデバイス。 誰でもデバイス上で動作するテクスチャクラスを投稿できますか?