Android 应用非2的N次幂纹理

本文详细探讨了在Android应用程序中处理非2的N次幂纹理的问题,涉及OpenGL ES在渲染过程中如何优化非标准尺寸纹理,以及如何通过纹理坐标映射和图像压缩技术来解决内存和性能问题。
摘要由CSDN通过智能技术生成
在调用android opengl ES进行纹理贴图的时候,发现有的机器上能显示图片,有的机器上不能显示。是因为图片的尺寸不是2的N次幂,部分显卡不支持非2的N次幂纹理贴图。
将图片放大到2的N次幂,比如100 * 200的图片就放大到128 * 256。
为了显示图片不拉伸,坐标顶点使用原图的宽高比例。

第一次发贴,求通过,求指教
    private class MyRenderer implements GLSurfaceView.Renderer {
   
        private Bitmap bitmap;
        private float[] vertex;
        private float[] texture;
        private short[] index;
        //缓冲顶点坐标数据
        private FloatBuffer mVertexBuffer;
        //缓冲顶点纹理数据
        private FloatBuffer mTextureBuffer;
        //缓冲顶点坐标索引
        private ShortBuffer mIndexBuffer;
        private int mTextureID;

        public MyRenderer(Context context, int bitmapRes) {
            initData(context, bitmapRes);
            initBuffer();
        }

        private void initData(Context context, int bitmapRes) {
            Bitmap resBitmap = BitmapFactory.decodeResource(context.getResources(), bitmapRes);
            int width = resBitmap.getWidth();
            int height = resBitmap.getHeight();
            //取指数
            int widthPowerOfTwo = getPowerOfTwo(width);
            int heightPowerOfTwo = getPowerOfTwo(height);
            int newWidth = (int) Math.pow(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值