SOGO論壇
  登入   註冊   找回密碼
查看: 913|回覆: 2
列印 上一主題 下一主題

[問題求助] glCallList()函數在C++類別上發生"殘留影像"問題 [複製連結]

Rank: 5Rank: 5

狀態︰ 離線
跳轉到指定樓層
1
發表於 2011-11-11 21:32:22 |只看該作者 |倒序瀏覽
我寫了一個程式,架構很大,我大概說明,

第一個檔案 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平面的東西不會殘留在畫面,

判別式一定沒錯,因為實驗過當符合條件重畫到同一個位置並更改顏色是正確覆蓋的
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

Rank: 5Rank: 5

數位軟體勳章

狀態︰ 離線
2
發表於 2011-11-11 21:59:22 |只看該作者

l

本帖最後由 alphi 於 2011-11-11 22:11 編輯

根據你的描述,原本同在Class內的函式可以正常.但你呼叫另一個物件就會造成影像殘留

請問你的物件是宣告何種方式以及呼叫方式.如果是靜態物件跟全域變數一樣.這樣你所儲存的資料有可能保留上一次

另外再呼叫其函式有坐其同步或者redraw動作嗎.或許是您呼叫的Library 並沒有去執行此動作 而造成影響殘留.

看你的部分程式碼應該是使用OpenGL.應該是不會造成此問題才是.

建議你可以把你呼叫的物件中 將你使用的LIST 印出來或者你有Watch windows去做debug trace 就可以知道是資料問題還是其他問題造成

已有 1 人評分威望 收起 理由
又靜 + 2 感謝您熱心幫助會員解決問題,論壇需要您的.

總評分: 威望 + 2   查看全部評分

失敗只有一種:那就是半途而廢

Rank: 5Rank: 5

狀態︰ 離線
3
發表於 2011-11-12 09:27:50 |只看該作者
找出呼叫次數了,看那數字應該不是殘影問題,在其他地方的遞迴中多了幾次造成

謝謝妳
請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-11-16 10:16

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部