gpt4 book ai didi

OpenGL GL_R8 生成一个 0x501,GL_RGB8 没有

转载 作者:行者123 更新时间:2023-12-04 20:49:38 24 4
gpt4 key购买 nike

这似乎是一个相当简单的问题(或者至少尽可能接近)。当我传递 GL_RGB8、GL_RGBA8 或大多数多 channel 内部格式时,下面的行不会产生任何错误。

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, fontImgSize, fontImgSize, 0, GL_RED, GL_UNSIGNED_BYTE, NULL);

但是,当我传递 GL_R8 或任何 8 位单 channel 变体时,glGetError 返回 0x501(无效值)。

glTexImage2D(GL_TEXTURE_2D, 0, GL_R8, fontImgSize, fontImgSize, 0, GL_RED, GL_UNSIGNED_BYTE, NULL);

知道这里发生了什么吗?我目前使用的计算机相当过时且功耗低,但如果这是问题所在,我怀疑 RGB8 或 RGBA8 能否正常工作。

对于那些好奇的人,fontImgSize == 2048,我电脑上的最大纹理大小。

编辑:似乎 GL_RG8 和 2 channel /16 位格式也产生 0x501

最佳答案

3 分量和 4 分量内部格式(如 GL_RGB8GL_RGBA8)长期以来(曾经?)一直是 OpenGL 的核心功能,但是1 分量和 2 分量内部格式(如 GL_R8GL_RG8)是一个相当新的功能,需要相当新的硬件和相应的驱动程序(至少是 OpenGL 3,我想想,不再那么新了,但如果你说你的 labtop 已经过时,那么可能太新了)。

有较旧的(现已弃用)1/2 分量内部格式,如 GL_LUMINANCEGL_LUMINANCE_ALPHAGL_INTENSITY(以及它们各自的大小版本),任何旧的实现都应该支持它。但请注意,与较新的纯色格式相比,它们的语义和过滤/复制行为略有不同。但也许它们足以满足您的用例。

另请注意,作为外部格式(用于读取/写入纹理数据的 CPU 像素数据的格式)格式 GL_RED(也许还有 GL_RG?)应该始终可用(具有相应的语义),但这与内部纹理数据完全无关。

关于OpenGL GL_R8 生成一个 0x501,GL_RGB8 没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17306544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com