OpenGL 選擇和反饋

2021-07-02 03:36:37 字數 1118 閱讀 9419

注釋:

1,本節內容在opengl 3.1以後已經廢除了,當初opengl其實也就是想讓硬體做,達到加速目的。但現在其實都是軟體做,而且效能更高。因為軟體做的話,有八叉樹之類的,可以先剔除一大部分物體。

2,opengl中的選擇和反饋是與普通渲染方式不同的一種特殊的渲染方式。我們使用時一般是先在幀快取中渲染普通場景,然後進入選擇模式重繪場景,此時幀快取的內容並無變化。也就是說,為了選擇某些物體,我們需要在一幀中使用不同的渲染方式將其渲染兩遍。我們知道對物件進行渲染是比較耗時的操作,當場景中需要選擇的物件多而雜的時候,採用這個機制是非常影響速度的。

#include "gltools.h"

#include

#else

#define freeglut_static

#include

#endif

int board[3][3]; //記錄方塊對應顏色值

/* 清除每個方塊顏色值 */

void init(void)

/*繪製方塊,用2個名字(row, col) 標誌方塊,這時堆疊深度就只有2,

如果只用乙個名字標誌物體,那麼對應堆疊大小就是1,即每次替換棧頂資料*/

void drawsquares(glenum mode)

}}/*列印選擇資訊*/

顯性反饋和隱性反饋

推薦系統的使用者行為分為顯性反饋和隱性反饋 顯性反饋資料集可以明確區分正負樣本 如評分資料 隱性反饋資料集只有正樣本 使用者喜歡什麼 沒有負樣本 使用者不喜歡什麼 1 對於乙個使用者,用他所有沒有過行為的物品作為負樣本。2 對於乙個使用者,從他沒有過行為的物品中均勻取樣出一些物品作為負樣本。3 對於...

OPENGL 射線選擇

用過opengl的人,應該都知道,opengl是自帶拾取功能的,但用過的人應該也知道,這功能確實不好用。opengl自帶的選擇功能主要有兩種,名字堆疊 拾取 和讀深度值判斷選擇,但這兩種方法在實際專案中,未必都好用。方法一 名字堆疊的方法,需要切換渲染模式,操作命名堆疊,計算揀選矩陣,檢查選中記錄。...

opengl的選擇模式

步驟按順序來,不然會無法拾取,返回 1 1,初始化命名緩衝,glselectbuffer buffer size,buffer 2,設定渲染模式為gl select 3,初始化命名堆疊,glinitnames glpushname 0 示例 void select object cpoint poi...