2012-04-03 57 views
0

我用特定顏色的glVertex3f()繪製了一系列點。現在,當用戶點擊某個點時,我需要以不同顏色顯示相關點,而其他點則保持舊顏色。嘗試使用下面提到的條件,但顏色保持不變,首先設置。有沒有辦法以不同顏色繪製點?使用opengl以不同顏色突出顯示點

if((highlightColor)&&(i==0)){      
     glColor3f(0,1,0);      
     glVertex3f(tempx,calcy,0); 
    } else{ 
     glColor3f(0,0,1);  
     glVertex3f(tempx,calcy,0); 
    } 

最初,所有的點都是藍色的。然後,如果我想使用不同顏色突出顯示某些點並再次調用此方法,則將變量highlightColor設置爲true。顏色不會變成綠色。有人能告訴我我哪裏出了問題嗎?

+0

[SSCCE](http://sscce.org/) – genpfault 2012-04-03 16:32:23

+0

我正在使用C++進行此實現。請讓我知道,如果opengl支持我在找... – user1302064 2012-04-03 16:49:29

回答

1

如果您已啓用深度測試,如果突出顯示的繪製不是第一個,則可能會因爲它對z緩衝區的深度測試失敗而被拒絕。也可能是因爲您沒有清除深度緩衝區?如果您不想關閉深度測試(例如避免狀態切換),則可以將高亮點的z更靠近,以便通過深度測試。

另外,您確定if條件通過嗎?如果是這樣,作爲一個完整的檢查,你可以在一些空的空間中稍微移動/偏移(x,y),以確保它實際上正在進入該塊。

它可能只是另一個藍點可以繪製在上面。你將不得不張貼更多的代碼來顯示你在做什麼。

+0

是的,我相信它進入條件塊。我已經通過在塊內打印出來進行了測試。所有點都以藍色繪製。然後第二次調用該函數,進入if循環,顏色變爲藍色,並在閃回時變回綠色。 – user1302064 2012-04-03 17:50:24

+0

你的意思是它變成綠色然後回到藍色?這可能表明它正在工作,但條件只是在很短的時間內(可能只是1幀),在這種情況下,您需要延長高光持續時間,因此它是顯而易見的 – 2012-04-03 18:02:02

+0

感謝Preet爲您所有寶貴的意見..它現在有效.. – user1302064 2012-04-04 01:18:23

相關問題