【问题标题】:Jogl Shader programmingJogl 着色器编程
【发布时间】:2009-01-09 14:29:31
【问题描述】:

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

【问题讨论】:

    标签: java opengl jogl shader


    【解决方案1】:

    我找到了一个非常简单的例子

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

    【讨论】:

      【解决方案2】:

      我自己也没有,但如果我有这些方面的问题,我经常会找到 3D 编程的最佳位置,Java 建议已在 JavaGaming.org 结束 - 我已经有一段时间没去过那里了,但它始终是一个乐于助人且知识渊博的社区。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-06-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多