在C项目中使用OpenGL 4.3

时间:2014-01-07 20:22:09

标签: c opengl

我需要使用glDeleteProgram()函数,但编译器告诉我该函数不存在。我认为我的gl.h版本太旧了,但我找不到如何在我的项目中安装OpenGL 4.3 ......

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <gl/gl.h>

我试图包含glext.h,但它没有用。

1 个答案:

答案 0 :(得分:1)

对于平台附带的gl.h标头的用途,似乎有点混乱。我将在下面尝试更好地解释它,但要注意这个头和平台的OpenGL库是非常相关的(并且基本上是不可变的)。当你谈到“安装”OpenGL 4.3时,你实际上补充了(在运行时,而不是编译时)这个标题所属的脆弱库。


Microsoft Windows等平台附带了一个非常原始的OpenGL软件实现(在本例中为1.1),但其设计方式使得安装的显示驱动程序可以在运行时扩展/替换软件实现。 Microsoft将此系统称为 I nstallable C lient D 河流。

对于所有意图和目的,GLEW与您的显示驱动程序接口并加载比1.1更新的OpenGL的所有部分。如果不使用GLEW,您将受限于软件实现的功能,该功能在Microsoft Windows上编写于〜1997年,从那时起就从未更新过。 Windows上<GL/gl.h>始终为1.1,因为驱动程序负责扩展GL,您永远不会将软件直接编译/链接到显示驱动程序

GLEW并不特别,您可以阅读扩展规范here并使用您需要的所有扩展函数原型,枚举和常量值编写自己的标头...但是,多年来这项任务已成为荒谬乏味(目前有超过120个ARB扩展)。 GLEW基本上将所有主要发布的扩展规范打包到一个大型库中,并将加载驱动程序声称支持的每个扩展。这实际上是GL版本的工作原理,顺便说一句,每个新版本归结为 必需 扩展的集合。


当天早些时候,有一些名为MiniGL drivers的血腥可怕的东西,而像Quake 1这样的游戏 直接链接到来自3Dfx和PowerVR等供应商的极其原始和专有的驱动程序。幸运的是,我们已经过去了。