对于大学我们通过JOGL / Java学习使用OpenGL 1.1的3D图形,它仍然是相当简单的东西:
GL_TRIANGLE_STRIP
,GL_LINES
)在本课程结束后,我想继续3D图形编程,我还有一些尝试,似乎我只能通过构建我自己的(简单)引擎来学习它,所以就这样吧
我们在大学使用OpenGL 1.1因为它仍然相当简单和基础,但我认为该行业已经是4.3版了?
有人可以说出主要的差异,可能是功能,但对编程方法更感兴趣吗?
我注意到OpenGL 1.1中很多东西都是在CPU端完成的,尽管它已经支持GPU了。
同样是创建漂亮游戏所需的着色器语言,或者为什么经常使用它们,我发现它们(在我的空闲时间)异常难以理解。
答案 0 :(得分:7)
主要区别在于您可以访问图形管道。
意味着OpenGL 1.1到2.0的图形管道已完全修复。
您可以通过预定义的OpenGL函数影响GPU行为。 (glBegin
,glPushMatrix
,glPopMatrix
.....)
Modern 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来加载文件中的纹理