@Override public final void ppEnd(final GL gl) { sp.useProgram(gl.getGL2ES2(), false); } }
/** * Restores the texture-unit's texture-target state. * <p> * First the texture-unit is activated, then all states are restored. * </p> * @param gl current GL context's GL object */ public final void restore(final GL gl) { gl.glActiveTexture(state[0]); gl.glBindTexture(target, state[1]); gl.glTexParameteri(target, GL.GL_TEXTURE_MAG_FILTER, state[2]); gl.glTexParameteri(target, GL.GL_TEXTURE_MIN_FILTER, state[3]); gl.glTexParameteri(target, GL.GL_TEXTURE_WRAP_S, state[4]); gl.glTexParameteri(target, GL.GL_TEXTURE_WRAP_T, state[5]); }
context.glPushAttrib( GL.GL_CURRENT_BIT | GL.GL_LIGHTING_BIT | GL.GL_ENABLE_BIT ); context.glMaterialfv( GL.GL_FRONT, GL.GL_DIFFUSE, new float[] { 1, 1, 1, 1 }, 0 ); context.glMaterialfv( GL.GL_FRONT, GL.GL_SPECULAR, new float[] { 0.3f, 0.3f, 0.3f, 1 }, 0 ); context.glEnable( GL.GL_TEXTURE_2D ); context.glEnableClientState( GL.GL_TEXTURE_COORD_ARRAY ); context.glEnable( GL.GL_ALPHA_TEST ); context.glAlphaFunc( GL.GL_GREATER, 0.4f ); context.glGenBuffers( 3, bufferID, 0 ); context.glBindBuffer( GL.GL_ARRAY_BUFFER, bufferID[0] ); context.glBufferData( GL.GL_ARRAY_BUFFER, coordBuffer.capacity() * 4, coordBuffer, GL.GL_STATIC_DRAW ); context.glBindBuffer( GL.GL_ARRAY_BUFFER, bufferID[1] ); context.glBufferData( GL.GL_ARRAY_BUFFER, normalBuffer.capacity() * 4, normalBuffer, GL.GL_STATIC_DRAW ); context.glBindBuffer( GL.GL_ARRAY_BUFFER, bufferID[2] ); context.glBufferData( GL.GL_ARRAY_BUFFER, textureBuffer.capacity() * 4, textureBuffer, GL.GL_STATIC_DRAW ); context.glBindBuffer( GL.GL_ARRAY_BUFFER, bufferID[0] ); context.glVertexPointer( 3, GL.GL_FLOAT, 0, 0 ); context.glBindBuffer( GL.GL_ARRAY_BUFFER, bufferID[1] ); context.glNormalPointer( GL.GL_FLOAT, 0, 0 ); context.glBindBuffer( GL.GL_ARRAY_BUFFER, bufferID[2] );
gl.glClearColor( 0.1f, 0.2f, 0.8f, 0.0f ); gl.glShadeModel( GL.GL_SMOOTH ); gl.glPolygonMode( GL.GL_FRONT, GL.GL_FILL ); gl.glLightfv( GL.GL_LIGHT0, GL.GL_POSITION, new float[] { light_position[0], light_position[1], light_position[2], 1 }, 0 ); gl.glLightfv( GL.GL_LIGHT0, GL.GL_AMBIENT, new float[] { ambientAndDiffuse[0], ambientAndDiffuse[1], ambientAndDiffuse[2], 1 }, 0 ); gl.glMaterialfv( GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT, new float[] { ambientAndDiffuse[0], ambientAndDiffuse[1], ambientAndDiffuse[2], 1 }, 0 ); gl.glLightfv( GL.GL_LIGHT0, GL.GL_DIFFUSE, new float[] { ambientAndDiffuse[0], ambientAndDiffuse[1], ambientAndDiffuse[2], 1 }, 0 ); gl.glLightfv( GL.GL_LIGHT0, GL.GL_SPECULAR, new float[] { ambientAndDiffuse[0] - 0.2f, ambientAndDiffuse[1] - 0.2f, ambientAndDiffuse[2] - 0.2f, 0 }, 0 ); gl.glLightModelf( GL.GL_LIGHT_MODEL_LOCAL_VIEWER, GL.GL_TRUE ); gl.glEnable( GL.GL_LIGHTING ); gl.glEnable( GL.GL_LIGHT0 ); gl.glDepthFunc( GL.GL_LEQUAL ); gl.glEnable( GL.GL_DEPTH_TEST ); gl.glEnableClientState( GL.GL_VERTEX_ARRAY ); gl.glEnableClientState( GL.GL_NORMAL_ARRAY );
@Override public void init( GLAutoDrawable d ) { d.setGL( new DebugGL( d.getGL() ) ); GL gl = d.getGL(); gl.glClearColor( 0.7f, 0.7f, 1f, 0 ); float[] lightAmbient = { 0.4f, 0.4f, 0.4f, 1.0f }; float[] lightDiffuse = { 0.8f, 0.8f, 0.8f, 1.0f }; float[] lightSpecular = { 1.0f, 1.0f, 1.0f, 1.0f }; float[] lightPosition = { 0.0f, 0.0f, 10.0f, 1.0f }; gl.glLightfv( GL.GL_LIGHT0, GL.GL_AMBIENT, lightAmbient, 0 ); gl.glLightfv( GL.GL_LIGHT0, GL.GL_DIFFUSE, lightDiffuse, 0 ); gl.glLightfv( GL.GL_LIGHT0, GL.GL_SPECULAR, lightSpecular, 0 ); gl.glLightfv( GL.GL_LIGHT0, GL.GL_POSITION, lightPosition, 0 ); gl.glEnable( GL.GL_DEPTH_TEST ); gl.glEnable( GL.GL_LIGHT0 ); gl.glEnable( GL.GL_LIGHTING ); gl.glEnable( GL.GL_BLEND ); // enable color and texture blending gl.glBlendFunc( GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA ); gl.glMatrixMode( GL.GL_MODELVIEW ); gl.glLoadIdentity(); gl.glEnableClientState( GL.GL_NORMAL_ARRAY ); gl.glEnableClientState( GL.GL_VERTEX_ARRAY ); }
gl.glClientActiveTexture( GL.GL_TEXTURE0 ); gl.glActiveTexture( GL.GL_TEXTURE0 ); gl.glEnable( GL.GL_TEXTURE_2D ); gl.glEnableClientState( GL.GL_TEXTURE_COORD_ARRAY ); gl.glBindBufferARB( GL.GL_ARRAY_BUFFER_ARB, glVCB ); gl.glTexCoordPointer( 2, GL.GL_FLOAT, 0, 0 ); gl.glBindTexture( GL.GL_TEXTURE_2D, tId ); gl.glTexParameteri( GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE ); gl.glTexParameteri( GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE ); if ( glVCB != -1 && tId != -1 ) { int textureUnitId = JOGLUtils.getTextureUnitConst( i ); gl.glClientActiveTexture( textureUnitId ); gl.glActiveTexture( textureUnitId ); gl.glEnable( GL.GL_TEXTURE_2D ); gl.glEnableClientState( GL.GL_TEXTURE_COORD_ARRAY ); gl.glBindBufferARB( GL.GL_ARRAY_BUFFER_ARB, glVCB ); gl.glTexCoordPointer( 2, GL.GL_FLOAT, 0, 0 ); gl.glBindTexture( GL.GL_TEXTURE_2D, tId ); gl.glTexParameteri( GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE ); gl.glTexParameteri( GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE ); for ( int i = 0; i < textures.size(); i++ ) { if ( textures.get( i ) != null ) { int texSampler = gl.glGetUniformLocation( shaderProgram.getOGLId(), "tex" + i ); gl.glUniform1i( texSampler, i );
public static DncDeviceLabelAtlas xferLabelAtlasToDevice( DncHostLabelAtlas hAtlas, GL gl ) { TexturableImage textureImage = hAtlas.textureImage; int textureHandle = genTexture( gl ); gl.glBindTexture( GL_TEXTURE_2D, textureHandle ); gl.glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); gl.glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); gl.glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); gl.glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); textureImage.pushToTexture( gl, GL_TEXTURE_2D ); int[] bufferHandles = new int[ 2 ]; gl.glGenBuffers( 2, bufferHandles, 0 ); int entriesAlignHandle = bufferHandles[ 0 ]; gl.glBindBuffer( GL_ARRAY_BUFFER, entriesAlignHandle ); gl.glBufferData( GL_ARRAY_BUFFER, hAtlas.entriesAlignBuf.remaining( ) * SIZEOF_FLOAT, hAtlas.entriesAlignBuf, GL_STATIC_DRAW ); int entriesBoundsHandle = bufferHandles[ 1 ]; gl.glBindBuffer( GL_ARRAY_BUFFER, entriesBoundsHandle ); gl.glBufferData( GL_ARRAY_BUFFER, hAtlas.entriesBoundsBuf.remaining( ) * SIZEOF_FLOAT, hAtlas.entriesBoundsBuf, GL_STATIC_DRAW ); return new DncDeviceLabelAtlas( hAtlas.chunkKey, textureImage.getWidth( ), textureImage.getHeight( ), entriesAlignHandle, entriesBoundsHandle, textureHandle ); }
gl.glGenTextures(1, name, 0); if(0 == name[0]) { throw new GLException("null texture, "+this); gl.glBindTexture(GL.GL_TEXTURE_2D, name[0]); if( 0 < magFilter ) { gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, magFilter); gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, minFilter); gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, wrapS); gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, wrapT); int glerr = gl.glGetError(); if(GL.GL_NO_ERROR == glerr) { preTexImage2D = false; gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, format, getWidth(), getHeight(), 0, dataFormat, dataType, null); glerr = gl.glGetError(); gl.glDeleteTextures(1, name, 0); setName(0); throw new GLException("GL Error "+toHexString(glerr)+" while creating (pre TexImage2D "+preTexImage2D+") "+this);
gl.glGenFramebuffers(1, buffer); // generate id _fboID = buffer.get(0); gl.glGenRenderbuffers(1, buffer); // generate id _depthRBID = buffer.get(0); gl.glBindRenderbuffer(GL.GL_RENDERBUFFER, _depthRBID); int format = GL2ES2.GL_DEPTH_COMPONENT; if (_supportsDepthTexture && _depthBits > 0) { gl.glRenderbufferStorage(GL.GL_RENDERBUFFER, format, _width, _height); gl.glBindRenderbuffer(GL.GL_RENDERBUFFER, 0); gl.glBindFramebuffer(GL.GL_FRAMEBUFFER, 0); gl.glGenFramebuffers(1, buffer); _msfboID = buffer.get(0); gl.glGenRenderbuffers(1, buffer); // generate id _mscolorRBID = buffer.get(0); gl.glGenRenderbuffers(1, buffer); // generate id _msdepthRBID = buffer.get(0); gl.glBindRenderbuffer(GL.GL_RENDERBUFFER, _mscolorRBID); gl.getGL2GL3().glRenderbufferStorageMultisample(GL.GL_RENDERBUFFER, _samples, GL.GL_RGBA, _width, _height); gl.glBindRenderbuffer(GL.GL_RENDERBUFFER, _msdepthRBID); gl.getGL2GL3().glRenderbufferStorageMultisample(GL.GL_RENDERBUFFER, _samples, format, _width, _height);
@Override public void init(GLAutoDrawable drawable) { //TODO Debug und Trace GL einbauen GL gl = gc.getGL(); logger.info("INIT GL IS: " + gl.getClass().getName()); gl.glEnable(GL.GL_DEPTH_TEST); gl.glDepthFunc(GL.GL_LEQUAL); // Enable VSync gl.setSwapInterval(1); // Setup the drawing area and shading mode gl.glClearColor(0.0f, 1.0f, 1.0f, 0f); meminfo = new MemoryInfoProvider(gc).get(); }
private void oldInit( GL gl ) { LOG.debug( "Initializing opengl context settings." ); gl.glShadeModel( GL.GL_SMOOTH ); gl.glPolygonMode( GL.GL_FRONT_AND_BACK, GL.GL_FILL ); gl.glLightModelf( GL.GL_LIGHT_MODEL_LOCAL_VIEWER, GL.GL_TRUE ); gl.glEnable( GL.GL_LIGHTING ); gl.glEnable( GL.GL_LIGHT0 ); gl.glDepthFunc( GL.GL_LEQUAL ); gl.glEnable( GL.GL_DEPTH_TEST ); // enable vertex arrays gl.glEnableClientState( GL.GL_VERTEX_ARRAY ); gl.glEnableClientState( GL.GL_NORMAL_ARRAY ); // LOG.debug( "Created shader program id: " + shaderProgramId ); createCompositingTextureShaderPrograms( gl ); }
throw new RuntimeException("TextureName "+toHexString(texName)+" invalid."); gl.glActiveTexture(GL.GL_TEXTURE0+getTextureUnit()); gl.glBindTexture(textureTarget, texName); final int err = gl.glGetError(); if( GL.GL_NO_ERROR != err ) { throw new RuntimeException("Couldn't bind textureName "+toHexString(texName)+" to 2D target, err "+toHexString(err)); gl.glTexImage2D( final int err = gl.glGetError(); if( GL.GL_NO_ERROR != err ) { throw new RuntimeException("Couldn't create TexImage2D RGBA "+tWidth+"x"+tHeight+", target "+toHexString(textureTarget)+ gl.glTexParameteri(textureTarget, GL.GL_TEXTURE_MIN_FILTER, texMinMagFilter[0]); gl.glTexParameteri(textureTarget, GL.GL_TEXTURE_MAG_FILTER, texMinMagFilter[1]); gl.glTexParameteri(textureTarget, GL.GL_TEXTURE_WRAP_S, texWrapST[0]); gl.glTexParameteri(textureTarget, GL.GL_TEXTURE_WRAP_T, texWrapST[1]);
@Override public boolean bind( DrawContext dc ) { GL gl = dc.getGL( ); gl.glBindTexture( GL2.GL_TEXTURE_2D, textureHandle ); // these settings make fine line drawing against a transparent background appear much more natural // but can make other rendering look too jagged/crisp gl.glTexParameterf( GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_LINEAR ); gl.glTexParameterf( GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_MIN_FILTER, GL2.GL_LINEAR ); gl.glTexParameterf( GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_WRAP_S, GL2.GL_CLAMP_TO_EDGE ); gl.glTexParameterf( GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_WRAP_T, GL2.GL_CLAMP_TO_EDGE ); gl.glBlendFuncSeparate( GL2.GL_SRC_ALPHA, GL2.GL_ONE_MINUS_SRC_ALPHA, GL2.GL_ONE, GL2.GL_ONE_MINUS_SRC_ALPHA ); gl.glEnable( GL2.GL_BLEND ); //GlimpseColor.glColor( gl, GlimpseColor.getWhite( 0.5f ) ); return true; }
@Override public final void ppBegin(final GL gl) { if( null == sp ) { throw new IllegalStateException("Not initialized"); } if( 0 == frameStart ) { throw new IllegalStateException("beginFrame not called"); } final GL2ES2 gl2es2 = gl.getGL2ES2(); gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); gl.glClear(GL.GL_COLOR_BUFFER_BIT); gl.glActiveTexture(GL.GL_TEXTURE0 + getTextureUnit()); gl2es2.glDisable(GL.GL_CULL_FACE); gl2es2.glDisable(GL.GL_DEPTH_TEST); gl2es2.glDisable(GL.GL_BLEND); if( !gl2es2.isGLcore() ) { gl2es2.glEnable(GL.GL_TEXTURE_2D); } sp.useProgram(gl2es2, true); gl2es2.glUniform(texUnit0); }
private void renderCopyright() { Texture copyImage = TexturePool.getTexture( glRenderContext, copyrightID ); if ( copyImage != null ) { float tH = copyImage.getHeight(); float tW = copyImage.getWidth(); float quadWidth = tW; float quadHeight = tH; glRenderContext.getContext().glEnable( GL.GL_ALPHA_TEST ); glRenderContext.getContext().glAlphaFunc( GL.GL_GREATER, 0.4f ); draw2D( 0, 0, quadWidth, quadHeight, copyImage, true ); glRenderContext.getContext().glDisable( GL.GL_ALPHA_TEST ); glRenderContext.getContext().glAlphaFunc( GL.GL_ALWAYS, 1 ); } }
/** * @param gl */ private void reshape( GL gl ) { float aspect = (float) width / (float) height; LOG.trace( "reshape( GLAutoDrawable, " + 0 + ", " + 0 + ", " + width + ", " + height + " ) called, aspect: " + aspect ); gl.glMatrixMode( GL.GL_PROJECTION ); gl.glLoadIdentity(); gl.glViewport( 0, 0, width, height ); glu.gluPerspective( viewParams.getViewFrustum().getFOVY(), aspect, viewParams.getViewFrustum().getZNear(), viewParams.getViewFrustum().getZFar() ); gl.glMatrixMode( GL.GL_MODELVIEW ); }
clear |= GL.GL_STENCIL_BUFFER_BIT; gl.glClearStencil(_stencilClearValue); gl.glStencilMask(~0); gl.glClear(GL.GL_STENCIL_BUFFER_BIT); gl.glEnable(GL.GL_SCISSOR_TEST); gl.glScissor(0, 0, cam.getWidth(), cam.getHeight()); record.setClippingTestEnabled(true); gl.glClear(clear);