this.gl = glContext.getGL().getGL4(); gl.setSwapInterval(0);
@Override void freeTexture(Context ctx, int id) { if (VERBOSE) System.err.println("JoglPipeline.freeTexture()"); GL gl = context(ctx).getGL(); if (id > 0) { int[] tmp = new int[1]; tmp[0] = id; gl.glDeleteTextures(1, tmp, 0); } else { System.err.println("tried to delete tex with texid <= 0"); } }
@Override int getNumCtxLights(Context ctx) { if (VERBOSE) System.err.println("JoglPipeline.getNumCtxLights()"); GL gl = context(ctx).getGL(); int[] res = new int[1]; gl.glGetIntegerv(GL2.GL_MAX_LIGHTS, res, 0); return res[0]; }
@Override void newDisplayList(Context ctx, int displayListId) { if (VERBOSE) System.err.println("JoglPipeline.newDisplayList()"); if (displayListId <= 0) { System.err.println("JAVA 3D ERROR : glNewList(" + displayListId + ") -- IGNORED"); } GL2 gl = context(ctx).getGL().getGL2(); gl.glNewList(displayListId, GL2.GL_COMPILE); }
@Override void accumReturn(Context ctx) { if (VERBOSE) System.err.println("JoglPipeline.accumReturn()"); GL2 gl = context(ctx).getGL().getGL2(); gl.glAccum(GL2.GL_RETURN, 1.0f); }
@Override void decalReset(Context ctx, boolean depthBufferEnable) { if (VERBOSE) System.err.println("JoglPipeline.decalReset()"); GL gl = context(ctx).getGL(); gl.glDisable(GL.GL_STENCIL_TEST); if (depthBufferEnable) gl.glEnable(GL.GL_DEPTH_TEST); }
@Override void endDisplayList(Context ctx) { if (VERBOSE) System.err.println("JoglPipeline.endDisplayList()"); GL2 gl = context(ctx).getGL().getGL2(); gl.glEndList(); }
@Override ShaderError setGLSLUniform2f(Context ctx, ShaderProgramId shaderProgramId, ShaderAttrLoc uniformLocation, float[] value) { if (VERBOSE) System.err.println("JoglPipeline.setGLSLUniform2f()"); GL2 gl = context(ctx).getGL().getGL2(); gl.glUniform2fARB(unbox(uniformLocation), value[0], value[1]); return null; }
@Override ShaderError setGLSLUniform3f(Context ctx, ShaderProgramId shaderProgramId, ShaderAttrLoc uniformLocation, float[] value) { if (VERBOSE) System.err.println("JoglPipeline.setGLSLUniform3f()"); GL2 gl = context(ctx).getGL().getGL2(); gl.glUniform3fARB(unbox(uniformLocation), value[0], value[1], value[2]); return null; }
@Override ShaderError setGLSLUniform4iArray(Context ctx, ShaderProgramId shaderProgramId, ShaderAttrLoc uniformLocation, int numElements, int[] value) { if (VERBOSE) System.err.println("JoglPipeline.setGLSLUniform4iArray()"); GL2 gl = context(ctx).getGL().getGL2(); gl.glUniform4ivARB(unbox(uniformLocation), numElements, value, 0); return null; }
@Override ShaderError setGLSLUniform1f(Context ctx, ShaderProgramId shaderProgramId, ShaderAttrLoc uniformLocation, float value) { if (VERBOSE) System.err.println("JoglPipeline.setGLSLUniform1f()"); GL2 gl = context(ctx).getGL().getGL2(); gl.glUniform1fARB(unbox(uniformLocation), value); return null; }
@Override ShaderError setGLSLUniform4i(Context ctx, ShaderProgramId shaderProgramId, ShaderAttrLoc uniformLocation, int[] value) { if (VERBOSE) System.err.println("JoglPipeline.setGLSLUniform4i()"); GL2 gl = context(ctx).getGL().getGL2(); gl.glUniform4iARB(unbox(uniformLocation), value[0], value[1], value[2], value[3]); return null; }
@Override ShaderError setGLSLUniform1iArray(Context ctx, ShaderProgramId shaderProgramId, ShaderAttrLoc uniformLocation, int numElements, int[] value) { if (VERBOSE) System.err.println("JoglPipeline.setGLSLUniform1iArray()"); GL2 gl = context(ctx).getGL().getGL2(); gl.glUniform1ivARB(unbox(uniformLocation), numElements, value, 0); return null; }
@Override ShaderError destroyGLSLShader(Context ctx, ShaderId shaderId) { if (VERBOSE) System.err.println("JoglPipeline.destroyGLSLShader()"); GL2 gl = context(ctx).getGL().getGL2(); gl.glDeleteObjectARB(unbox(shaderId)); return null; } @Override
@Override void updateMaterialColor(Context ctx, float r, float g, float b, float a) { if (VERBOSE) System.err.println("JoglPipeline.updateMaterialColor()"); GL2 gl = context(ctx).getGL().getGL2(); gl.glColor4f(r, g, b, a); gl.glDisable(GL2.GL_LIGHTING); }
@Override void resetLineAttributes(Context ctx) { if (VERBOSE) System.err.println("JoglPipeline.resetLineAttributes()"); GL gl = context(ctx).getGL(); gl.glLineWidth(1.0f); gl.glDisable(GL2.GL_LINE_STIPPLE); // XXXX: Polygon Mode check, blend enable gl.glDisable(GL.GL_LINE_SMOOTH); }
@Override void updatePointAttributes(Context ctx, float pointSize, boolean pointAntialiasing) { if (VERBOSE) System.err.println("JoglPipeline.updatePointAttributes()"); GL2 gl = context(ctx).getGL().getGL2(); gl.glPointSize(pointSize); // XXXX: Polygon Mode check, blend enable if (pointAntialiasing) { gl.glEnable(GL2.GL_POINT_SMOOTH); } else { gl.glDisable(GL2.GL_POINT_SMOOTH); } }
@Override void accum(Context ctx, float value) { if (VERBOSE) System.err.println("JoglPipeline.accum()"); GL2 gl = context(ctx).getGL().getGL2(); gl.glReadBuffer(GL.GL_BACK); gl.glAccum(GL2.GL_ACCUM, value); gl.glReadBuffer(GL.GL_FRONT); }
@Override ShaderError useGLSLShaderProgram(Context ctx, ShaderProgramId shaderProgramId) { if (VERBOSE) System.err.println("JoglPipeline.useGLSLShaderProgram()"); GL2 gl = context(ctx).getGL().getGL2(); gl.glUseProgramObjectARB(unbox(shaderProgramId)); ((JoglContext) ctx).setShaderProgram((JoglShaderObject) shaderProgramId); return null; }
@Override void disableModelClip(Context ctx) { if (VERBOSE) System.err.println("JoglPipeline.disableModelClip()"); GL gl = context(ctx).getGL(); gl.glDisable(GL2.GL_CLIP_PLANE0); gl.glDisable(GL2.GL_CLIP_PLANE1); gl.glDisable(GL2.GL_CLIP_PLANE2); gl.glDisable(GL2.GL_CLIP_PLANE3); gl.glDisable(GL2.GL_CLIP_PLANE4); gl.glDisable(GL2.GL_CLIP_PLANE5); }