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

前端之家收集整理的这篇文章主要介绍了Android Opengl-es加载2个纹理的非功耗前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@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.

解决方法

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

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

原文链接:https://www.f2er.com/android/311852.html

猜你在找的Android相关文章