共用方式為


glSelectBuffer 函式

glSelectBuffer函式會建立選取模式值的緩衝區。

語法

void WINAPI glSelectBuffer(
   GLsizei size,
   GLuint  *buffer
);

參數

size

緩衝區的大小。

緩衝區

傳回選取資料。

傳回值

此函式不會傳回值。

錯誤碼

glGetError函式可以擷取下列錯誤碼。

名稱 意義
GL_INVALID_VALUE
size 為負數。
GL_INVALID_OPERATION
在轉譯模式GL_SELECT時呼叫函式。
GL_INVALID_OPERATION
對 glBegin 的呼叫與 glEnd的對應呼叫之間呼叫函式。

備註

glSelectBuffer函式有兩個參數:buffer是不帶正負號整數陣列的指標,而 size表示陣列的大小。 轉譯模式GL_SELECT (看到glRenderMode) 時,緩衝區參數會傳回名稱堆疊 (的值,請參閱glInitNamesglLoadNameglPushName) 。 glSelectBuffer函式必須在啟用選取模式之前發出,而且在轉譯模式GL_SELECT時不得發出。

程式設計人員會使用選取範圍來判斷哪些基本類型會繪製到某個視窗的某些區域。 區域是由目前的模型檢視和檢視方塊所定義。

在選取模式中,不會從點陣化產生圖元片段。 相反地,如果基本類型與檢視 frustum 和使用者定義的裁剪平面所定義的剪輯磁片區交集,這個基本類型會造成選取專案點擊。 (使用多邊形時,如果多邊形已擷取。) 對名稱堆疊進行變更,或呼叫 glRenderMode 時,如果自上一個這類事件之後發生任何點擊,就會複製點擊記錄以 緩衝 處理, (名稱堆疊變更或 glRenderMode 呼叫) 。 點擊記錄包含事件時名稱堆疊中的名稱數目;後面接著自上一個事件以來叫用之所有頂點的最小和最大深度值;後面接著名稱堆疊內容,第一個是底部名稱。

傳回的深度值會對應,使最大不帶正負號的整數值對應至視窗座標深度 1.0,而零則對應至視窗座標深度 0.0。

每當輸入選取模式時, 緩衝區 中的內部索引會重設為零。 每次將點擊記錄複製到 緩衝區時,索引就會遞增,以指向名稱區塊結尾之後的儲存格,指向下一個可用的儲存格。 如果點擊記錄大於 緩衝區中剩餘位置的數目,則會複製所能容納的資料量,並設定溢位旗標。 如果複製點擊記錄時名稱堆疊是空的,該記錄會包含零,後面接著最小和最大深度值。

選取模式是藉由呼叫 glRenderMode 與 GL_SELECT 以外的引數來結束。 每當在轉譯模式GL_SELECT時呼叫 glRenderMode 時,它會傳回復制到 緩衝區的點擊記錄數目、重設溢位旗標和選取緩衝區指標,並將名稱堆疊初始化為空白。 如果在呼叫 glRenderMode 時設定溢位,則會傳回負點擊記錄計數。

緩衝區的內容未定義,直到使用非GL_SELECT的引數呼叫glRenderMode為止。

glBegin/glEnd基本類型和glRasterPos的呼叫可能會導致點擊。

下列函式會擷取 glSelectBuffer的相關資訊:

glGet with argument GL_NAME_STACK_DEPTH

規格需求

需求
最低支援的用戶端
Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限傳統型應用程式]
標頭
Gl.h
程式庫
Opengl32.lib
DLL
Opengl32.dll

另請參閱

glBegin

glEnd

glFeedbackBuffer

glInitNames

glLoadName

glPushName

glRenderMode