문제

방금 셰이더 프로그래밍 (GLSL)을 시작하고 렌더 몬키와 함께 몇 가지를 만들었습니다. 이제이 셰이더를 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 방법 선택을 위해.

당신은 볼 수 있습니다 Ogre4J, 인기있는 오픈 소스의 Java 래퍼/포트 OGRE3D 그래픽 엔진. 그것은 당신의 요구에 약간 무거운 가중 일지 모르지만 적절한 3D 프로젝트의 경우 확실히 볼 가치가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top