7

我刚开始着色器编程(GLSL)并使用 RenderMonkey 创建了一些。现在我想在我的 java 代码中使用这个着色器。有没有我如何做到这一点的简单例子?

4

4 回答 4

8

我找到了一个非常简单的例子

int v = gl.glCreateShader(GL.GL_VERTEX_SHADER);
int f = gl.glCreateShader(GL.GL_FRAGMENT_SHADER);

BufferedReader brv = new BufferedReader(new FileReader("vertexshader.glsl"));
String vsrc = "";
String line;
while ((line=brv.readLine()) != null) {
  vsrc += line + "\n";
}
gl.glShaderSource(v, 1, vsrc, (int[])null);
gl.glCompileShader(v);

BufferedReader brf = new BufferedReader(new FileReader("fragmentshader.glsl"));
String fsrc = "";
String line;
while ((line=brf.readLine()) != null) {
  fsrc += line + "\n";
}
gl.glShaderSource(f, 1, fsrc, (int[])null);
gl.glCompileShader(f);

int shaderprogram = gl.glCreateProgram();
gl.glAttachShader(shaderprogram, v);
gl.glAttachShader(shaderprogram, f);
gl.glLinkProgram(shaderprogram);
gl.glValidateProgram(shaderprogram);

gl.glUseProgram(shaderprogram); 
于 2009-02-13T07:44:35.470 回答
3

我自己没有,但如果我有这些方面的问题,我经常会找到 3D 编程的最佳位置,Java 建议已在JavaGaming.org上结束- 我已经有一段时间没有在那里了,但它是始终是一个乐于助人且知识渊博的社区。

于 2009-01-09T14:35:12.427 回答
3

新版本的 Jogl 添加了实用着色器加载/编译和统一设置/获取调用。查看用于选择方法的API 。

于 2009-09-26T05:08:51.457 回答
0

您可以查看ogre4j,它是流行的开源Ogre3D图形引擎的 Java 包装器/端口。对于您的需求,它可能有点重,但对于一个合适的 3D 项目,值得一看。

于 2011-12-08T17:39:53.397 回答