回答
我不知道有什麼好的指導,但我可以讓你快速摘要
我會假設你如果不這樣做已經很熟悉着色器,頂點緩衝區等的基本知識,我建議你讀了有關着色器第一導而是因爲所有的OpenGL 3是基於着色器
在初始化的用法:
創建和使用
glGenBuffers
,glBindBuffer(GL_ARRAY_BUFFER, bufferID)
和填充頂點緩衝區同爲索引緩衝區,除非你使用
GL_ELEMENT_ARRAY_BUFFER
,而不是GL_ARRAY_BUFFER
就像你在OpenGL的早期版本中確實做到了創建紋理(
glGenTextures
,glBindTexture
,glTexImage2D
)使用創建着色器
glCreateShader
,使用glShaderSource
設置他們的GLSL源代碼,並用glCompileShader
編譯它們;您可以檢查它是否與glGetShaderiv(shader, GL_COMPILE_STATUS, &out)
成功,並使用glGetShaderInfoLog
創建程序檢索錯誤信息(即一組着色器結合在一起,通常是一個頂點着色器和一個片段着色器)與
glCreateProgram
,然後綁定要使用着色器glAttachShader
,然後鏈接該程序使用glLinkProgram
;就像着色器可以檢查與glGetProgram
和glGetProgramInfoLog
連接成功,當你想畫:
綁定使用
glBindBuffer
帶參數GL_ARRAY_BUFFER
和GL_ELEMENT_ARRAY_BUFFER
分別- 頂點和索引緩衝區
綁定程序與
glUseProgram
現在,對於着色器中的每個變量變量,必須調用
glVertexAttribPointer
,其語法與傳統的glVertexPointer
,glColorPointer
等相似函數,除了它的第一個參數,它是變化的標識符;此標識符可通過在鏈接的程序上調用glGetAttribLocation
來檢索對於着色器中的每個統一變量,必須致電
glUniform
;它的第一個參數是統一變量的位置(也是一種標識符),您可以通過調用glGetUniformLocation
(警告:如果您有一個名爲「a」的數組,您必須使用「a [0] 「)對於要綁定每個紋理,你必須調用
glActiveTexture
與GL_TEXTUREi
(i是對每個紋理不同),然後glBindTexture
然後均勻的值設置爲我呼叫
glDrawElements
Thi s是你必須做的基本事情。當然,還有其他的東西,比如頂點數組對象,統一的緩衝區等等,但它們僅僅用於優化目的。
其他域像剔除,混合,視口等仍然大部分與舊版本的OpenGL相同
我也建議你研究this demo program(它使用頂點數組對象)。最有趣的文件是main.cpp中
希望這可以幫助
- 1. OpenGL 3.2核心配置文件glLineWidth
- 2. 來自OpenGL核心配置文件(OpenGL 3.2)的CIContext
- 3. OpenGL 3.2核心配置文件中的NURBS曲面
- 4. 僅強制OpenGL核心配置文件
- 5. OpenGL 3.2編程指南?
- 6. NSOpenGLView與OpenGL 3.2核心
- 7. OpenSceneGraph使用核心配置文件嗎?
- 8. OS X OpenGL 3.2核心(黑屏)
- 9. PyQt4 OpenGL:GL核心配置文件錯誤
- 10. 使用OpenGL核心配置文件與Mesa 10和GLFW3
- 11. 啓用在pyglet OpenGL的核心配置文件在OS X
- 12. 使用核心配置文件時OpenGL紋理問題
- 13. 的OpenGL 3.3核心配置文件 - 調用glDrawArrays失敗默默
- 14. 在OS X的QT4中啓用OpenGL核心配置文件
- 15. 在.NET核心中使用字符串(配置文件)的ServiceCollection配置核心
- 16. 爲什麼OpenGL的glDrawArrays()在覈心配置文件3.2下失效,並且GL_INVALID_OPERATION失敗,但不是3.3或4.2?
- 17. Android OpenGL指南針
- 18. 配置.NET核心
- 19. 讀取配置文件3.2
- 20. 的OpenGL(核心配置文件)模型的三角形錯渲染
- 21. PyQT5 OpenGL 4.1核心配置文件 - 無效的幀緩衝區操作 - Mac OS
- 22. 在OSX上的核心配置文件中獲得可用的opengl擴展
- 23. PHP核心文件位置
- 24. SDL2能否與OpenGL 3.2核心一起正常工作?
- 25. 什麼擴展成爲OpenGL ES 3.2核心的一部分
- 26. 替換爲核心配置文件中的GL_LUMINANCE_ALPHA?
- 27. 配置與ASP.NET核心
- 28. Asp.Net核心和WIF配置
- 29. 用F#配置EF核心#
- 30. 如何從C++核心指南跳棋檢查路徑中排除文件夾?
一個更好的現代的OpenGL(核心3.2+)「的簡短總結:」我在一段時間看到的。從1.x/2.x開始,嘗試通過更新的教程獲得最新信息可能會更有意義。作爲思維導圖很好。 – Aktau 2013-08-28 14:51:39
絆倒我的一件事是,你必須使用VAO和VBO來繪製。否則,在調用glVertexAttribPointer時會得到GL_INVALID_OPERATION。至少在Mac OS X上就是這種情況。 – YRH 2013-10-25 12:40:35