OpenGL 1.1和当前4.3之间的主要区别是什么?

ski*_*iwi 0 java opengl

对于大学,我们通过JOGL/Java学习使用OpenGL 1.1的3D图形,它仍然是相当简单的东西:

  • 标准绘制方法(GL_TRIANGLE_STRIP,GL_LINES)
  • 使用立方贝塞尔曲线
  • 绘制赛道/使用矢量
  • 使对象(机器人)具有动画效果
  • 使用2D纹理

在本课程结束后,我想继续3D图形编程,我还有一些尝试,似乎我只能通过构建自己的(简单)引擎来学习它,所以就这样吧.

我们在大学使用OpenGL 1.1,因为它仍然相当简单和基础,但我认为该行业已经是4.3版了?

有人可以说出主要的差异,可能是功能,但对编程方法更感兴趣吗?
我注意到OpenGL 1.1中很多东西都是在CPU端完成的,尽管它已经支持GPU了.
同样是创建漂亮游戏所需的着色器语言,或者为什么它们经常被使用,我发现它们(在我的空闲时间)异常难以理解.

Div*_*ity 7

主要区别在于您可以访问图形管道的方式.

意味着OpenGL 1.1到2.0的图形管道是完全固定的.您可以通过预定义的OpenGL函数影响GPU行为.(glBegin,glPushMatrix,glPopMatrix...)

现代OpenGL使您能够对渲染过程的大多数阶段产生影响.

可编程管道分为:

  • 顶点着色
  • 镶嵌
  • 几何着色
  • 片段着色

当前的GPU提供可以使用OpenGL着色语言(GLSL)编程的驱动程序,以动态编程渲染过程的每个阶段.

管道参考:


更新,由于评论:

由于您可以自定义渲染过程的每个阶段,因此您必须实现适当的着色器程序,以实现自己的照明,阴影甚至投影.这种接缝在开始时是不好的,但你有很多教程可以与它取得联系,而且你可以使用OpenGL的一些功能,因为它们是向后兼容的.例如,我仍然使用该gluPerspective函数来创建投影矩阵.

看看这里:http://open.gl/introduction 这是一个非常复杂和易于理解的教程,可以与现代OpenGL取得联系.

以下是API的一些链接,它们支持您
编写现代OpenGL

  • glm:http: //glm.g-truc.net/0.9.5/index.html glm为您提供所有必要的数学,并且在我看来与GLSL完全兼容glm是必须的

  • glfw:http: //www.glfw.org/ glfw为您提供了创建和初始化图形上下文的功能.它是操作系统,屏幕和GPU的接口,您还可以将多线程应用于您的应用程序.

  • SOIL:http://www.lonesock.net/soil.html SOIL是从文件加载纹理的一个很好的API

  • 请记住,提供> = 3.2的实现者必须提供Core,但可能不提供兼容性.主要例子:Apple. (2认同)