【问题标题】:OpenGL compressed textures and extensionsOpenGL 压缩纹理和扩展
【发布时间】:2012-09-11 04:35:32
【问题描述】:

我有一个 nVidia Quadro NVS 295/PCIe/SSE2 卡,当我在其中执行 glGetString(GL_EXTENSIONS) 时,打印出值并 grep 用于“压缩”,我得到了这个列表

  • GL_ARB_compressed_texture_pixel_storage
  • GL_ARB_texture_compression
  • GL_ARB_texture_compression_rgtc
  • GL_EXT_texture_compression_dxt1
  • GL_EXT_texture_compression_latc
  • GL_EXT_texture_compression_rgtc
  • GL_EXT_texture_compression_s3tc
  • GL_NV_texture_compression_vtc

但是glCompressedTexImage2D 又说glGetGL_COMPRESSED_TEXTURE_FORMATS 返回支持的压缩,这只会给出

  • 0x83f0 = GL_COMPRESSED_RGB_S3TC_DXT1_EXT
  • 0x83f2 = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT
  • 0x83f3 = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT

这三个值。

现在为什么glGet 不公开我的卡可以处理的其他压缩格式?说 LATC、RGTC 还是 VTC?

另外,为什么我在第一个列表中没有看到相应的 DXT3 或 5 扩展?

【问题讨论】:

    标签: opengl graphics textures


    【解决方案1】:

    现在为什么 glGet 不公开我的卡可以处理的其他压缩格式?

    因为 NVIDIA 不愿意。真的,没有意义。 ARB 甚至决定从 GL 4.3 中弃用(尽管没有删除)COMPRESSED_TEXTURE_FORMATS 内容。

    简而言之,不要依赖特定的glGet。依赖扩展。如果你有 GL 3.0+,那么你有the RGTC formats;这是 GL 3.0+ 的必需。如果你有EXT_texture_compression_s3tc,那么你有“DXT”格式。如果您有EXT_texture_sRGB as well,那么您有“DXT”格式的sRGB 版本。以此类推。

    另外,为什么我在第一个列表中没有看到相应的 DXT3 或 5 扩展?

    咳咳

    • 0x83f2 = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT
    • 0x83f3 = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT

    这些只是 S3TC 的不同形式。

    【讨论】:

    • 顺便说一句,感谢您的快速回复。我正在阅读您关于 OpenGL 的优秀教程,我对此也有疑问。不知道如何联系您(因为教程没有联系电子邮件),因此在 BitBucket.org 上注册了自己并在那里给您发送了消息。
    • 链接似乎已损坏 :( 因此,我不知道 OpenGL 3.0+ 的保证格式是什么
    【解决方案2】:

    为什么我在第一个列表中没有看到相应的 DXT3 或 5 个扩展?

    你是。他们被GL_EXT_texture_compression_s3tc覆盖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多