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現在會鏈接到它的頂點資料,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/547164.html
標籤:.NET技术
上一篇:學習OpenTk,筆記二
