亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使這個簡單的OpenGL代碼在嚴格的3.2和4.2核心配置文件中工作?

如何使這個簡單的OpenGL代碼在嚴格的3.2和4.2核心配置文件中工作?

Go
慕容森 2021-05-07 17:47:16
我注意到一些3D代碼不會在嚴格的核心配置文件中呈現,但可以在“正?!保ǚ敲鞔_要求僅作為核心提供)配置文件上下文中呈現。為了解決這個問題,我編寫了最小的,最簡單的OpenGL程序,僅繪制了一個三角形和一個矩形:我在這里將OpenGL程序發布為要點。在useStrictCoreProfile變量設置為false的情況下,程序在Intel HD OpenGL 3.3和帶有OpenGL 4.2的GeForce上均不向控制臺輸出任何錯誤消息,并按照上述屏幕截圖繪制四邊形和三角形。但是,將useStrictCoreProfile設置為true時,它將清除背景色,但不會繪制三叉戟和四叉戟,控制臺輸出如下:GLCONN: OpenGL 3.2.0 @ NVIDIA Corporation GeForce GT 640M LE/PCIe/SSE2 (GLSL: 1.50 NVIDIA via Cg compiler)LASTERR: OpenGL error at step 'render.VertexAttribPointer()': GL_INVALID_OPERATIONLASTERR: OpenGL error at step 'render.DrawArrays()': GL_INVALID_OPERATIONLASTERR: OpenGL error at step 'render.VertexAttribPointer()': GL_INVALID_OPERATIONLASTERR: OpenGL error at step 'render.DrawArrays()': GL_INVALID_OPERATIONLASTERR: OpenGL error at step '(post loop)': GL_INVALID_OPERATIONEXIT...如果要求使用4.2嚴格的核心配置文件而不是3.2,則存在相同的問題。適用于3個不同的nvidia GPU,因此我認為我沒有正確地遵循嚴格的內核配置文件。我做錯了什么,該如何解決?請注意,在上面的Gist中不會找到glEnableVertexAttribArray調用,因為它位于我要導入的glutil包內,但這確實是gist的compileShaders()函數的最后一步。
查看完整描述

1 回答

?
DIEA

TA貢獻1820條經驗 獲得超2個贊

您沒有使用glGenVertexArrays()和glBindVertexArray()創建/綁定頂點數組對象。VAOs封裝一堆頂點屬性的狀態,包括其屬性啟用,詳細介紹每個屬性信息等,他們是可選的,當最初推出的功能,但是他們現在嚴格/核心上下文需要根據第10.4節的OpenGL核心規范:


當沒有綁定頂點數組時,任何修改,繪制或查詢頂點數組狀態的命令都會生成INVALID_OPERATION錯誤。這在初始GL狀態下發生,并且可能由于BindVertexArray或DeleteVertexArrays的副作用而發生。


這是一個有關如何使用VAO的非常粗糙的示例:


// At initialization time:

GLuint vao = 0;

glGenVertexArrays(1, &vao);

glBindVertexArray(vao);

// Set up your vertex attribute state:

//  - glBindBuffer(GL_ARRAY_BUFFER,...);

//  - glEnableVertexAttribArray(...);

//  - glVertexAttribPointer(...);

//  - etc. -- Refer to OpenGL docs to see what is/isn't included in the VAO!

glBindVertexArray(0); // unbinds vao


// At draw time:

glBindVertexArray(vao); // automatically sets up previously-bound vertex attribute state

glDrawArrays(...);

glBindVertexArray(0); // unbinds vao


查看完整回答
反對 回復 2021-05-17
  • 1 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號