我正在尝试按照使用 Java、LWJGL 和 OpenGL 的各种教程从头开始构建游戏引擎。我当前的计划是遵循每个教程,生成他们教授的代码,直到我有了工作代码。第 2 步是重新组织、重命名、记录或以其他方式移动内容,直到它符合我的特定编码风格。
每个新主题都会被整齐地打包在自己的项目中,然后转换为库 .jar 文件。
这样我就可以创建一个新程序,为“2D 文本”或“粒子效果”添加一些特定的库 .jar 文件,以便根据需要向我的游戏添加新功能,而无需在项目之间进行大量复制和粘贴,或者将一个超大型库导入到一个不会使用其所有方面的程序中。
现在,这是我不明白的部分。大多数具有可编程管道的 OpenGL 渲染都使用着色器。如果我在新程序中找到着色器,一切都很好。我使用“src/Shaders/shaderEntity.vert”文件路径引用着色器。
但是,如果我想要一切都漂亮、整洁且可重用,我应该将这些着色器与该功能的其余类一起放在库 .jar 文件中。
如何在另一个 .jar 文件中引用着色器文件?库 .jar 文件本身位于“dist/lib/myJarFile.jar”中,并且位于 .jar 文件内的“/Shaders/shaderEntity.vert”位置。
或者这是一个坏主意,我应该继续在新程序中定位我的着色器?
最佳答案
着色器不必从文件中读取。 OpenGL,或更具体地说,glLoadShader
将着色器的源代码作为字符串。
我对 .jar 文件了解不多(并且对 Java 的其余部分的经验有限),但目标是以某种方式将其存储在 .jar 中,以便您可以将其作为字符串读出传递给OpenGL。这可能意味着更改您的类以获取源代码字符串并从其他地方的 .jar 加载该字符串,或者获取 2 个路径(或带有分隔符的一个字符串,例如 dist/lib/myJarFile.jar:/Shaders/shaderEntity.vert
),提供文件的确切路径,然后该类将打开 .jar 中的文件并从中读取。
关于java - 如何引用位于单独库 jar 文件中的 OpenGL 着色器文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34010983/