2009-01-09 136 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項目來說,值得一看。