0

指定された軸を中心とした回転を表す 3 つのウィンドウを作成したいと考えています。そのためにXYZAxis、 function を含むクラスを作成しましたrender。次に、main からcreatWindowGLUT ウィンドウを作成する関数を呼び出します。glutDisplayFuncただし、関数 render を:( main のフラグメントに正しく渡す方法がわかりません

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();
}

ただし、プログラムはglutMainLoop();に到達するとコンパイルされます。エラーをスローしてウィンドウを閉じます

GLUT: 警告 (無名): 以下は GLUT 3.0 の新しいチェックです。コードを更新します。GLUT: Fatal Error in (unamed): ウィンドウ 1 には再表示が必要ですが、表示コールバックはありません。

正しく行う方法はありますか?何かアイデアはありますか?

4

1 に答える 1

1

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

于 2012-05-12T13:50:26.853 に答える