【发布时间】:2009-01-09 14:29:31
【问题描述】:
我刚开始使用着色器编程 (GLSL) 并使用 RenderMonkey 创建了一些。现在我想在我的 java 代码中使用这个着色器。有什么简单的例子可以说明我是如何做到的吗?
【问题讨论】:
我刚开始使用着色器编程 (GLSL) 并使用 RenderMonkey 创建了一些。现在我想在我的 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);
【讨论】:
我自己也没有,但如果我有这些方面的问题,我经常会找到 3D 编程的最佳位置,Java 建议已在 JavaGaming.org 结束 - 我已经有一段时间没去过那里了,但它始终是一个乐于助人且知识渊博的社区。
【讨论】:
新版本的 Jogl 添加了实用着色器加载/编译和统一设置/获取调用。方法选择请看API。
【讨论】: