为什么要使用'glad'库进行 opengl 初始化?
Why use 'glad' library for opengl initialization?
我现在正在学习OpenGl,并在其上撰写一些几何抽象以进行个人用法。我希望我的代码是最大的便携式,并且希望在呼叫者代码中初始化GL上下文(通过FLTK,WXWIDGETS,WINAPI或其他任何受支持的平台)。
我现在正在阅读这篇流行文章:https://learnopengl.com/getting-started/creating-a-window
作者建议在那里使用Glad Library,因为此库提供了GL上下文的创建(这不适合我),并且也用于"检索功能的地址"(Quote:"因为有许多不同的OpenGL版本驱动程序,其大多数功能的位置在编译时不知道,需要在运行时查询。")。
我的问题是:
编译器真的无法从与GLED相关的.OBJ文件中获得我在Visual Studio的链接器设置中指定的OpenGL函数的地址?我真的需要使用wglGetProcAddress
例程来参考OpenGL功能吗?是否可以像链接标头和.OBJ文件中的任何其他功能一样使用OpenGL函数?
作者建议在那里使用Glad Library,因为此库提供了GL上下文的创建(这不适合我)
不,很高兴不会以任何方式创建或管理GL上下文,而网站https://learnopengl.com/getting-started/creating-a-a-window否则从未宣称。他们将GLFW用于上下文和窗口管理。
编译器真的无法从我在Visual Studio的链接器设置中指定的GLES.OBJ文件获得OpenGL函数的地址?
no。
首先,您没有为链接器指定与OpenGL相关的.obj
文件,但是在Windows上,您可以使用opengl32.lib
,它是opengl32.dll
的导入库文件,该文件随身携带Windows 95的Windows版本。
但是,此DLL不包含您通常使用的OpenGL实现,但它包含Microsoft的OpenGL 1.1 GDI软件栅格器。Windows上的实际OpenGL实现由您的图形驱动程序随附的可安装客户端驱动程序(ICD)提供。对于OpenGL 1.0和1.1功能,opengl32.dll
将充当蹦床,并将调用转发到实际的ICD DLL。
如果要调用OpenGL 1.1 以外的任何OpenGL函数(并且是从1997年起),则您必须在每种情况下都使用OpenGL扩展机制,因为 opengl32.dll
不提供这些入口点>当然不会找到编译器/链接器。
- OpenGL GLM 矩阵/向量未正确初始化
- 在没有库的情况下初始化 OpenGL
- GTKmm Opengl 上下文未初始化
- 在上下文初始化之前查询支持的最高 OpenGL 版本?
- OpenGL C++:VBO 的结构包装器不会初始化成员
- 初始化多个纹理 OpenGL、SDL C++ 时出现问题
- openGL如何处理发送给它的空/未初始化数据?
- 您应该如何在OpenGL 4.5中初始化立方体地图阵列
- 为什么要使用'glad'库进行 opengl 初始化?
- OpenGL + SDL + glew 在成功初始化后不会绘制任何内容
- 无法初始化 OpenGL
- 使用visual studio 2012初始化openGL时出现问题
- 正确初始化 OpenGL 的结构数组
- 如何在 ActiveX 控件中正确初始化 OpenGL
- MFC和OpenGL CView,C ,Glew之后初始化OpenGL
- 在渲染以外的另一个线程中初始化 OpenGL 上下文
- QGLWidget paintEvent:在哪里初始化openGL
- OpenGL 着色器语言初始化错误无法从 GLChar 转换为 const
- iOS 下的 OpenGL ES 2.0 初始化
- Opengl 纹理初始化过程