@H_403_1@我有一个应用程序,我一直在玩
android,它使用opengl-es.
目前我正在加载一个位图的纹理:
//Load up and flip the texture - then dispose the temp Bitmap temp = BitmapFactory.decodeResource(Deflecticon.getContext().getResources(),resourceID); Bitmap bmp = Bitmap.createBitmap(temp,temp.getWidth(),temp.getHeight(),flip,true); temp.recycle(); //Bind the texture in memory gl.glBindTexture(GL10.GL_TEXTURE_2D,id); //Set the parameters of the 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); //On to the GPU GLUtils.texImage2D(GL10.GL_TEXTURE_2D,bmp,0);
显而易见的问题是,我使用的纹理必须是2的力量.此刻,我将在photoshop中预先编辑纹理,使其成为2的强度,并且只有空白的边框.然而,这是一个有点乏味,我想要能够加载它们,因为它们..认识到它们不是2的力量,并将它们加载到一个纹理.
我知道我可以缩放位图,成为2尺寸的力量,简单地拉伸纹理,但是我不希望伸展纹理,在某些情况下可能需要将几个纹理放在一个“atlas”中.
我知道我可以使用glTexSubImage2D()粘贴到纹理中我想要的原始数据我想要的.这很棒!
不过我不知道Android中如何初始化没有数据的纹理?
在这个问题previously asked的建议是调用glTexImage2D()没有数据,然后填写它.
但是在android中,当你调用“GLUtils.texImage2D(GL10.GL_TEXTURE_2D,0)”;“您不指定宽度/高度.它从我假设的位图中读取.
这样做最好的方法是什么?我可以创建一个新的位图的2尺寸的正确的权力只有空白,没有填充任何数据,并使用它来初始化纹理,然后使用subImage粘贴到它?或者我应该以某种方式复制我想要的像素(不知道如果你能这么容易地)复制到这个新的位图(离开边框),然后只是使用这个?
编辑:澄清我正在使用opengl.