首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将压缩图像加载到GPU并在CPU上进行反解压

将压缩图像加载到GPU并在CPU上进行反解压
EN

Computer Graphics用户
提问于 2018-01-17 00:10:14
回答 2查看 572关注 0票数 0

我有一些图像,我知道将存储或PVR或其他压缩。我希望能够将这些图像转换为未压缩的RGB。但是,由于二进制大小的限制,我想这样做,而不添加一个专门的库进行转换。

有什么办法可以做到吗?我知道像glCompressedTexImage2D这样的函数会让我把压缩图像加载到GPU。然而,我在阅读解码版本时遇到了问题。对于额外的上下文,我尝试用OpenGL ES 2.0来完成这个任务。

谢谢!

EN

回答 2

Computer Graphics用户

发布于 2018-01-17 06:11:32

桌面OpenGL要求实现在图像的内部格式和像素传输命令中指定的格式之间转换像素数据。

OpenGL ES没有。实际上,不允许这样做是非常严肃的,以至于它实际上将参数的含义更改为像glTexImage*d这样的函数。在ES中,您不能使用大小大小的内部格式(在纹理存储调用之外)。相反,内部的格式是存在的。真正定义内部格式的是像素格式和类型参数。

也就是说,当您告诉OpenGL ES,您提供的像素数据看起来像X时,它需要实现创建一个纹理,其真正的内部格式与之完全匹配。如果使用的是glTexSubImage*dglGetTexImage,则必须提供与glTexImage*d调用提供的像素传输参数相匹配的像素传输参数。

所以OpenGL ES不允许任何像素转换。

票数 3
EN

Computer Graphics用户

发布于 2018-01-17 22:36:16

这篇文章中的评论是正确的。OpenGL ES并不支持直接读取纹理。

在给定约束条件下,最好的选择似乎是将压缩的纹理画到一个四角体上,然后再读出来。(与"Simon F“在上述问题注释线程中的建议相同。)

作为对遇到同样问题的人的参考,这是一个不同但相似的问题的答案。给出了执行上述操作的步骤。

票数 0
EN
页面原文内容由Computer Graphics提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://computergraphics.stackexchange.com/questions/6127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档