3

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

4

3 回答 3

4

我相信你使用 glCompressedTexImage2DARB 方法和它的朋友。

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

于 2009-02-23T10:25:54.193 回答
3

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

于 2009-02-26T07:17:59.190 回答
0

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

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

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

于 2009-02-23T13:31:45.837 回答