歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> OpenGL 4.0 GLSL 基礎教程概覽

OpenGL 4.0 GLSL 基礎教程概覽

日期:2017/3/1 9:41:40   编辑:Linux編程

OpenGL 4.3 最新渲染管線圖

從OpenGL 2.0 到 OpenGL 3.0變化非常大,但從OpenGL 3.0 到OpenGL 4.0 變化不是太大。

著色器程序直接運行在GPU上,並且是並行的,一個片元著色器可能一次執行所有象素。

deprecation model, 在OpenGL3.0 提出,為了保持向後兼容,兼容模式compatibility profile.和核心模式core profile的概念在OpenGL 3.2 中提出。

OpenGL 4.0 GLSL 框架 下載地址

FTP地址:ftp://ftp1.linuxidc.com

用戶名:ftp1.linuxidc.com

密碼:www.linuxidc.com

在 2014年LinuxIDC.com\7月\OpenGL 4.0 GLSL 基礎教程概覽

下載方法見 http://www.linuxidc.com/Linux/2013-10/91140.htm

-------------------------------------分割線-------------------------------------

OpenGL 渲染篇 http://www.linuxidc.com/Linux/2011-10/45756.htm

Ubuntu 13.04 安裝 OpenGL http://www.linuxidc.com/Linux/2013-05/84815.htm

OpenGL三維球體數據生成與繪制【附源碼】 http://www.linuxidc.com/Linux/2013-04/83235.htm

Ubuntu下OpenGL編程基礎解析 http://www.linuxidc.com/Linux/2013-03/81675.htm

如何在Ubuntu使用eclipse for c++配置OpenGL http://www.linuxidc.com/Linux/2012-11/74191.htm

《OpenGL超級寶典》學習筆記 http://www.linuxidc.com/Linux/2013-10/91414.htm

-------------------------------------分割線-------------------------------------

在Qt 4.7以後版本,可以通過下列方式選擇核心模式:

QGLFormat format;
format.setVersion(4,0);
format.setProfile(QGLFormat::CoreProfile);
QGLWidget *myWidget = new QGLWidget(format);

傳送數據到GP

1. 產生頂點數組對象(vertex-array object, VAO)的標識符glGenVertexArrays

2. 綁定(創建)頂點數組對象glBindVertexArray

3. 產生緩沖區對象的標識符glGenBuffers

4. 綁定(創建)緩沖區對象glBindBuffer

5. 為緩沖區對象分配存儲空間,傳送數據glBufferData

6. 更新緩沖區對象的數據glBufferSubData



頂點數組對象(VAO)

1. 頂點有多種屬性值

位置

顏色

紋理坐標

應用程序數據

頂點數組包含了這些數據

2. OpenGL中用頂點數組對象打包了所有的頂點數據(位置、顏色等)

3. 生成頂點數組對象的標識符(或名字)然後綁定





產生頂點數組對象名

1. Void glGenVertexArrays(GLsizein,GLuint*arrays);

2. 返回n個當前未被使用的頂點數組對象名到數組arrays

3. 名字類似於C中的指針,只有指向已分配的內存才有意義

4. OpenGL中的分配方式稱為對象綁定



綁定頂點數組對象

1. 當array首次使用的從glGenVertexArrays()返回的非零值時,創建一個新的頂點數組對象並賦以該名字

2. 當綁定到已創建的頂點數組對象時,該對象變成當前活動對象

3. 當綁定到零值時,OpenGL停止使用應用程序分配的頂點數組對象並返回到頂點數組的默認狀態



刪除頂點數組對象

1. Void glDeleteVertexArrays(GLsizein,constGLuint*arrays);

2. 刪除arrays中指定的n個頂點數組對象,使得這些名字可被重用

3. 如果一個當前綁定的頂點數組對象被刪除,該頂點數組的綁定變為0,並且默認頂點數組成為當前活動對象

查詢頂點數組對象名

1. GLboolean glIsVertexArray(GLuintarray);

2. 查詢array是否對應到一個頂點數組對象

3. 返回GL_TRUE,如果array是一個之前glGenVertexArrays()產生的頂點數組對象名,且後來未被刪除

4. 返回GL_FALSE,如果array是0,或者一個非頂點數組對象名的非零值

頂點緩沖區對象(VBO)

1. 頂點的各種數據存儲在緩沖區對象中,並由當前綁定的頂點數組對象所管理

2. 緩沖區對象是由GPU分配並管理的內存創建、綁定、傳送(或更新)數據

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-07/104842p2.htm

Copyright © Linux教程網 All Rights Reserved