我想創建一個工具,將在openGL中繪製一個形狀,然後修改窗體中該形狀的屬性的值。所以如果我的形狀是矩形,我將創建一個表單,允許用戶控制矩形的大小,顏色等。我用託管的C++編寫了openGL代碼,並在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);
}
在這個例子中,矩形的邊框將呈現,但矩形本身不會被渲染...如果我更換顯示列表只需要一個方法調用,矩形就會呈現出來。有誰知道爲什麼會發生這種情況?
你可以發佈你的renderRect函數嗎?這可能會有所幫助。 – Dany
添加了renderRect方法。 – eternalking