學習OpenTk,筆記二

1、OpenGL有多個標準,如Open ES是爲了移動設備,目前通常使用OpenTK.Graphics.OpenGL4對應OpenGL4.x版本,2010年是OpenGL分割領,之前是3版本,之後都是4版本,目前最新4.6,更新頻率不高

2、OpenGL的着色語言GLSL,對應的文件擴展名.vert,類C體系,

GLSL教程參考:
https://www.cnblogs.com/zhxmdefj/p/11241537.html
https://github.com/wshxbqq/GLSL-Card
https://www.jianshu.com/p/66b10062bd67
https://www.cnblogs.com/brainworld/p/7445290.html

3、VBO對象理解:包含頂點數據的存儲緩衝區,通過不同類型的Buffer進行綁定(BufferTarget.ArrayBuffer,GL_ARRAY_BUFFER)

4、VAO對象理解:包含Pointer,這些Pointer是VBO的指向,並且存儲VBO的數據結構和讀取方式

5、VertexAttribPointer和EnableVertexAttribArray函數是輔助VAO的,指向(Pointer)和着色器內的位置是一致的,他們是聯繫在一起的

6、着色器必須是vertexShader(shader.vert)和fragmentShader(shader.frag)組合,一個是頂點的着色器,一個片段的着色器

7、着色器的結構是要聲明版本,接着是輸入和輸出變量、uniform和main函數

8、uniform是全局的,所以uniform 被存儲在硬件被稱爲常量存儲,這是一種分配在硬件上的存儲常量值的空間,因爲這種存儲需要的空間是固定的,在程序中這種uniform 的數量是受限的

9、GetShader和GetProgram可以用來檢查對應的狀態

資料站點參考:

https://learnopengl-cn.github.io/ (雖然都是C++的案例,但是基本的東西都是一樣的,而且也都能看得懂)

補充(看代碼,看不出VBO和VAO的調用聯繫,其實是VertexAttribPointer和GL_ARRAY_BUFFER有關聯):

在調用VertexAttribPointer時綁定到GL_ARRAY_BUFFER的VBO會和VAO聯繫在一起,由於在調用VertexAttribPointer之前綁定的是先前定義的VBO對象,頂點屬性0現在會鏈接到它的頂點數據。

 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章