gpt4 book ai didi

c++ - glGetObjectLabel 的段错误

转载 作者:行者123 更新时间:2023-11-28 06:41:09 25 4
gpt4 key购买 nike

我想用 glGetObjectLabel 检索标签.但是,我遇到了段错误。这是我的代码:

const unsigned int size {GL_MAX_LABEL_LENGTH};
char label[size];
GLsizei len[size];
glGetObjectLabel(m_identifier, m_name, size, len, label);

有什么问题? Here它指出“如果不是 NULL,长度和标签应该是客户端具有写入权限的地址,否则可能会发生未定义的行为,包括进程终止。”
所以我猜我的 labellen 变量有问题。

编辑:m_name 未设置为有效名称。我不知道这会导致段错误。

最佳答案

该代码在 glGetObjectLabel() 的参数方面存在一些问题。首先,GL_MAX_LABEL_LENGTH 是用于检索最大标签长度的枚举值,而不是实际的最大标签长度。此外,第 4 个参数只是指向 GLsizei 类型的单个值的指针,而不是数组。

整个事情看起来应该是这样的:

GLint maxLabelLen = 0;
glGetIntegerv(GL_MAX_LABEL_LENGTH, &maxLabelLen);
GLchar label[maxLabelLen];
GLsizei labelLen = 0;
glGetObjectLabel(m_identifier, m_name, maxLabelLen, &labelLen, label);

但这并不能解释崩溃。看起来你同时想出了那部分。为第二个参数传递一个无效值也不应该导致崩溃。这看起来像一个驱动程序错误。调用应该失败并出现 GL_INVALID_OPERATION 错误。

关于c++ - glGetObjectLabel 的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25927408/

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