目前我正在加载一个位图的纹理:
//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.
解决方法 我想如果您尝试使用2轴尺寸的功能创建位图,然后添加您的位图,它应该工作正常.也许是这样的Bitmap.createBitmap(notPowerOf2Bitmap,offx,offy,xsize,ysize,bitmapFlag)
除此之外,我会说通过photoshop进程受苦.你有多少张照片?
总结以上是内存溢出为你收集整理的Android Opengl-es加载2个纹理的非功耗全部内容,希望文章能够帮你解决Android Opengl-es加载2个纹理的非功耗所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)