DDS纹理加载

发布于 2024-07-13 23:44:36 字数 50 浏览 8 评论 0原文

如何将 dds 纹理文件加载到 OpenGL 2dtexture 或立方体贴图纹理中?

How would I load a dds texture file into an OpenGL 2dtexture or cube map texture?

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

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

发布评论

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

评论(3

乜一 2024-07-20 23:44:36

我相信您使用 glCompressedTexImage2DARB 方法及其朋友。

此 PDF 似乎包含一些可能对您有帮助的有希望的信息。

I believe you use the glCompressedTexImage2DARB method and its friends.

This PDF seems to contain some promising info that may be helpful to you.

第七度阳光i 2024-07-20 23:44:36

根据您的需要,DevIL 库可以负责向 OpenGL 提供 DDS 文件内容。

Depending on your needs, the DevIL library can take care of feeding OpenGL with a DDS file content.

不必你懂 2024-07-20 23:44:36

如果 DDS 包含压缩纹理,则使用 glCompressedTexImage2DARB(),如果它包含未压缩数据,则应用通常的 glTexImage2D 过程。 如果 DDS 文件包含 mipmap,则为每个 mipmap 级别一次;如果是立方体贴图,则为每个立方体贴图面一次。

有关如何读取 DDS 文件中的标头和数据,请查找 MSDN 或 DirectX SDK 上的文档。 这是一个相当标准的容器格式,没有太多惊喜。

请注意,DDS 使用左上角图像原点,而 OpenGL 假定图像数据使用左下角原点。 这意味着您可能希望在加载 DDS 图像后垂直翻转它。如果它们位于 DXT1/3/5 中,您可以在不解压它们的情况下执行此操作,但这是一个稍微复杂的过程,涉及对每个 4x4 的内容进行位操作压缩块。

If the DDS contains a compressed texture then use glCompressedTexImage2DARB(), if it contains uncompressed data the usual glTexImage2D procedure applies. Once for each mipmap level if the DDS file contains mipmaps, and once for each cubemap face if its a cubemap.

For how to go about reading the header and data in a DDS file look up the documentation for it on MSDN or in the DirectX SDK. It's a fairly standard container format, there aren't too many surprises.

Be aware that DDS uses a top-left image origin whereas OpenGL assumes a bottom-left origin for image data. This means you will probably want to vertically flip a DDS image after loading it in. You can do this without decompressing them if they are in DXT1/3/5, but it's a slightly fiddly process that involves bit manipulation on the contents of each 4x4 compression block.

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