OpenGL選擇機制的一點討論

2021-09-05 17:38:19 字數 1123 閱讀 8199

今天上午和

susu

討論了下

這篇隨筆

中關於選擇和拾取的**,發現有下面幾個問題值得思考:

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1, selectbuff[buffer_length]

是用來存放命中記錄的,在選擇模式下,與拾取矩陣相交的圖元就會被選擇命中,就會將一條命中記錄寫入到選擇陣列中,每個命中記錄包括:

selectbuff[0]

儲存命中發生時名稱堆疊中的名稱數目,

selectbuff[1], selectbuff[2]

儲存了與拾取矩陣相交的圖元的所有頂點的最大和最小視窗

z座標,並且將兩個座標都乘以2的

32此方減去1。

selectbuff[3]

儲存了命中發生時名稱堆疊的內容(也就是命中的目標名稱)。

上面都好理解,但這裡

susu

碰到乙個問題,說她的程式中

selectbuff[4]

才是儲存了命中的目標,這讓我無法理解。。。 2

,glloadname()

只是置換掉名稱堆疊的棧頂值,而

glpushname

才是入棧的操作,那麼

renderscene

函式裡glinitnames();glpushname(0);

這說明初始時名稱堆疊中只有乙個名稱

而接下來幾個

glloadname(

),只是替換掉棧頂,那就是說只有乙個名稱會進棧,而前面的都被後面的覆蓋了?

如果是這樣的,那後面如何去選中其他幾個圖元? 3

,選擇和反饋模式是把繪圖資訊返回給應用程式,而渲染模式是把這些資訊傳送給幀緩衝,也就是說處於前兩種模式時,螢幕凍結住了(沒有繪製圖形),因此也就對顏色快取,深度快取等不會產生影響。 4

,要進行選擇,首先要把場景繪製到幀快取中,然後進入選擇模式並重新繪製場景,而進入選擇模式後,幀快取的內容不會發生變化,退出選擇模式時,就會返回一系列與視景體(當前的模型檢視矩陣和投影矩陣以及附加剪裁面定義)相交的圖元(這些圖元都被選中了)。而要實現拾取,就需要將繪圖操作限制在視口的乙個小型區域內。

OpenGL選擇機制的一點討論

今天上午和susu討論了下這篇隨筆中關於選擇和拾取的 發現有下面幾個問題值得思考 1,selectbuff buffer length 是用來存放命中記錄的,在選擇模式下,與拾取矩陣相交的圖元就會被選擇命中,就會將一條命中記錄寫入到選擇陣列中,每個命中記錄包括 selectbuff 0 儲存命中發生...

wince romfs的一點討論

wince 的 rom file system 是用romimage生成的。將nk.bin中所有的執行檔案 exe,dll 組織到 平坦空間 重定義dll和exe執行位址使之沒有重疊 按照執行時的格式存放等 這樣就省去了載入定位的過程 檔案的其他資訊 如把檔名,起始位址,長度等 組織在特定的段以便查...

有關生活的一點討論

今天和同事在一起討論生活難易的問題,看到乙個帖子,國外的乙個快50歲的軟體工程師寫的,說他失業也,再就業的難題,然後我們就發散開來了。今年28歲了,不知不覺,還感覺自己很年輕,但是其實已經不小了啊,之前一直都在逃避,逃避在上海買房的問題,逃避未來的發展,因為現在在一家外企做研發,自我感覺還很好,也許...