LWJGL和GLSL版本

时间:2015-12-01 07:31:38

标签: java opengl glsl lwjgl

最近我一直在研究LWJGL中的渲染引擎,我遇到了很多版本问题。所以我正在征求关于这个新项目使用的正确版本的建议。

首先,LWJGL 2还是LWJGL 3?版本2仍然是最新的,但版本3是完全重写,但仍然缺少一些实用程序类;例如GLU.gluPerspective(...);

使用LWJGL 2进行兼容后,我遇到了更多问题;

由于我想坚持使用现代OpenGL,我正在使用VBO来渲染我的脸。但是,当使用GLSL进行一些基本照明时,我不得不使用GLSL 140来确保与normalise()transform()等功能的兼容性。然后我必须启用GL_ARB_compatibility让我访问gl_Normalgl_Vertexgl_Color,如下所示:

#version 140
#extension GL_ARB_compatibility : require

基本上我要问的是目前的一些建议,互联网上的所有教程都是不同的和过时的。

所以,对我的问题:

1)您会推荐哪种LWJGL版本? 3完全足以用于生产吗?

2)我应该使用什么GLSL版本?

3)我使用兼容层访问的数据有哪些替换?

4)是否有适合Modern OpenGL的最新资源或教程?

先谢谢你为我澄清这一点。这是一个陡峭的学习曲线

编辑:我之所以这么说是因为我尝试在除了我的某些计算机上使用GL_ARB_compatibility功能时遇到以下错误。

**ERROR** "#extension" : "GL_ARB_compatibility" is not supported

1 个答案:

答案 0 :(得分:0)

首先,在LWJGL 3中,删除了所有数学类,以支持您实现自己的类或使用第三方独立库。显然,您可以使用LWJGL2实用程序库来访问GLU函数,但建议只使用第三方数学库(使用矩阵方法进行透视等) 在LWJGL页面上有一个github讨论:https://github.com/LWJGL/lwjgl3/issues/19

回答其余问题:

1)我会推荐LWJGL 3,因为这是目前正在开发的。有关您应该使用超过2的LWJGL 3的理由的详细列表,请参阅LWJGL官方页面:https://github.com/LWJGL/lwjgl3-wiki/wiki/1.2.-Why-a-new-version

缺乏模块性和静态Display类这两个原因引用了。 LWJGL 3使用GLFW,我找到了特别好的文档。

2)为了获得最大的兼容性,您最安全地坚持使用openGL 2.1。这意味着使用GLSL 1.20。

那就是说,如果你查看蒸汽开发日,那就转移到OpenGL'他们表示,截至12月13日,96%的PC游戏市场拥有OpenGL 3.3+功能(链接:http://media.steampowered.com/apps/steamdevdays/slides/movingtoopengl.pdf)。这意味着你可以使用GLSL 3.30。

因此,我建议使用3.3和核心配置文件(没有固定功能管道)

3)从核心配置文件中删除了很多预定义变量。要使用它们,您需要使用GL_ARB_compatibility。替代方案是定义' in'和' out'变量并将它们填充到顶点和片段着色器代码中。以下是顶点着色器的一个小示例:

{{1}}

这里有一个很好的答案:https://stackoverflow.com/a/24425436/1045493

4)你最好只是谷歌搜索和/或检查OpenGL论坛:https://www.opengl.org/discussion_boards/forumdisplay.php/6-OpenGL-coding-beginners