java - 如何引用位于单独库 jar 文件中的 OpenGL 着色器文件?

标签 java opengl jar

我正在尝试按照使用 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/

相关文章:

opengl - Vertex Array Objects - 关于保存当前绑定(bind)的顶点缓冲区的确切状态信息的混淆

c++ - 旋转,通过头文件在opengl中翻译?

java - 清理并构建,但我的音频文件消失了

java - 在单个 JAR 中包含从属 Jar

java - 如何在新文本区域设置光标?

java - Java中Eratosthenes的多线程分段筛分

java - 使用命名组捕获特定字符之前的所有内容

c++ - OpenGL移动物体并同轴旋转

java - spring-data-couchbase 为不存在的文档抛出 DocumentDoesNotExistException

C:读取二进制并写入编码文本