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

标签 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 并将其完全更改为另一个吗?

最佳答案

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

  • 修改您正在使用的 SFML 源,并尝试在窗口创建函数的某处添加您的参数
  • 更改您的显示库以创建 openGL 上下文,但是您可以保留也可以不保留 SFML 2D 绘图函数,例如,如果您使用过剩创建上下文,我不确定这些功能是否有效。

编辑:经过一个小的检查,你不能用另一个库创建上下文并仍然使用 SFML 来绘制简单的 2D 形式,恐怕你被迫放弃 SFML。

关于c++ - 使用 sfml 或 openGL 激活四缓冲立体声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25400389/

相关文章:

c++ - 使用 XCODE 4.6.1 的 boost - 正确的build设置是什么?

opengl - 是否可以创建固定大小的过剩窗口?

c - opengl中的背景颜色

c++ - 使用旧语法的 .NET C++ 内存泄漏?

c++ - 幻方算法问题

c++ - 从串行打印垃圾中读取

opengl - 将模板渲染缓冲区绑定(bind)到opengl中的帧缓冲区

c++ - 使用 OpenGl 在 C++ 中组织公寓建模代码

c++ - 如何在OpenGL中仅为一个对象设置 Material ?

c++ - opengl 动态贝塞尔曲线有间隙 - glEvalCoord1f();