Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 将Textures快速加载到OpenGL 2.0中大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为 Android构建一个简单的动态壁纸.我使用下面的代码将所需的纹理上传到OpenGL ES 2.0中.我已将所有图像加载到一个大小为2048×2048的文件中.下面的代码需要大约900到1200毫秒才能加载纹理.这是正常的时间还是我做错了让它变慢?

每次在渲染器中调用onSurfaceCreated时,我也会尝试清除Opengl中的纹理列表.这是正确的,还是有办法简单检查先前加载的纹理是否已经在内存中,如果是这样,请避免清除和重新加载?请告诉我你对此评论.谢谢.

同样在屏幕方向更改时,将调用OnSurfaceCreated.所以纹理上传再次发生.这不是一个好主意.有什么工作?

public int addTexture(Bitmap texturE) {

    int bitmapformat = texture.getConfig() == Config.ARGB_8888 ? GLES20.GL_RGBA : GLES20.GL_RGB;

    int[] textures = new int[1];
    GLES20.glGentextures(1,textures,0);
    int texturEID = textures[0];
    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D,texturEID);

    GLUtils.texImage2D(GLES20.GL_TEXTURE_2D,bitmapformat,texture,0);
    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,GLES20.GL_TEXTURE_MIN_FILTER,GLES20.GL_LINEAR_MIPMAP_LINEAR);
    GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,GLES20.GL_TEXTURE_MAG_FILTER,GLES20.GL_LINEAR);
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D,GLES20.GL_TEXTURE_WRAP_S,GLES20.GL_REPEAT);
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D,GLES20.GL_TEXTURE_WRAP_T,GLES20.GL_REPEAT);
    GLES20.glGenerateMipmap(GLES20.GL_TEXTURE_2D);
    return texturEID;
}

解决方法

有几种@L_674_17@可以提高性能.

>每次调用onSurfaceChanged时都不要加载纹理.将texturEID初始化为-1(在渲染器的构造函数/ surfaceCreated中),如果您有不同的Id,请在onSurfaceChanged的开头检查.当你打电话给glGentextures时,你会得到一个正数.>你需要Mipmap吗?这可能是你@L_674_17@的关键点.尝试不使用GLES20.glGenerateMipMap(GLES20.GL_TEXTURE_2D);> 2048×2048是巨大的.特别是纹理.你真的需要那么多细节吗?也许1024×1024就足够了.>避免使用RGB_888,而是使用RGB_565:您将获得几乎相同视觉质量的一半大小.

大佬总结

以上是大佬教程为你收集整理的android – 将Textures快速加载到OpenGL 2.0中全部内容,希望文章能够帮你解决android – 将Textures快速加载到OpenGL 2.0中所遇到的程序开发问题。

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

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