Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jogl着色器编程_Java_Opengl_Jogl_Shader - Fatal编程技术网

Java Jogl着色器编程

Java Jogl着色器编程,java,opengl,jogl,shader,Java,Opengl,Jogl,Shader,我刚刚开始着色器编程(GLSL),并使用RenderMonkey创建了一些。现在我想在java代码中使用这个着色器。有什么简单的例子可以说明我是如何做到这一点的吗?我自己也没有,但是如果我在这方面遇到问题,我经常会发现3D编程的最佳场所,Java建议已经结束了-我已经有一段时间没有到过那里了,但它始终是一个有帮助和知识渊博的社区 我发现了一个非常简单的例子 int v = gl.glCreateShader(GL.GL_VERTEX_SHADER); int f = gl.glCreateSha

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

我自己也没有,但是如果我在这方面遇到问题,我经常会发现3D编程的最佳场所,Java建议已经结束了-我已经有一段时间没有到过那里了,但它始终是一个有帮助和知识渊博的社区

我发现了一个非常简单的例子

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

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

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