glFeedbackBuffer 函式

glFeedbackBuffer函式會控制意見反應模式。

語法

void WINAPI glFeedbackBuffer(
   GLsizei size,
   GLenum  type,
   GLfloat *buffer
);

參數

size

可寫入 緩衝區的值數目上限。

type

符號常數,描述將針對每個頂點傳回的資訊。 接受下列符號常數:GL_2D、GL_3D、GL_3D_COLOR、GL_3D_COLOR_TEXTURE和GL_4D_COLOR_TEXTURE。

緩衝區

傳回意見反應資料。

傳回值

此函式不會傳回值。

錯誤碼

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

名稱 意義
GL_INVALID_ENUM
類型 不是接受的值。
GL_INVALID_ENUM
size 為負數。
GL_INVALID_OPERATION
在轉譯模式GL_FEEDBACK時呼叫glFeedbackBuffer,或在glFeedbackBuffer至少呼叫一次之前,會使用引數GL_FEEDBACK呼叫glRenderMode
GL_INVALID_OPERATION
對 glBegin 的呼叫與 glEnd的對應呼叫之間呼叫函式。

備註

glFeedbackBuffer 函式會控制意見反應。 意見反應就像選取一樣,是 OpenGL 模式。 藉由呼叫 glRenderMode 與 GL_FEEDBACK 來選取模式。 當 OpenGL 處於意見反應模式時,點陣化不會產生任何圖元。 相反地,使用 OpenGL 將已點陣化的基本類型相關資訊傳回應用程式。

glFeedbackBuffer函式有三個引數:

  • buffer 是放置意見反應資訊之浮點值的陣列指標。
  • size 表示陣列的大小。
  • type 是符號常數,描述每個頂點傳回的資訊。

您必須在意見反應模式啟用 (之前發出 glFeedbackBuffer ,方法是使用引數GL_FEEDBACK) 呼叫 glRenderMode 。 在沒有建立意見反應緩衝區的情況下設定GL_FEEDBACK,或在 OpenGL 處於意見反應模式時呼叫 glFeedbackBuffer 是錯誤。

藉由使用非GL_FEEDBACK的參數值呼叫 glRenderMode ,讓 OpenGL 退出意見反應模式。 當您在 OpenGL 處於意見反應模式時執行此動作時, glRenderMode 會傳回意見反應陣列中放置的專案數。 傳回的值永遠不會超過 大小。 如果意見反應資料所需的空間超過 緩衝區中可用的空間, glRenderMode 會傳回負值。

在意見反應模式中,會點陣化的每個基本類型都會產生一組值,這些值會複製到意見反應陣列中。 如果這樣做會導致專案數目超過最大值, glFeedbackBuffer 會部分寫入 區塊,以便在所有) 有剩餘的空間,填滿陣列 (,並設定溢位旗標。 每個區塊的開頭都是指出基本類型的程式碼,後面接著描述基本頂點和相關聯資料的值。 glFeedbackBuffer函式也會寫入點陣圖和圖元矩形的專案。 在多邊形擷取和 glPolygonMode 多邊形解譯發生之後發生意見反應,因此不會在意見反應緩衝區中傳回已擷取的多邊形。 如果 OpenGL 實作藉由執行此分解來轉譯多邊形,也會在具有三個以上的邊緣的多邊形分解成三角形之後發生。

您可以使用 glPassThrough將標記插入意見反應緩衝區。

以下是寫入意見反應緩衝區之值區塊的文法。 每個基本類型都會以唯一的識別值來表示,後面接著一些頂點。 多邊形專案包含整數值,指出後面有多少頂點。 頂點會以一些浮點值的形式傳回,如 類型所決定。 色彩會以 RGBA 模式中的四個值傳回,並在色彩索引模式中傳回一個值。

feedbackList feedbackItem feedbackList < | feedbackItem

feedbackItem < point | lineSegment | polygon | bitmap | pixelRectangle | passThru

點 < GL_POINT_TOKEN頂點

lineSegment < GL_LINE_TOKEN頂點頂點 |GL_LINE_RESET_TOKEN頂點頂點

多邊形 < GL_POLYGON_TOKEN n polySpec

polySpec polySpec < 頂點 | 頂點頂點

點陣圖 < GL_BITMAP_TOKEN頂點

pixelRectangle < GL_DRAW_PIXEL_TOKEN頂點 |GL_COPY_PIXEL_TOKEN頂點

passThru < GL_PASS_THROUGH_TOKEN 值

頂點 < 2d | 3d | 3dColor | 3dColorTexture | 4dColorTexture

2d < 值

3d < 值值值

3dColor < 值值色彩

3dColorTexture < 值值色彩紋

4dColorTexture < 值值值值色彩紋

色彩 < rgba | index

rgba < 值值值值

索引 < 值

紋 < 值值值

value參數是浮點數,而 n是浮點整數,可提供多邊形中的頂點數目。 以下是符號浮點常數:GL_POINT_TOKEN、GL_LINE_TOKEN、GL_LINE_RESET_TOKEN、GL_POLYGON_TOKEN、GL_BITMAP_TOKEN、GL_DRAW_PIXEL_TOKEN、GL_COPY_PIXEL_TOKEN和GL_PASS_THROUGH_TOKEN。 每當重設線條 Stipple 模式時,就會傳回GL_LINE_RESET_TOKEN。 傳回為頂點的資料取決於意見反應 類型

下表提供 類型 與每個頂點值數目之間的對應; k 在色彩索引模式中為 1,而 RGBA 模式則為 4。

類型 座標 色彩 紋理 值總數
GL_2D xy 2
GL_3D xyz 3
GL_3D_COLOR xyz K 3 + k
GL_3D_COLOR_TEXTURE xyz K 4 7 + k
GL_4D_COLOR_TEXTURE xyzw K 4 8 + k

意見反應頂點座標位於視窗座標中,但 w是裁剪座標。 如果已啟用光源,則會發出意見反應色彩。 如果已啟用紋理座標產生,就會產生意見反應紋理座標。 它們一律會由紋理矩陣轉換。

在顯示清單中使用 glFeedbackBuffer 函 式時,不會編譯成顯示清單,而是立即執行。

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

glGet with argument GL_RENDER_MODE

規格需求

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

另請參閱

glBegin

glEnd

glGet

glLineStipple

glPassThrough

glPolygonMode

glRenderMode

glSelectBuffer