【问题标题】:Android GLException : stack underflowAndroid GLException:堆栈下溢
【发布时间】:2014-10-17 04:34:00
【问题描述】:

GL 堆栈下溢发生在 glPopMatrix();

我无法弄清楚我遇到的问题.. 但我只是猜测 push & pop Matrix...

我知道 弹出堆栈 上面没有任何内容可能会发生“堆栈下溢... 但我不认为我有这个问题..请给我一个答案!

gl.glMatrixMode(GL10.GL_MODELVIEW);
            gl.glLoadIdentity();
            gl.glPushMatrix();
                gl.glScalef(1f, 1f, 1f);
                gl.glTranslatef(0f, 0f, 0f);

                gl.glMatrixMode(GL10.GL_TEXTURE);
                gl.glLoadIdentity();
                gl.glTranslatef(0.0f, bgScroll1,0.0f);
                background.draw(gl);
            gl.glPopMatrix();  //stack underflow happens at this line

【问题讨论】:

    标签: android opengl matrix stackunderflow


    【解决方案1】:

    GL 为每种矩阵类型维护一个单独的矩阵堆栈:GL_MODELVIEWGL_PROJECTION、adn GL_TEXTURE。推入/弹出矩阵操作始终在当前矩阵模式下工作(与所有与矩阵相关的 GL 命令一样)。因此,您的代码推送模型视图堆栈,并尝试从可能为空的纹理矩阵堆栈中弹出。

    修改纹理矩阵后,应将矩阵模式设置回GL_MODELVIEW

    【讨论】:

    • 或者在模型视图矩阵模式下?
    • @KyeongsikJasonKim:您要将纹理矩阵推入堆栈吗?我不知道。从代码的组织方式来看,您似乎想要保存模型视图矩阵,应用一些本地转换来绘制“背景”,然后恢复它。因此,您应该推送并稍后弹出模型视图矩阵。您可能还希望纹理矩阵的修改位于“背景”的本地,因此您可能希望另外推送和弹出那个。
    猜你喜欢
    • 2014-07-20
    • 2011-01-24
    • 1970-01-01
    • 2016-05-06
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2012-12-20
    相关资源
    最近更新 更多