【问题标题】:OpenGL Vertex Arrays required versionOpenGL 顶点数组所需版本
【发布时间】:2013-01-08 01:42:59
【问题描述】:

我的程序可以高效地使用 VBO,但是据我所知,除了 1 个人之外,我认识的人中没有人拥有一台甚至接近于支持 OpenGL 3.0 的计算机。当他们都运行程序时,我所做的只是没有深度的平面纹理,因为他们的卡不支持 VBO 也不支持我使用的着色器语言。

我现在正在编码以支持旧计算机(之前的 OpenGL 3.0 支持)。除非完全必要,否则我不想在立即模式下进行绘图编码,所以我将恢复到顶点数组。

支持顶点数组需要什么版本的 OpenGL?

我似乎无法在任何地方找到它。

扩展注册表: http://www.opengl.org/registry/

澄清一下,我说的是客户端顶点数组,不要与服务器端顶点数组对象 (VAO) 或顶点缓冲区对象 (VBO) 混淆

【问题讨论】:

  • 如果他们不支持缓冲区对象(即使是 Intel 糟糕的 1.4 实现也有这些),他们的 OpenGL 实现也很可能有很多错误。因此,如果您无法在硬件上进行实际测试,那么支持此类卡是一个……困难的前景。
  • 非常正确。这就是为什么这仅在不支持 VBO 的情况下才作为后备。

标签: arrays opengl server-side vertex


【解决方案1】:

这里我会比较全面。

自 OpenGL 1.1 以来,基本的顶点数组 API 一直是核心。

OpenGL 1.1介绍:

  • glDrawArraysglDrawElements(以及 glArrayElement,但实际上没有人应该将它用于任何事情曾经)进行渲染。
  • glVertexPointerglTexCoordPointerglNormalPointerglColorPointer 用于“属性”。请注意,您只会获得一个纹理坐标指针。

OpenGL 1.2介绍:

  • glDrawRangeElements,用于提高某些驱动程序的性能。这些天不是很有用,但如果您正在为旧硬件编码,请查看它。

OpenGL 1.3介绍:

  • glActiveTexture,因此允许GL_MAX_TEXTURE_UNITS 数量的glTexCoordPointers。

OpenGL 1.4介绍:

  • glMultiDrawArraysglMultiDrawElements
  • glSecondaryColorPointerglFogCoordPointer

OpenGL 1.5介绍:

  • 缓冲区对象。

OpenGL 2.0介绍:

  • glVertexAttribPointer 用于通用着色器属性。可用于客户端顶点数组。

【讨论】:

  • 这太棒了!毕竟不需要立即模式。如果他们的计算机不支持 OpenGL 1.1,我确定他们不应该运行游戏。
  • 这段历史很精彩,我花了一整天研究openGL中顶点提交的历史,这比很多维基百科的文章要好。
【解决方案2】:

我可以在specifications 中找到最早提到的顶点数组是OpenGL 1.1(第 2.8 节顶点数组,第 21 页)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    相关资源
    最近更新 更多