我的程序在具有一个缓冲区的普通 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/