- 註冊時間
- 2008-3-9
- 最後登錄
- 2020-4-28
- 主題
- 查看
- 積分
- 281
- 閱讀權限
- 50
- 文章
- 334
- 相冊
- 0
- 日誌
- 1
狀態︰
離線
|
我寫了一個程式,架構很大,我大概說明,
第一個檔案 ref class 裡面有以下函式
bean = glGenLists(1);
glNewList(bean, GL_COMPILE);
glPushMatrix();
glColor3f(0, 0.2, 0.2);
glutSolidSphere(road_width * 0.025,20,20);
glPopMatrix();
glEndList();
這是用來初始list用的,另外同一class有函式
{
glPushMatrix();
for(int i = 0; i < map->return_bean_total_number(); i++)
{
//if(!map->check_bean_eaten(i))
{
glPushMatrix();
if(!map->check_bean_eaten(i))
glTranslatef(map->return_bean_x(i), 1,
map->return_bean_z(i));
else
glTranslatef(map->return_bean_x(i), 3,
map->return_bean_z(i));
glCallList(bean);
glPopMatrix();
}
}
glPopMatrix();
}
每當符合條件就把list的東西改畫到y=3平面上(一開始是畫很多個list的東西都在y=1 平面)
以上這個class是另一個class的data member並使用以上函式
但是當後者的 class render 到螢幕上時,符合條件的時候的確在有把list改畫到y=3,
但是本來在y=1平面上的東西沒有畫卻"大部分"還留在畫面(少部分如預期不見了)...,這是為什麼???
相關的碼放在同一個class直接render(不透過class)y=1平面的東西不會殘留在畫面,
判別式一定沒錯,因為實驗過當符合條件重畫到同一個位置並更改顏色是正確覆蓋的 |
|