【发布时间】:2013-12-28 06:03:28
【问题描述】:
我正在运行 Pidora 的 Raspberry Pi 上移植/测试我的代码,所有这些都已更新。
测试是一个非常简单的 OpenGL 程序,在另外两台计算机上运行良好。我将问题缩小到导致段错误的 glPopMatrix 调用。问题的简单再现(整个绘制函数)是:
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glViewport(0,0,200,200);
float d1=0.0f, d2=0.1f;
glPushMatrix(); //gratuitous push/pop pair to demonstrate
glBegin(GL_TRIANGLES);
glColor4f(1.0f,0.0f,0.0f,0.5f); glVertex3f( 0.00f, 1.0f,d1);
glColor4f(0.0f,1.0f,0.0f,0.5f); glVertex3f( 0.87f,-0.5f,d1);
glColor4f(0.0f,0.0f,1.0f,0.5f); glVertex3f(-0.87f,-0.5f,d1);
glColor4f(1,0,0,1);
glVertex3f(0,0,d2);
glVertex3f(1,0,d2);
glVertex3f(0,1,d2);
glColor4f(1,0,1,1);
glVertex3f( 0, 0,-d2);
glVertex3f(-1, 0,-d2);
glVertex3f( 0,-1,-d2);
glEnd();
glPopMatrix(); //segfault here!
我能找到的唯一参考是this 2011 bug report,它有效地描述了同样的问题。到目前为止,他们似乎只有一个解决方法:
export GALLIUM_DRIVER=softpipe
export DRAW_USE_LLVM=no
我发现只有第一行是必要的。但是,正如上面所建议的,它看起来可能会迫使操作系统使用软件后备。表明。程序(如上绘制三个三角形)以大约 10Hz 的频率运行。
众所周知,OpenGL 矩阵堆栈已被弃用,但像上面这样的简单用例对测试很有用。如果 glPopMatrix 存在,我希望它至少不会崩溃。有没有办法让我获得硬件加速但仍然使用它?
【问题讨论】: