iPad OpenGL ES:关于内存纹理大小

发布于 2024-10-14 05:52:00 字数 180 浏览 1 评论 0原文

我正在加载一个 1024 x 1024 的 RGBA 纹理。我预计内存纹理大小将为 1024 x 1024 x 4 => 4MB。但当我尝试打印内存消耗时,我可以看到纹理占用了大约 7 - 8 MB,几乎是两倍。我只是想知道 iPad 是否将每个通道从字节转换为半浮点, 那么有没有办法指定每个像素应该占用 4 个字节而不是 8 个字节。

I am loading a RGBA texture which is 1024 x 1024. I expected the on-memory texture size would be 1024 x 1024 x 4 => 4 MB . But when I try to print the memory consumption I can see that the texture is taking around 7 - 8 MB, almost double. I was just wondering whether IPad is converting every channel from byte to half-float,
So is there any way to specify that every pixel should take 4 bytes and not 8 bytes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

并安 2024-10-21 05:52:00

指定它的最简单方法是使用指定大小的内部格式(例如 GL_RGBA8 而不是 GL_RGBA),尽管我不确定 ES 是否支持这些格式。但如果 ES 设备能够存储每个通道超过 8 位的标准 RGBA 纹理,我会感到惊讶。

如何确定 GPU 内存消耗?我宁愿猜测额外的内存是由于其他重要的 GPU 资源(例如 VBO)造成的,并且不要忘记帧缓冲区本身(渲染到的内存),它需要合理的内存量。请记住,使用 mip 贴图时,它们还需要大约 33% 的基础纹理内存。

如果您谈论的是用于创建纹理的 CPU 数据的大小,那么这与纹理的大小无论如何都没有任何关系,而仅取决于您自己的数据的大小。

The easiest way to specify it is using a sized internal format (like GL_RGBA8 instead of GL_RGBA), although I'm not sure if these are supported in ES. But I would be surprised if an ES device would store a standard RGBA texture with more than 8 bits per channel.

How do you determine the GPU memory consumption? I would rather guess the additional memory is due to other important GPU resources, like VBOs and not to forget the framebuffer itself (the memory you render into), that takes a reasonable amount of memory. And remember, when using mip-maps these additionally require around 33% of the base texture's memory.

And if you're talking about the size of the CPU data you create the texture from, then this doesn't have anything to do with the texture's size anyway and only depends on the size of your own data.

云仙小弟 2024-10-21 05:52:00

使用 glTexImage2D 创建纹理时,必须指定纹理的类型内部格式

你的可能设置为 GL_FLOAT 或其他东西。

在此处查找文档: http://www.opengl.org/sdk/文档/man/xhtml/glTexImage2D.xml

You have to specify the type and internal format of your texture when you create it using glTexImage2D.

Yours is probably set to GL_FLOAT or something .

Lookup the documentation here : http://www.opengl.org/sdk/docs/man/xhtml/glTexImage2D.xml

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文