Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android Opengl-es加载2个纹理的非功耗大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个应用程序,我一直在玩 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中如何初始化没有数据的纹理?

在这个问题@L_675_8@的建议是调用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个纹理的非功耗所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。