我在 Ubuntu 18.04 上作業。我不定義GL_GLEXT_PROTOTYPES。我使用glXGetProcAddress. 我的應用程式鏈接到/usr/lib/x86_64-linux-gnu/libGL.so. 例如,一些傳統的 OpenGL 函式無需定義GL_GLEXT_PROTOTYPES或呼叫即可glXGetProcAddress使用glColor3f。哪個 OpenGL 版本(函式)在 Linux 下默認可用?
編輯
我假設硬體支持最新的 OpenGL 版本。此外,我使用gl.h, glext.h來自標準 Ubuntu 位置的兼容性組態檔和 OpenGL 標頭 ( ):/usr/include/GL. 看起來這些頭檔案已經被mesa-common-devapt 包安裝了。
uj5u.com熱心網友回復:
傳統上,libGL.soLinux 上的 由您的圖形驅動程式供應商提供。沒有真正的“默認”版本。在這方面,最接近標準的是OpenGL? Application Binary Interface for Linux,它指出:
3.4. 這些庫必須靜態匯出所有 OpenGL 1.2、GLU 1.3、GLX 1.3 和 ARB_multitexture 入口點。
和
4.5. 所有 OpenGL 1.2 和 ARB_multitexture、GLU 1.3 和 GLX 1.3 入口點和列舉都必須存在于相應的頭檔案 gl.h、glu.h 和 glx.h 中,即使相關運行時在運行時僅實作了 OpenGL 1.1圖書館。
所以這基本上是您可以依賴的一組直接匯出的 GL 函式。通常,各種供應商的 GL 庫匯出更多,但官方查詢事物的方式是擴展機制。
請注意,在 Linux 上,使用 OpenGL 的現代方法是通過供應商中立的 GL 調度庫,它提供libOpenGL.so而不是libGL.so. 它似乎匯出了構建時已知的所有核心 OpenGL 函式。但這并不意味著特定的供應商實作將支持所有這些功能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/373455.html
