检测到堆栈粉碎 glGetTexImage

Posted

技术标签:

【中文标题】检测到堆栈粉碎 glGetTexImage【英文标题】:Stack smashing detected glGetTexImage 【发布时间】:2016-08-21 03:51:54 【问题描述】:

以下是运行时导致堆栈崩溃的代码:

GLubyte pixels[SCREEN_WIDTH*SCREEN_HEIGHT*3];


glBindTexture(GL_TEXTURE_2D,fbo->renderedTexture);
glGetTexImage(GL_TEXTURE_2D,0,GL_RGB,GL_UNSIGNED_BYTE,pixels);

我已确定函数本身不是问题,因为它适用于 sdl 表面。

【问题讨论】:

GL_PACK_ALIGNMENT 设置为什么? 我们没有足够的信息来为您推断问题。请发布一个最小的工作示例。 【参考方案1】:

可能的原因:

pixels 的大小超过了剩余的堆栈数量(可用的堆栈数量有限),这就是破坏你的堆栈的原因。不要将堆栈用于大的东西。

另一个可能的原因是,pixels 的大小太小,以至于纹理数据在应用了所有打包参数(对齐方式、行跨度)后都无法适应它。

【讨论】:

以上是关于检测到堆栈粉碎 glGetTexImage的主要内容,如果未能解决你的问题,请参考以下文章