openGLで図形を描画し、Windowsフォームでその図形のプロパティの値を変更するツールを作成しようとしています。したがって、私の形状が長方形の場合、ユーザーが長方形のサイズや色などを制御できるフォームを作成します。openGLコードをマネージC++で、フォームをc#で記述しましたが、これらの形状の一部がより複雑になったため、(パフォーマンスと予測可能性の両方の目的で)それらの表示リストを作成することにしました。
シェイプのコンストラクターで表示リストを定義し、renderメソッドで表示リストを呼び出します。
私の問題は、ディスプレイリストがまったく実行されないことです。表示リストの外側でレンダリングした部分はレンダリングされますが、表示リストの内側の部分はレンダリングされません。
これが私のプロセスのサンプルコードです:
//c# side
GLRectangle rect
public CSharpRectangle() {
rect = new GLRectangle();
}
//managed c++ side
public GLRectangle() {
width = 50;
height = 50;
//initialize more values
rectDL = glGenLists(1);
glNewList(rectDL, GL_COMPILE);
renderRect();
glEndList();
}
public render() {
//Draw border
glBegin(GL_LINE_LOOP);
glVertex2f(0, 0);
glVertex2f(width, 0);
glVertex2f(width, height);
glVertex2f(0, height);
glEnd();
//Draw interior
glCallList(rectDL);
}
private renderRect() {
glRectf(0,0,width,height);
}
この例では、長方形の境界線はレンダリングされますが、長方形自体はレンダリングされません...表示リストを単にメソッド呼び出しに置き換えると、長方形は正常にレンダリングされます。なぜこれが起こっているのか誰かが知っていますか?