我刚开始使用Shader编程(GLSL)并使用RenderMonkey创建了一些。现在我想在我的java代码中使用这个Shaders。有没有简单的例子说明我是怎么做到的?

有帮助吗?

解决方案

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

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); 

其他提示

我自己没有,但如果我遇到这方面的问题,我经常找到最适合3D编程的地方,而且Java建议已经结束了 JavaGaming.org - 我有一段时间没有去过那里,但它始终是一个有用且知识渊博的社区。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top