最近我一直在研究LWJGL中的渲染引擎,我遇到了很多版本问题。所以我正在征求关于这个新项目使用的正确版本的建议。
首先,LWJGL 2还是LWJGL 3?版本2仍然是最新的,但版本3是完全重写,但仍然缺少一些实用程序类;例如GLU.gluPerspective(...);
使用LWJGL 2进行兼容后,我遇到了更多问题;
由于我想坚持使用现代OpenGL,我正在使用VBO来渲染我的脸。但是,当使用GLSL进行一些基本照明时,我不得不使用GLSL 140来确保与normalise()
和transform()
等功能的兼容性。然后我必须启用GL_ARB_compatibility
让我访问gl_Normal
,gl_Vertex
和gl_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
答案 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