ドライバがステレオ表示をサポートしてるかどうか調べる
GL_STEREOをサポートしている場合、クアッドバッファを使用して容易にフィールドシーケンシャルなステレオレンダリングが可能になります。
まあ、標準的でないハード使うか標準的でないドライバ入れるかしないとサポートされないんだけど(vistaでGeforce 8400M GSをQuadro化しようとして挫折した)。
以下のプログラムで、現在の環境がGL_STEREOをサポートしてるかどうかわかる。はず。
#include <iostream> #include <gl/glut.h> void display(void) { GLenum err=glGetError(); if(err) std::cerr << "err detected while initialize. " << err << std::endl; GLboolean b; glGetBooleanv(GL_STEREO,&b); if(err=glGetError()) std::cerr << "err detected at glGetBooleanv. " << err << std::endl; else { std::cout << "GL_STEREO is " << (b?"":"not ") << "supported. " << std::endl; std::cout << "glutGet(GLUT_WINDOW_STEREO): " << glutGet(GLUT_WINDOW_STEREO) << std::endl; } exit(0); } int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_STEREO); glutCreateWindow(argv[0]); glutDisplayFunc(display); glutMainLoop(); return 0; }
ディスプレイモードを設定するように修正した(071214)。おまけにCreateWindowとInitDisplayの順序を間違えていた。
というかQuadro環境が無いので動作確認できん→できた。ステレオ環境じゃないとそもそもウィンドウ作る段階でエラーメッセージが出て止まる。