OpenGL vers >=2.0 要求纹理尺寸为 4 像素的倍数?

发布于 2024-10-15 04:20:28 字数 396 浏览 6 评论 0原文

我正在使用 OpenGL 纹理开发 Mac 应用程序,我使用 glTexImage2D 从磁盘上的图像文件加载该纹理。

根据文档,对于 OpenGL 版本 >= 2.0,纹理可以是任意大小。 (对于 <2.0 的版本,x 和 y 尺寸都必须是 2 的幂。)

但是,如果我的图像尺寸不是 4 的偶数倍,我会得到不好的纹理。我已经搜索了又搜索,但是可以找不到有关此要求的任何文档。事实上,“红皮书”明确指出纹理尺寸可以是版本≥2.0的任何值。

我缺少什么?

并且,将纹理转换为下一个最大的二维幂是否有性能优势?我的应用程序需要 Mac OS 10.6.6 或更高版本,它应该在任何 Intel Mac 上运行。一些早期的英特尔 Mac 电脑拥有非常“简陋”的图形硬件。

任何帮助将不胜感激。

I'm working on a Mac application using OpenGL textures that I load from image files on disk using glTexImage2D.

According to the docs, for OpenGL versions >= 2.0, textures can be any arbitrary size. (for versions <2.0, the x and y dimensions both have to be a power of 2.)

However, I am getting bad textures if my image dimensions are not an even multiple of 4. I've searched and searched, but can't find any documentation on this requirement. In fact, the "red book" explicitly states that the texture dimensions can be any value for version >= 2.0.

What am I missing?

And, is there a performance benefit to converting a texture to the next largest power-of-two dimension? My app will require Mac OS 10.6.6 or later, which should run on any Intel Mac. Some of the early Intel macs had very "humble" graphics hardware.

Any help would be greatly appreciated.

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

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

发布评论

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

评论(2

痴情换悲伤 2024-10-22 04:20:28

对于尺寸为 2 的幂的普通纹理的限制在 OpenGL 版本 >= 2 中仍然存在。但是,支持一个纹理目标 GL_TEXTURE_RECTANGLE,它支持任意尺寸,但不会进行 mipmap。

尺寸是 4 的倍数没有限制,但是我怀疑您可能设置了 glPixelStore(GL_UNPACK...) 参数(可能由程序的其他部分设置),从而导致此行为。

The constraint on ordinary textures having dimensions being powers of 2 remains in OpenGL versions >= 2. However there is a new texture target supported, GL_TEXTURE_RECTANGLE, which supports arbitrary dimensions, but won't do mipmaping.

There's no constraint on dimensions being multiples of 4, however I suspect you might have glPixelStore(GL_UNPACK...) parameters set, maybe set by other parts of the program, that cause this behaviour.

强辩 2024-10-22 04:20:28

你的纹理是什么格式? S3TC 压缩纹理格式在 4x4 图块上运行,因此如果尺寸不是 4 的倍数,则可能无法工作或可能出现视觉伪影。

What format are your textures? S3TC compressed texture formats operate on 4x4 tiles, so may not work or may have visual artifacts if the dimensions are not multiples of 4.

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