我正在尝试制作一个极简的 OpenGL 程序,以便通过 Bumblebee(擎天柱)在我的英特尔芯片组(Mesa)和 NVIDIA 卡上运行。
我的源代码(使用 FreeGLUT):
#include <GL/freeglut.h>
void display(void);
void resized(int w, int h);
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE);
glutInitContextVersion(2, 1);
glutInitContextProfile(GLUT_CORE_PROFILE);
glutInitWindowSize(640, 480);
glutCreateWindow("Hello, triangle!");
glutReshapeFunc(resized);
glutDisplayFunc(display);
glClearColor(0.3, 0.3, 0.3, 1.0);
glutMainLoop();
return 0;
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_TRIANGLES);
glVertex3f(0, 0.75, 0.0);
glVertex3f(-0.75, -0.75, 0.0);
glVertex3f(0.75, -0.75, 0.0);
glEnd();
glFlush();
}
void resized(int w, int h)
{
glViewport(0, 0, w, h);
glutPostRedisplay();
}
./a.out
当我在英特尔芯片组上直接启动程序 ( ) 时,一切正常。我没有机会primusrun ./a.out
显示透明窗口:
它不是真正透明的,即使我移动窗口,后面的图像也会保留。
有趣的是,当我更改为双色缓冲区(使用GLUT_DOUBLE
而不是GLUT_SINGLE
,而glutSwapBuffers()
不是glFush()
)时,这在 Intel 和primusrun
.
这是我的:http glxinfo
: //pastebin.com/9DADif6X
和我的:http primusrun glxinfo
: //pastebin.com/YCHJuWAA
我做错了还是与 Bumblebee 相关的错误?