簡體   English   中英

OpenGL - GLM和GLSL,它們有何不同?

[英]OpenGL - GLM and GLSL, how are they different?

我開始學習OpenGL,GLM和GLSL,我有點困惑。 我會在這里說到目前為止我所理解的和我的問題,所以請隨時隨地糾正我。

到目前為止,我看到GLM擴展了GLSL文檔,提供了更多的數學函數,但由於GLM是基於C ++的,它將在CPU上運行,另一方面,GLSL直接在GPU中運行,所以我猜GLSL中的矩陣數學運算要快很多因為它可以使用GPU的功能並行完成所有數學運算。 那么為什么要使用GLM呢?

他們是完全不同的東西:

  • GLSL是用於編寫在GPU上運行的着色器程序的語言。 它是C的變種,帶有一些特殊的OpenGL特定擴展。 但就您的應用程序而言,GLSL着色器只是一個傳遞給OpenGL庫的不透明數據文件; 它完全獨立於主機程序。
  • GLM是一個C ++庫,用於處理CPU上的矢量數據。 為方便起見,它遵循與GLSL類似的命名約定,但它完全獨立於OpenGL。

GLM不是GLSL的替代品或替代品。 它旨在幫助進行在GPU上沒有意義的計算 - 例如構建頂點着色器使用的投影矩陣,或計算3D空間中點之間的距離。

他們是兩個完全不同的東西:

  • GLSL(OpenGL着色語言)是OpenGL使用的語言(基於C的語法)在GPU上運行程序,稱為着色器 ,你知道它的目的。 它們甚至不是你程序的一部分 - 相反,它們是存儲在你的計算機中的兩個文件,它們在運行時傳遞給OpenGL,然后才編譯。 它提供高級數學有兩個原因:沒有辦法加載庫,因為這是圖形編程 ,這與數學非常相關。
  • GLM(OpenGL數學)是一個C ++庫,用於通過圖形編程中常用的函數和類型擴展C ++的數學功能 - 所有這些都將在CPU上執行,並且它獨立於OpenGL。

GLM在其名稱中使用OpenGL的原因是因為它是在他們的腦海中使用圖形編程構建的(換句話說,是為OpenGL制作的)。

簡短版本:GLM適用於您的程序,GLSL的數學功能適用於您的着色器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM