android - OpenGL es,在生成和渲染 MIP 贴图时控制 VM 使用

标签 android opengl-es textures mipmaps

是否可以在 open gl es 1.x 中创建仅加载当前正在渲染的纹理分辨率的 MIP 贴图?

因此,与其一次从最大到最小加载所有纹理分辨率,不如让 mipmap 只存储它当前正在渲染的那个。然后让 gl 在我放大和缩小时加载新的分辨率纹理。通过这种方式,我可以将许多大纹理加载到表面上并缩小以同时查看所有纹理,而不会出现任何 VM 预算问题。

如果 gl 没有办法做到这一点,是否可以覆盖 onDraw 函数以确定请求渲染的 mipmap 级别,以便我可以手动加载新纹理?

最佳答案

据我所知,没有这方面的功能。当您定义纹理对象具有 MipMap 时,您必须填充所有这些对象。如果您不这样做,那么这将被视为错误和未定义的行为 - 通常您在使用该纹理时会得到黑色渲染。

即使你能做到,你也不会真的想做;上传纹理数据可能是一个缓慢的过程,尤其是在移动平台上,因此性能会受到很大影响。最后,MipMaps 通常使用线性插值,在上传的纹理数据的不同可用分辨率之间进行混合 - 至少需要两种尺寸。

关于android - OpenGL es,在生成和渲染 MIP 贴图时控制 VM 使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7263812/

相关文章:

ios - 基本动画(滑动转动)

c++ - GLuint 未被识别

java - 接收 java.lang.RuntimeException : Unable to destroy activity {com. android.systemui/com.android.systemui.usb.UsbPermissionActivity}

java - 如何在 ListView 项目的对话框上显示自定义消息

android - 在 Android 上使用 OpenGL ES 围绕另一个球体旋转

objective-c - Paint 应用程序,使用帧缓冲区在 OpenGL ES 中渲染纹理

c++ - 使用 STBI_Image OpenGL 加载图像时在 0x69ABF340 抛出异常

android - 使用Gradle实现多个库版本

android - ListPreference 的值永远不会更新

android - 如何在 Android OpenGL ES3.0 中向表面添加位图/图像纹理?