Android Opengl-es加载2个纹理的非功耗

Android Opengl-es加载2个纹理的非功耗,第1张

概述我有一个应用程序,我一直在玩 android,它使用opengl-es. 目前我正在加载一个位图的纹理: //Load up and flip the texture - then dispose the temp Bitmap temp = BitmapFactory.decodeResource(Deflecticon.getContext().getResources(), reso 我有一个应用程序,我一直在玩 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.

解决方法 我想如果您尝试使用2轴尺寸的功能创建位图,然后添加您的位图,它应该工作正常.也许是这样的
Bitmap.createBitmap(notPowerOf2Bitmap,offx,offy,xsize,ysize,bitmapFlag)

除此之外,我会说通过photoshop进程受苦.你有多少张照片?

总结

以上是内存溢出为你收集整理的Android Opengl-es加载2个纹理的非功耗全部内容,希望文章能够帮你解决Android Opengl-es加载2个纹理的非功耗所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1132431.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存