JCGLShadersType g; List<String> v_source = new ArrayList<String>(); v_source.add("#version 330\n"); v_source.add("in vec4 position;\n"); v_source.add("void\n"); v_source.add("main (void)\n"); v_source.add("{\n"); v_source.add(" gl_Position = position;\n"); v_source.add("}\n"); JCGLVertexShaderType vs = g.shaderCompileVertex("example-v", v_source); List<String> g_source = new ArrayList<String>(); g_source.add("#version 330 core\n"); g_source.add("layout(points) in;\n"); g_source.add("layout(points, max_vertices = 1) out;\n"); g_source.add("void\n"); g_source.add("main ()\n"); g_source.add("{\n"); g_source.add(" gl_Position = gl_in[0].gl_Position;\n"); g_source.add(" EmitVertex();\n"); g_source.add(" EndPrimitive();\n"); g_source.add("}\n"); JCGLGeometryShaderType gs = g.shaderCompileGeometry("example-g", g_source); List<String> f_source = new ArrayList<String>(); f_source.add("#version 330\n"); f_source.add("uniform vec4 color;\n"); f_source.add("out vec4 color0;\n"); f_source.add("void\n"); f_source.add("main (void)\n"); f_source.add("{\n"); f_source.add(" color0 = color;\n"); f_source.add("}\n"); JCGLFragmentShaderType fs = g.shaderCompileFragment("example-f", f_source);
JCGLShadersType g; JCGLProgramShaderType p = g.shaderLinkProgram("program", vs, Optional.of(gs), fs);
JCGLShadersType g; Map<String, JCGLProgramUniformType> uniforms = p.getUniforms(); JCGLProgramUniformType p = uniforms.get("color"); assert p != null; g.programActivate(p); p.programUniformPutVector4f(p, new VectorI4F(1.0f, 0.0f, 0.0f, 1.0f));