函数'glCreateShader'不可用,直到我将libGLU作为库包含在libGL旁边。“glCreateShader”是OpenGL的核心功能。这是否意味着libGLU应该总是链接到任何使用libGL的应用程序?为什么他们一开始就分开了?谢谢你。
2nc8po8w1#
Load OpenGL Functions加载OpenGL函数是创建OpenGL上下文后初始化OpenGL的一项重要任务。强烈建议您使用OpenGL加载库而不是手动过程。OpenGL Loading LibraryOpenGL加载库是一个在运行时、核心以及扩展加载指向OpenGL函数的指针的库。在大多数平台上,访问OpenGL 1.1以上版本的函数都需要此选项。在gl.h中,您将找到两个部分,一个用于函数类型定义,另一个由宏GL_GLEXT_PROTOTYPES保护,其中包含函数声明。如果在您的平台上定义了GL_GLEXT_PROTOTYPES,那么函数符号将被导出,您不需要手动加载函数,但由于建议加载函数,并且在大多数系统上没有定义GL_GLEXT_PROTOTYPES,因此手动加载函数基本上是“强制性的”,这意味着核心函数将不可用。我不知道你得到了什么样的错误(编译或链接错误),但总是先检查函数是否在你的处置和谁(编译器/链接器)提出的错误(函数找不到与未定义的引用)。为什么他们一开始就分开了?因为OpenGL是一回事,而OpenGL Utility Library(GLU)是另一回事。在“古代”,GLU提供了一些有用的功能(实用程序,因此得名),但从那时起,时间带来了变化,随着OpenGL的“现代”时代,GLU变得过时了(尽管你仍然可以在遗留的OpenGL中使用它)。
gl.h
GL_GLEXT_PROTOTYPES
1条答案
按热度按时间2nc8po8w1#
Load OpenGL Functions
加载OpenGL函数是创建OpenGL上下文后初始化OpenGL的一项重要任务。强烈建议您使用OpenGL加载库而不是手动过程。
OpenGL Loading Library
OpenGL加载库是一个在运行时、核心以及扩展加载指向OpenGL函数的指针的库。在大多数平台上,访问OpenGL 1.1以上版本的函数都需要此选项。
在
gl.h
中,您将找到两个部分,一个用于函数类型定义,另一个由宏GL_GLEXT_PROTOTYPES
保护,其中包含函数声明。如果在您的平台上定义了GL_GLEXT_PROTOTYPES
,那么函数符号将被导出,您不需要手动加载函数,但由于建议加载函数,并且在大多数系统上没有定义GL_GLEXT_PROTOTYPES
,因此手动加载函数基本上是“强制性的”,这意味着核心函数将不可用。我不知道你得到了什么样的错误(编译或链接错误),但总是先检查函数是否在你的处置和谁(编译器/链接器)提出的错误(函数找不到与未定义的引用)。
为什么他们一开始就分开了?
因为OpenGL是一回事,而OpenGL Utility Library(GLU)是另一回事。在“古代”,GLU提供了一些有用的功能(实用程序,因此得名),但从那时起,时间带来了变化,随着OpenGL的“现代”时代,GLU变得过时了(尽管你仍然可以在遗留的OpenGL中使用它)。