public static Texture getTexture ( String resourceName , BufferedImage resourceimage , int target , int dstPixelFormat , int minFilter , int magFilter ) throws IOException { ImageIOImageData data = new ImageIOImageData ( ) ; int srcPixelFormat = 0 ; // create the texture ID for this texture int textureID = InternalTextureLoader . createTextureID ( ) ; TextureImpl texture = new TextureImpl ( resourceName , target , textureID ) ; // Enable texturing Renderer . get ( ) . glEnable ( SGL . GL_TEXTURE_2D ) ; // bind this texture Renderer . get ( ) . glBindTexture ( target , textureID ) ; BufferedImage bufferedImage = resourceimage ; texture . setWidth ( bufferedImage . getWidth ( ) ) ; texture . setHeight ( bufferedImage . getHeight ( ) ) ; if ( bufferedImage . getColorModel ( ) . hasAlpha ( ) ) { srcPixelFormat = SGL . GL_RGBA ; } else { srcPixelFormat = SGL . GL_RGB ; } // convert that image into a byte buffer of texture data ByteBuffer textureBuffer = data . imageToByteBuffer ( bufferedImage , false , false , null ) ; texture . setTextureHeight ( data . getTexHeight ( ) ) ; texture . setTextureWidth ( data . getTexWidth ( ) ) ; texture . setAlpha ( data . getDepth ( ) == 32 ) ; if ( target == SGL . GL_TEXTURE_2D ) { Renderer . get ( ) . glTexParameteri ( target , SGL . GL_TEXTURE_MIN_FILTER , minFilter ) ; Renderer . get ( ) . glTexParameteri ( target , SGL . GL_TEXTURE_MAG_FILTER , magFilter ) ; if ( Renderer . get ( ) . canTextureMirrorClamp ( ) ) { Renderer . get ( ) . glTexParameteri ( SGL . GL_TEXTURE_2D , SGL . GL_TEXTURE_WRAP_S , SGL . GL_MIRROR_CLAMP_TO_EDGE_EXT ) ; Renderer . get ( ) . glTexParameteri ( SGL . GL_TEXTURE_2D , SGL . GL_TEXTURE_WRAP_T , SGL . GL_MIRROR_CLAMP_TO_EDGE_EXT ) ; } else { Renderer . get ( ) . glTexParameteri ( SGL . GL_TEXTURE_2D , SGL . GL_TEXTURE_WRAP_S , SGL . GL_CLAMP ) ; Renderer . get ( ) . glTexParameteri ( SGL . GL_TEXTURE_2D , SGL . GL_TEXTURE_WRAP_T , SGL . GL_CLAMP ) ; } } Renderer . get ( ) . glTexImage2D ( target , 0 , dstPixelFormat , texture . getTextureWidth ( ) , texture . getTextureHeight ( ) , 0 , srcPixelFormat , SGL . GL_UNSIGNED_BYTE , textureBuffer ) ; return texture ; }
Load a texture into OpenGL from a BufferedImage