我一直在努力編寫一些可以在任何地方工作的opengl代碼,但不會限制自己太多。
我想在僅支持它的設備上使用opengles2,而在支持的設備上使用opengl core。OpenGL與OpenGLES2的兼容性
此外,我希望能夠在運行時(如果有的話)選擇使用哪一個。
我的問題是:
如果我每次可用時間鏈接到我的代碼與OpenGL庫,然後創建一個GLES2或GL核心方面,將GLES2方面表現得完全一樣GLESv2庫?這會產生什麼影響,標題明智? 例如,GLESv2沒有定義BGRA紋理格式,所以我想我必須將全部轉換爲RGBA。這不是什麼麻煩,但我有興趣瞭解替代品。
我想過動態加載庫和加載所有使用的函數指針,但這是一個大量的工作,可能有一個更容易的答案。 在這種情況下,我只包含glext.h,併爲所使用的函數聲明所有的函數指針,並填充它們。 這裏的問題是,glext沒有定義任何數據類型(glenum等),所以我總是要包含gl.h.通過包含兩者,我得到gl.h函數聲明和我自己的函數指針聲明,所以我不能只使用函數指針的一般名稱空間...即使如此,一些函數(如glGetError)似乎並不像爲其函數指針提供關聯的typedef。我很瞭解GLEW,但不幸的是,大多數Linux發行版都分發了一個仍然不兼容GLES2的版本(debian,我在看着你)。它只是段錯誤。
你們會怎麼做?任何其他方法的opengl函數鏈接?