减少 OpenGL ES 1.1 中纹理的内存使用

2024-04-27

我在 OpenGL ES 中的场景需要几个大分辨率纹理,但它们是灰度的,因为我仅将它们用于蒙版。我需要减少内存使用。

我尝试使用 Bitmap.Config.ALPHA_8 和 RGB_565 加载这些纹理。 ALPHA_8 似乎实际上增加了内存使用。

有没有办法将纹理加载到 OpenGL 中并使其每像素使用少于 16 位?

glCompressedTexImage2D 看起来很有前途,但据我所知,不同的手机提供不同的纹理压缩方法。另外,我不知道压缩是否确实减少了运行时的内存使用。是否有以 ATITC 和 PVRTC 格式存储纹理的解决方案?如果是这样,我如何检测设备支持哪种格式?

Thanks!


PVRTC、ATITC、S3TC 等,GPU 原生压缩纹理应该减少内存使用并提高渲染性能。

例如(抱歉,在 C 中,您可以像在 Java 中使用 GL11.glGetString 一样实现它),

const char *extensions = glGetString(GL_EXTENSIONS);
int isPVRTCsupported = strstr(extensions, "GL_IMG_texture_compression_pvrtc") != 0;
int isATITCsupported = strstr(extensions, "GL_ATI_texture_compression_atitc") != 0;
int isS3TCsupported = strstr(extensions, "GL_EXT_texture_compression_s3tc") != 0;

if (isPVRTCsupportd) {
    /* load PVRTC texture using glCompressedTexImage2D */
} else if (isATITCsupported) {
...

此外,您还可以在 AndroidManifest.xml 中使用纹理格式指定支持的设备。

  • AndroidManifest.xml 文件 -supports-gl-texture http://developer.android.com/guide/topics/manifest/supports-gl-texture-element.html

EDIT:

  • MOTODEV - 了解纹理压缩 http://developer.motorola.com/docstools/library/understanding-texture-compression/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

减少 OpenGL ES 1.1 中纹理的内存使用 的相关文章

  • 我是否需要在我的 Firebase 项目中添加 SHA-1 指纹?

    在 Firebase 上有一个弹出窗口 显示我的项目可以添加指纹 SHA1 因为我只想使用一些 Firebase 服务 例如实时数据库 身份验证 我需要在我的项目中添加指纹吗 该图显示 仅在使用某些 Google Play 服务 如 OAu
  • 如何在android中直接从.zip文件读取文件而不解压它

    过去几个月我一直在研究 android 现在我的问题是读取放在 sdcard 上的 zip 文件 我已经成功完成了将 zip 文件下载到 SD 卡上的编码 我已将 img zip 文件下载到 SD 卡上 此 img zip 包含 5 个图像
  • 从 Kotlin 中的字符串中删除字符

    我正在尝试创建一个使用 Kotlin 中的字符串的 Android 计算器 如果逗号 或负数 已经包含一个 我不知道如何删除它 这是我的代码 它正确添加逗号 但如果用户再次单击则不会删除它 if buClickValue contains
  • Android 中未找到 PhoneGap 类错误

    我的 PhoneGap Android 应用程序遇到一些问题 到目前为止我明白了 我已经把一切都做好了 这是我所做的 在 Eclipse 中创建项目后 我在 libs 文件夹中添加了 cordova 2 2 0 jar 然后我编辑了Andr
  • Android - Firebase - 保存新数据而不覆盖旧数据

    创建此问题是因为我之前的问题包含 2 个问题 而不是将其缩小到 1 Aim 用户将能够存储新数据而不会覆盖之前提交的数据 描述 目前 当用户输入新报告时 事件报告节点中的用户事件报告数据将被覆盖 用户发送的旧事件报告中的数据应与新数据一起保
  • Zxing库无法解析

    我正在使用 zxing 库开发应用程序 我导入了zxing项目到我的工作场所 当我导入时遇到了一些问题 通过编译项目java 1 7 我做到了 CameraConfigurationUtils失踪 我从library source Reso
  • ListView 中的焦点控件

    上下文 我想要一个不会获得焦点的 ListView 例如不会 当用户触摸它时突出显示该行 然而每个行小部件都有它自己的 OnClickListener 这是我在布局 xml 中指定的内容 android choiceMode none an
  • WebView ssl 错误

    对不起我的英语不好 我需要加载 url https 我有一些问题 当我尝试加载页面时 webView 给我错误 primary error 3 certificate Issued to CN my site com Issued by C
  • 带操作栏的 requestFeature

    所以我正在查看 google 的操作栏 api 演示 他们有这个 The Action Bar is a window feature The feature must be requested before setting a conte
  • 如何使用GDK在卡片上显示静态地图?

    在 Mirror API 中我们可以使用类似的东西 img src height 360 width 240
  • MaterialDatePicker 错误:要在应用程序主题中设置materialCalendarFullscreenTheme 属性

    我做了什么 Added implementation com google android material material 1 1 0 在依赖关系中 Set Theme MaterialComponents Light Bridge作为
  • MediaPlayer.getDuration() 返回错误的持续时间

    媒体播放器的getDuration 方法为我提供了某些音频文件的错误值 我认为所有这些文件的共同特征是它们是使用 Audacity 或其他一些音频编辑工具进行操作的 当尝试将 MediaPlayer 进度绑定到进度栏时 这是一个问题 我继续
  • 为什么 LayoutInflater 忽略我指定的layout_width 和layout_height 布局参数?

    我在让 LayoutInflater 按预期工作时遇到了严重的困难 其他人也是如此 如何使用layoutinflator在运行时添加视图 https stackoverflow com questions 4735847 help for
  • OkHttp javax.net.ssl.SSLPeerUnverifiedException:主机名domain.com未验证

    我几天来一直在努力让它发挥作用 我正在尝试通过以下方式连接到我的服务器https带有自签名证书 我认为现在没有任何页面或示例是我未读过的 我做了什么 按照本教程创建了 bks 密钥库 http blog crazybob org 2010
  • java.net.ServerSocket.accept () 在 Android 上不返回

    我正在尝试找到一种方法来远程登录到未root的机器人 我有INTERNET权限处于活动状态 我的设备与我的设备连接在同一网络上Mac OS X通过 WiFi 我可以 ping 通我打开的端口 在最初的实验中 我让它在有根测试设备上工作 但我
  • 如何创建一个类似“隐形”的Android应用程序?

    我想让我的应用程序以某种 隐形 模式运行 我想做的两件主要事情 不以编程方式在已安装的应用程序列表 抽屉 中显示应用程序图标 通过拨号盘启动应用程序 一些特殊的数字组合 我知道我可以删除启动器意图过滤器来隐藏图标
  • [本机]:在Qt for Android中使用Java函数和第3方库[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 最近我用qt写了一个android应用程序 但我有一个很大的问题 我可以使用 调用一些原生的android API 比如调用特殊的activit
  • 在 Android 中使用 SQL (JDBC) 数据库

    在旧的 Java 应用程序中 我使用以下代码连接到 SQL 数据库并将其用于某些查询 private Connection dbConnection null System setProperty derby system home C C
  • Android Studio同时为同一个项目构建两个应用程序

    我正在使用 Android Studio v0 5 9 制作一个应用程序 它有一个图书馆项目作为依赖 但是 每次我运行该项目时 都会将两个具有相同名称和图标的 APK 部署到我的设备上 第一个 apk app 包含我的主模块 而第二个是库项
  • 改造中的 SocketTimeoutException

    我在尝试着POST向服务器请求获取数据但有时会发生SocketTimeoutException I used Ok3Client解决它 但我面临同样的异常 我该如何解决它 我的代码如下 public void getNormalLogin

随机推荐

  • 为什么要使用继承? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何引用所有正在运行的 Excel 应用程序实例(包括隐藏的和没有工作簿的实例)的 COM 对象?

    如何获取每个正在运行的 Excel 应用程序实例的完整引用列表 无论其工作簿数量和可见性状态如何 我知道我可以使用 Windows API 来查找每个 Excel 工作簿窗口 其窗口类名称EXCEL7 让他们的句柄与AccessibleOb
  • 快速崩溃“EXC_BREAKPOINT 0x0000000...”

    我的 iOS 应用程序确实发生了三种不同的崩溃情况 不同的代码位置 但所有三个都带有 exc breakpoint 0x000000 我无法重现它们 它们发生在不同的设备和不同的 iOS 版本上 如前所述 我无法重现它们 我们的测试人员都没
  • Android - API 级别 21 中的日期 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 你好 我对 Android 还很陌生 目前我对本地日期 或我尝试过的任何其他日期格式 有一个大问题 L
  • Bootstrap 3 无法在 Symfony3 中工作

    我刚刚开始学习 Symfony 3 我正在尝试使用 bootstrap 3 为我的表单设置主题 根据文档 http symfony com doc current cookbook form form customization html
  • Python 交互式 Shell 类型应用程序

    我想创建一个交互式 shell 类型的应用程序 例如 gt app py Enter a command to do something eg create name price For to get help enter help wit
  • 如何识别导航堆栈中的先前视图控制器

    我有2个独立的navigationcontrollers 一与RootViewControllerA 和另一个RootViewController B 我有能力推动ViewControllerC 到 A 或 B 的导航堆栈上 问题 当我在V
  • 如何保护swf文件不被反编译?

    我正在使用 Flex 框架从事重要项目 我想对我的算法和代码保密 是否有可能以某种方式保护 swf 文件不被反编译 我不希望有人使用 flash 反编译器提取我的代码 Thanks 这很简单 只需将其保存在您的 PC 上 不要将其放在网络上
  • SQL Server 获取父列表

    我有一个这样的表 id name parent id 1 ab1 3 2 ab2 5 3 ab3 2 4 ab4 null 5 ab5 null 6 ab6 null 我需要使用输入 id 1 进行查询 例如 结果将如下所示 id name
  • 在 Java 1.7.0 下运行的 SQL-Server (MSSQL-JDBC 3.0) 中的日期列检索为过去 2 天

    当使用 SQLServer2008 从 SQLServer2008 检索 DATE 类型的列时 出现奇怪的效果在官方 Oracle JDK 1 7 0 下运行时 主机操作系统是Windows Server 2003 所有日期列均检索为two
  • 使用sklearn宏f1-score作为tensorflow.keras中的指标

    我已经为tensorflow keras定义了自定义指标 以在每个时期之后计算宏f1分数 如下所示 from tensorflow import argmax as tf argmax from sklearn metric import
  • MacOS X 上使用 crypt 进行 Python SHA512 加盐密码

    我正在尝试生成加密的密码字符串 类似于Linux中的 etc shadow 由于某种原因 我得到的输出是不同的 我有什么想法吗 一个比另一个长 不包括盐部分 usr bin python import crypt alg 6 SHA512
  • FMOD功能的实现

    怎么样fmod功能实现了吗 我尝试了以下方法 include
  • Jython - 使用 Spring,用 Python 编程?

    好吧 我在这方面完全是新手 所以 我知道 Spring 作为一个框架确实很好 而且我已经用 Python 编程有一段时间了 所以我想知道是否可以使用 Spring 框架但使用 Python 代码 我听说 Jython 可能是执行此操作的一个
  • 如何使用Gson序列化Optional类?

    我有一个具有以下属性的对象 private final String messageBundle private final List
  • 如何重新加载当前的 Angular 2 组件

    如何在 Angular 2 中再次重新加载相同的组件 下面是我的代码 import Component OnInit ElementRef Renderer from angular core import Router Activated
  • Mongrel::DirHandler 相当于 Passenger

    我正在使用 Mongrel DirHandler 来控制静态文件的响应标头 这在我的开发机器上效果很好 我的生产机器使用 Passenger 因此我的标头未设置 使用 Passenger 时如何控制静态文件的标头 我的环境中的片段 rb i
  • 使用 Pandas 合并具有不同维度的多个数据框[重复]

    这个问题在这里已经有答案了 我有以下数据框 实际上它们超过 3 个 import pandas as pd df1 pd DataFrame head1 foo bix bar val 11 22 32 df2 pd DataFrame h
  • 从 Google 语音识别中删除脏话审查

    我正在尝试使用 Google 的语音到文本 API 在 iOS 应用程序中将语音转换为文本 我只是将一些音频数据发送到 URL 并且它返回了我所说的 大部分 正确的单词 但是 它用 替换了任何脏话 我如何用实际的咒语替换 只是一些附加信息
  • 减少 OpenGL ES 1.1 中纹理的内存使用

    我在 OpenGL ES 中的场景需要几个大分辨率纹理 但它们是灰度的 因为我仅将它们用于蒙版 我需要减少内存使用 我尝试使用 Bitmap Config ALPHA 8 和 RGB 565 加载这些纹理 ALPHA 8 似乎实际上增加了内