首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >glTexImage2D返回无效值

glTexImage2D返回无效值
EN

Stack Overflow用户
提问于 2018-01-08 02:18:26
回答 1查看 302关注 0票数 0

我找不到它会这样做的原因。我是这样称呼它的

代码语言:javascript
复制
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, surf->w, surf->h, 0, data_fmt, GL_UNSIGNED_BYTE, surf->pixels)

宽度和高度参数为872639,内部格式为GL_RGBA

可能的问题是什么?我检查了https://www.khronos.org/registry/OpenGL-Refpages/es1.1/xhtml/glTexImage2D.xml,它看起来很好(除非宽度或高度大于最大纹理尺寸,我对此表示怀疑,或者不支持内部格式RGBA,这也不太可能)

下面是完整的代码

代码语言:javascript
复制
out << "loading " << fileName << "\n";
dimensions.setZero();
name = fileName;
this->repeat = repeat;

SDL_Surface* surf = IMG_Load(fileName.c_str());
if (surf == NULL)
{
    out << "surface_error: " << fileName << " " << SDL_GetError() << "\n";
    hasError = true;
    return;
}

GLenum data_fmt;
if (surf->format->BytesPerPixel == 4)
{
    data_fmt = GL_RGBA;
}
else if (surf->format->BytesPerPixel == 3)
{
    data_fmt = GL_RGB;
}
else if (surf->format->BytesPerPixel == 1)
{
    data_fmt = GL_RED;
}
else
{
    assert(false);
}
GL_CALL(glGenTextures(1, &gTexture));
GL_CALL(glBindTexture(GL_TEXTURE_2D, gTexture));
GL_CALL(glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, surf->w, surf->h, 0, data_fmt, GL_UNSIGNED_BYTE, surf->pixels));
if (hadGLError)
{
    out << data_fmt << " " << surf->w << " " << surf->h << "\n";
}
GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR));
GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR));
dimensions = IntVec2(surf->w, surf->h);

glGenerateMipmap(GL_TEXTURE_2D);
GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, repeat ? GL_REPEAT : GL_CLAMP_TO_EDGE));
GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, repeat ? GL_REPEAT : GL_CLAMP_TO_EDGE));
GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR));
GL_CALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR));

SDL_FreeSurface(surf);

GL_CALL检查glGetError,并将其设置为GL_INVALID_VALUE,在glTexImage2D之后设置为0x0501。游戏在尝试设置包装参数时崩溃

EN

回答 1

Stack Overflow用户

发布于 2018-01-09 07:22:28

我认为这个问题是由其他原因引起的,opengl没有正确初始化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48140188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档