2009-01-09 135 views
7

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

回答

7

我发现了一个很简单的例子

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

我没有我自己,但是如果我遇到这方面的问题,我经常会发现3D编程的最佳位置,而且Java的建议已在JavaGaming.org - 我还没有去过一段时间,但它总是一个有帮助和知识渊博的社区。

3

JOGL的新版本增加了作为一个实用程序着色器加载/编译和统一设置/获取通话。看看API的选择方法。

+0

链接不再有效 – thecoshman 2011-11-29 10:44:44

0

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