是什么导致 glTexSubImage1D() - 加载纹理时在此示例中出现GL_INVALID_VALUE错误?
What causes glTexSubImage1D() - GL_INVALID_VALUE error in this example when loading a texture?
我正在尝试将传递函数加载为 1D 纹理,如下所示:
glBindTexture(GL_TEXTURE_1D, transfer);
glTexStorage1D(GL_TEXTURE_1D, 1, GL_RGBA32F, 11);
glTexSubImage1D(GL_TEXTURE_1D, 1, 0, 11, GL_RGBA, GL_FLOAT, props.transColors);
其中props.transColors
是一个浮点数组(这些值可以在运行时从 GUI 更改(:
float transColors[4 * 11] =
{
1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f
};
计划是使用glTexSubImage1D()
每帧将数组加载为1D纹理。
函数glTexSubImage1D()
将始终引发GL_INVALID_VALUE错误。从文档中可以看出,错误可能是由于以下原因之一引起的:
如果级别小于 0,则生成GL_INVALID_VALUE。
如果电平大于 log2 max,则可能会生成GL_INVALID_VALUE, 其中 max 是返回值 GL_MAX_TEXTURE_SIZE。
如果 xoffset<−b,或者如果GL_INVALID_VALUE (xoffset+width(>(w−b(,其中 w 是GL_TEXTURE_WIDTH,b 是 正在修改的纹理图像的GL_TEXTURE_BORDER宽度。 请注意,w 包含边框宽度的两倍。
如果宽度小于 0,则生成GL_INVALID_VALUE。
我认为列出的任何几点都不适用于我的情况。所以我想知道,是什么导致了这个问题?
第二个参数(在GL_TEXTURE_1D
之后(是 mipmap 级别。级别 0 是最大的 mipmap 级别。您的图像分配了一个级别(这是要glTexStorage1D
的第二个参数(,但您正在尝试上传第二个级别(因为它们从 0 开始(。将 0 传递到glTexSubImage1d
作为级别编号,而不是 1。
即使您的纹理确实有多个 mipmap 级别,您上传的数据对于第二个级别来说也太大了。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- glDrawElements GL 错误类型 = 0x824c,严重性 = 0x9146,消息 = GL_INVALID
- 致命错误 C1083:无法打开包含文件:"GL/glew.h":没有此类文件或目录
- C++ 致命错误:glad/gl.h:没有这样的文件或目录
- Android Native:CMake 链接错误:未定义对 GL 函数的引用 - 即使包含并链接了 EGL 和 GLESv3
- Glew - 与 GLFW 配对时 gl- 函数符号上出现链接错误
- gl_invalid_operation错误1218(0x0502)使用简单的OpenGl命令GlverTex2i,gl
- 错误:尝试纯粹在 NDK C++ 的本机活动中使用 Open GL 时,无法解析类型 'EGL_DEFAULT_DISPLAY'
- glbinding, Qt 和错误"glbinding is not compatible with gl.h"
- 使用gl时出现多个错误
- C++ OpenGL:在 glew.h 之前包含错误 gl.h
- 如何将 Open GL 驱动程序中的分段错误追溯到我的源代码
- 如何修复此错误:#include < gl/glut.h> "Cannot open source file gl/glut.h"
- 启用深度测试时出现 GL 错误 1280
- 打开gl画线错误
- glBindFramebuffer 在使用 GL_DRAW_FRAMEBUFFER 目标时会导致 "invalid operation" GL 错误
- 未处理的异常错误visual studio 2010 c++ (open gl)
- 错误:"GL/glfw3.h:没有这样的文件或目录",在 Linux 上使用 OpenGL 编译C++程序时