我正在尝试通过使用Java,LWJGL和OpenGL的各种教程从头开始构建游戏引擎。我目前的计划是遵循每个教程,生成他们教授的代码,直到我有工作代码。第2步是重新组织,重命名,记录和移动其他东西,直到它符合我的特定编码风格。
然后将每个新主题打包在自己的项目中,然后将其打包成一个库.jar文件。
这样我就可以创建一个新程序,为" 2D Text"添加一些特定的库.jar文件。或者"粒子效应"根据需要为我的游戏添加新功能,无需在项目之间进行大量复制和粘贴,或者将超大型库导入到不会使用它的所有方面的程序中。
现在,这是我无法弄清楚的部分。大多数使用可编程管道的OpenGL渲染都使用着色器。如果我在我的新程序中找到着色器,一切都很好。我使用" src / Shaders / shaderEntity.vert"来引用着色器。文件路径。
但是,如果我想要一切都很好,整洁,可重复使用,我应该在库.jar文件中找到这些着色器,其中包含该功能的其余类。
如何在另一个.jar文件中引用着色器文件?库.jar文件本身位于" dist / lib / myJarFile.jar"并将在" /Shaders/shaderEntity.vert" .jar文件中的位置。
或者这是一个坏主意,我应该继续在新程序中找到我的着色器?
答案 0 :(得分:1)
不必从文件中读取着色器。 OpenGL,或更具体地说glLoadShader
将着色器的源代码作为字符串。
我对.jar文件知之甚少(并且对Java其余部分的经验有限),但目标是以某种方式将它存储在.jar中,您可以将其作为字符串读出来传递给OpenGL。这可能意味着更改您的类以接受源代码字符串并从.jar中将该字符串加载到其他位置,或者接收2个路径(或带有分隔符的一个字符串,例如dist/lib/myJarFile.jar:/Shaders/shaderEntity.vert
),这些路径提供到然后,该类将打开.jar中的文件并从中读取。