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

标签 java opengl

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

  • 标准绘制方法( GL_TRIANGLE_STRIPGL_LINES )
  • 使用三次贝塞尔曲线
  • 绘制赛道/使用 vector
  • 使物体(机器人)具有动画效果
  • 使用 2D 纹理

学完这门类(class)后,我想继续 3D 图形编程,我已经尝试过几次了,看来我只能通过构建自己的(简单)引擎才能学好它,就这样吧.

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

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

最佳答案

主要区别在于访问图形管道的方式。

意味着OpenGL 1.1到2.0的图形管线已经完全固定。 您可以通过预定义的 OpenGL 函数影响 GPU 行为。 (glBeginglPushMatrixglPopMatrix ...)

现代 OpenGL 使您能够影响渲染过程的大多数阶段。

可编程流水线分为:

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

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

管道引用:


更新,由于评论:

由于您能够自定义渲染过程的每个阶段,因此您必须实现适当的着色器程序来自行实现照明、阴影甚至投影。这对于开始来说似乎很糟糕,但你有很多教程可以接触它,并且你仍然可以使用 OpenGL 的一些功能,因为它们是向后兼容的。 例如,我仍在使用 gluPerspective 函数来创建投影矩阵。

看看这里:http://open.gl/introduction 这是一个非常复杂且易于理解的教程,旨在帮助您接触现代 OpenGL。

以下是一些 API 链接,可为您提供支持
现代 OpenGL 编程

关于java - OpenGL 1.1 和当前 4.3 之间的主要区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21030123/

相关文章:

linux - Linux 和 Mac OSX 中的 OpenGL 像素缓冲区直接到屏幕

java - JDBC 库在 Android Studio 中不工作

java - java.lang.ClassLoader.defineClass1( native 方法)不支持major.minor版本52.0

java - 如何修改a的字段的字段....如link.next.next.next(.next*n) n次

java - 是否可以将 PostgreSQL 中的字符字段转换为 JPA 命名查询中的整数?

qt - 使用 Qt 4.5/4.6 加载 OpenGL 线程平铺纹理

c++ - 在 Windows 中使用 cpp 的窗口函数

java - JSF 2 动态菜单处理的最佳实践?

performance - 多次渲染同一个模型

c++ - 转动相机后,形状倾斜 OpenGL