使用sfml或openGL激活四缓冲立体声

时间:2014-08-20 08:44:48

标签: c++ opengl glut sfml stereo-3d

我的程序在使用一个缓冲区的普通3D中完美运行,它使用SFML窗口管理进行编码。 我想添加四缓冲立体声,因此我将绘图代码更改为以下内容:

        glDrawBuffer(GL_BACK_LEFT);
    camera->OnMouseMotion(sf::Vector2i(-1,0));
    for (auto i = objects->cbegin(); i != objects->cend(); ++i)
        (*i)->draw(camera);
    glFlush();
    glDrawBuffer(GL_BACK_RIGHT);
    camera->OnMouseMotion(sf::Vector2i(2,0));
    for (auto i = objects->cbegin(); i != objects->cend(); ++i)
        (*i)->draw(camera);
    glFlush();
    camera->OnMouseMotion(sf::Vector2i(-1,0));

请注意,我的相机更换不完全正确,我知道我将不得不更改这些,现在我专注于使用四路缓冲立体声显示图像。我注意到在所有使用这种立体声的程序示例中,他们用这样的东西初始化窗口:

    type = GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH | GLUT_STEREO;
  glutInitDisplayMode(type);

使用SFML,这样的功能是不可用的,我的问题是: 我可以使用低级openGL函数来实现相同的结果吗?我可以使用另一个窗口管理库与SFML?我应该忘记我的程序的SFML并完全将其更改为另一个吗?

1 个答案:

答案 0 :(得分:1)

SFML没有初始化功能,它会自动创建openGL上下文,你可以做两件事:

  • 修改您正在使用的SFML源,并尝试在窗口创建功能中添加某个参数
  • 更改您的显示库以创建openGL上下文,但是您可以保留或不保留SFML 2D绘图功能,我不确定如果您使用过剩创建上下文,这些功能将会起作用。
编辑:经过一番小的检查,你不能用另一个库创建一个上下文,仍然使用SFML绘制简单的2D表格,恐怕你不得不让SFML去。