代码之家  ›  专栏  ›  技术社区  ›  Stephen Melvin

OpenGL 3.x有什么不同?

  •  14
  • Stephen Melvin  · 技术社区  · 16 年前

    我最近一直在寻找一本OpenGL书籍,并注意到OpenGL编程指南(2010)已被弃用。OpenGL 3.x和2.x有什么不同?

    2 回复  |  直到 16 年前
        1
  •  30
  •   Gordon Wrigley    15 年前

    编辑:主要的变化,以及一些更好的论点,这让很多人,包括我自己,很长一段时间都无法理解。也更切题,更简短。

    选择 一个特定的OpenGL版本。驱动程序和图形适配器的功能始终支持最高版本。这意味着新的核心功能必须与以前版本的旧功能兼容,否则旧的应用程序在以后的OpenGL版本上运行时会中断。由于无法对以前的版本进行更改,OpenGL的副作用是,它开始慢慢地受到特性爬行的影响。增加了功能,而不是增强已有的功能。如果您看看opengl2.1,那么不同draw调用的数量就是一个很好的例子。

    opengl3.0中引入了新的上下文创建调用 ,以及是否要使用不推荐使用的功能。 ,这意味着不仅仅是“删除函数”,我看到一些人用它来反驳这些变化。这也意味着 一个例子是使glGen。。函数对于生成对象名称是必需的,并且使着色器和顶点数组对象是必需的。(后者在opengl3.3中被弃用,而不是强制使用)。

    glVertexPointer glVertexAttribPointer . opengl3.x最终不会将着色器数据标记为“this”和“that”;这由您决定。还对现有功能进行了修改,因此它们在语义上与以前的版本有所不同。通过删除默认着色器程序0,着色器成为必需的,该程序用于表示“禁用着色器/使用固定功能”。既然抽签结果是这样的 glDrawElements return GL\u INVALID\u操作绑定无效的着色器程序时,将强制您首先生成一个着色器。

    但一切都不可能一夜之间改变,所以opengl3.x引入了一个弃用模型。在以后的版本中删除功能之前,至少有一个版本不推荐使用该功能。删除的功能被移动到一个名为GL\u ARB\u compatibility的OpenGL扩展中。您可以通过创建一个兼容性配置文件(而不是核心配置文件)来打开此功能。这是新的上下文创建调用中的一个标志,OpenGL3.1和更高版本(而不是3.0)接受它。不推荐使用的功能可以通过创建向前兼容的上下文来强制关闭。同样,这是一个上下文创建标志。

        2
  •  3
  •   alxx    16 年前

    事实上,很多事情。不推荐立即模式。要获得opengl3.0函数,您现在应该显式地创建opengl3.0上下文(现有的opengl2.0程序不会这样做,所以它们获得2.0兼容的上下文)。API也得到了扩展(参见 http://www.opengl.org 详细信息)。

    推荐文章