2012-05-12 8 views
0

指定された軸の周りの回転を表す3つのウィンドウを作成したいと思います。 私はクラスXYZAxisを作りました。それには、関数renderが含まれています。 次に、メインから私はGLUTウィンドウを作るcreatWindowという関数を呼び出します。それはglutMainLoop()に到達したときに しかし、私は正しく機能がglutDisplayFunc :( メインglutDisplayFuncの関数へのポインタ

void (XYZAxis::* pmf)(void); 
pmf = &XYZAxis::render; 

XYZAxis *xaxis=&XYZAxis(origin,5,10); 


glutDisplayFunc(void(xaxis->*pmf)()) ; 
glutIdleFunc(void(xaxis->*pmf)()); 

のフラグメントとXYZAxisクラス内の関数にレンダリング渡す方法がわからないが

void render(void) 
{ 

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
glLoadIdentity(); 



this->orientation=this->orientation*(this->angle); 
this->draw(); 

glutSwapBuffers(); 
} 

プログラムは、しかし、コンパイル; エラーを投げてウィンドウを閉じます

GLUT:警告で(una med):以下はGLUT 3.0の新しいチェックです。 コードを更新してください。 GLUT:(unamed)の致命的なエラー:ウィンドウ1には再表示が必要ですが、表示はありません コールバック。

どのように正しく行うには?どのようなアイデアですか?

答えて

1

C++インスタンスメソッドへのポインタをGLUTのようなC APIに渡すことはできません。関心のあるインスタンスへのグローバルポインタを使用してC関数でメソッド呼び出しをラップする必要があります。http://www.parashift.com/c++-faq-lite/pointers-to-members.html

を参照してください。
関連する問題