是否有更有效的方法来处理 OpenGL ES 纹理的 2^n 像素大小要求?

发布于 2024-07-29 02:35:35 字数 300 浏览 11 评论 0原文

抱歉,如果我的问题不清楚。 让我详细说明一下。

我有一个尺寸为 100 x 200 的矩形,并且有一个适合该矩形的图形尺寸为 100 x 200。 由于 OpenGL 要求所有纹理的宽度和高度均为 2^n,因此我基本上将 100 x 200 图形直接放入 128 x 256 图像中。 它对于 OpenGL 工作得很好,因为我只是要求它只在矩形上绘制我需要的纹理的一部分。 然而,让我烦恼的是,在 128 x 256 纹理中,有很多未使用的空间。

在这种情况下,有没有更好的方法来处理这些未使用的空间? 或者这应该是要走的路?

Sorry if my question is uncleared. Let me elaborate.

I have a rectangle of size 100 x 200, and I have a graphic size 100 x 200 which fits with the rectangle. Since OpenGL requires all textures to have 2^n width and height, I basically put the 100 x 200 graphic right into a 128 x 256 image for this. It works fine for OpenGL because I simply requested it to draw only a portion of the texture that I need on the rectangle. However, what nags me is that in the 128 x 256 texture, there are a lot of unused spaces.

Is there a better way to deal with these unused spaces in this case? Or is this supposed to be the way to go?

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

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

发布评论

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

评论(3

安静被遗忘 2024-08-05 02:35:35

将多个纹理打包到一张“表”中。

Pack multiple textures into one "sheet".

翻身的咸鱼 2024-08-05 02:35:35

如果您必须减少填充以节省内存,您可以将图像分割为多个 pow2 纹理,例如,将 100 像素水平分割为 64、32、4 和 200 像素,垂直分割为 128、64、8。您还需要分割您想要的矩形。正在纹理化为多个相应的矩形(四边形)。

在此示例中,您将渲染 9 个四边形/纹理而不是 1 个,因此您需要测量应用程序中是否存在性能影响。

如果您使用双线性插值,您将无法使用此技术,因为您需要纹理边框,我认为 OpenGL ES 不支持该纹理边框。

If you must reduce padding to save memory you could split the image into multiple pow2 textures, e.g. split 100 pixels horizontally into 64, 32, 4 and 200 pixels vertically into 128, 64, 8. You'll also need to split the rectangle you're texturing into multiple corresponding rectangles (quads).

In this example you will be rendering 9 quads/textures instead of 1 so you will need to measure if there is a performance hit in your application.

You won't be able to use this technique if you're using bilinear interpolation as you'd require a texture border which I don't think is supported by OpenGL ES.

夏九 2024-08-05 02:35:35

调整图像大小以更好地适应。
在这个世界上,你没有不劳而获的东西。

Resize your image to fit better.
You don't get anything for nothing in this world.

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