Package gov.nasa.worldwind.util
Class OGLUtil
- java.lang.Object
-
- gov.nasa.worldwind.util.OGLUtil
-
public class OGLUtil extends java.lang.Object
A collection of OpenGL utility methods, all static.
-
-
Field Summary
Fields Modifier and Type Field Description static int
DEFAULT_COMBINE_ALPHA
static int
DEFAULT_COMBINE_RGB
protected static Vec4
DEFAULT_LIGHT_DIRECTION
static int
DEFAULT_SRC0_ALPHA
static int
DEFAULT_SRC0_RGB
static int
DEFAULT_SRC1_ALPHA
static int
DEFAULT_SRC1_RGB
static int
DEFAULT_SRC2_ALPHA
static int
DEFAULT_SRC2_RGB
static int
DEFAULT_TEX_ENV_MODE
static int
DEFAULT_TEXTURE_GEN_MODE
static double[]
DEFAULT_TEXTURE_GEN_S_OBJECT_PLANE
static double[]
DEFAULT_TEXTURE_GEN_T_OBJECT_PLANE
protected static java.lang.String
GL_EXT_BLEND_FUNC_SEPARATE
-
Constructor Summary
Constructors Constructor Description OGLUtil()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static void
applyBlending(com.jogamp.opengl.GL2 gl, boolean havePremultipliedColors)
Sets the GL blending state according to the specified color mode.static void
applyColor(com.jogamp.opengl.GL2 gl, java.awt.Color color, boolean premultiplyColors)
Sets the GL color state to the specifiedColor
, and with the specified color mode.static void
applyColor(com.jogamp.opengl.GL2 gl, java.awt.Color color, double opacity, boolean premultiplyColors)
Sets the GL color state to the specifiedColor
and opacity, and with the specified color mode.static void
applyLightingDirectionalFromViewer(com.jogamp.opengl.GL2 gl, int light, Vec4 direction)
Sets the GL lighting state to a white light originating from the eye position and pointed in the specified direction, in model coordinates.static int
computeTexturePixelFormat(int internalFormat)
Returns an OpenGL pixel format corresponding to the specified texture internal format.static int
estimateTextureMemorySize(int internalFormat, int width, int height, boolean includeMipmaps)
Returns an OpenGL pixel format corresponding to the specified texture internal format.static com.jogamp.opengl.util.texture.TextureData
newTextureData(com.jogamp.opengl.GLProfile glp, java.io.File file, boolean useMipMaps)
Creates TextureData from a File.static com.jogamp.opengl.util.texture.TextureData
newTextureData(com.jogamp.opengl.GLProfile glp, java.io.InputStream stream, boolean useMipMaps)
Creates TextureData from an InputStream.static com.jogamp.opengl.util.texture.TextureData
newTextureData(com.jogamp.opengl.GLProfile glp, java.net.URL url, boolean useMipMaps)
Creates TextureData from the given URL.
-
-
-
Field Detail
-
DEFAULT_TEX_ENV_MODE
public static final int DEFAULT_TEX_ENV_MODE
- See Also:
- Constant Field Values
-
DEFAULT_TEXTURE_GEN_MODE
public static final int DEFAULT_TEXTURE_GEN_MODE
- See Also:
- Constant Field Values
-
DEFAULT_TEXTURE_GEN_S_OBJECT_PLANE
public static final double[] DEFAULT_TEXTURE_GEN_S_OBJECT_PLANE
-
DEFAULT_TEXTURE_GEN_T_OBJECT_PLANE
public static final double[] DEFAULT_TEXTURE_GEN_T_OBJECT_PLANE
-
DEFAULT_SRC0_RGB
public static final int DEFAULT_SRC0_RGB
- See Also:
- Constant Field Values
-
DEFAULT_SRC1_RGB
public static final int DEFAULT_SRC1_RGB
- See Also:
- Constant Field Values
-
DEFAULT_SRC2_RGB
public static final int DEFAULT_SRC2_RGB
- See Also:
- Constant Field Values
-
DEFAULT_SRC0_ALPHA
public static final int DEFAULT_SRC0_ALPHA
- See Also:
- Constant Field Values
-
DEFAULT_SRC1_ALPHA
public static final int DEFAULT_SRC1_ALPHA
- See Also:
- Constant Field Values
-
DEFAULT_SRC2_ALPHA
public static final int DEFAULT_SRC2_ALPHA
- See Also:
- Constant Field Values
-
DEFAULT_COMBINE_ALPHA
public static final int DEFAULT_COMBINE_ALPHA
- See Also:
- Constant Field Values
-
DEFAULT_COMBINE_RGB
public static final int DEFAULT_COMBINE_RGB
- See Also:
- Constant Field Values
-
GL_EXT_BLEND_FUNC_SEPARATE
protected static final java.lang.String GL_EXT_BLEND_FUNC_SEPARATE
- See Also:
- Constant Field Values
-
DEFAULT_LIGHT_DIRECTION
protected static final Vec4 DEFAULT_LIGHT_DIRECTION
-
-
Method Detail
-
applyBlending
public static void applyBlending(com.jogamp.opengl.GL2 gl, boolean havePremultipliedColors)
Sets the GL blending state according to the specified color mode. IfhavePremultipliedColors
is true, this applies a blending function appropriate for colors premultiplied by the alpha component. Otherwise, this applies a blending function appropriate for non-premultiplied colors.- Parameters:
gl
- the GL context.havePremultipliedColors
- true to configure blending for colors premultiplied by the alpha components, and false to configure blending for non-premultiplied colors.- Throws:
java.lang.IllegalArgumentException
- if the GL is null.
-
applyColor
public static void applyColor(com.jogamp.opengl.GL2 gl, java.awt.Color color, double opacity, boolean premultiplyColors)
Sets the GL color state to the specifiedColor
and opacity, and with the specified color mode. IfpremultiplyColors
is true, this premultipies the Red, Green, and Blue color values by the opacity value. Otherwise, this does not modify the Red, Green, and Blue color values.- Parameters:
gl
- the GL context.color
- the Red, Green, and Blue values to set.opacity
- the opacity to set.premultiplyColors
- true to premultiply the Red, Green, and Blue color values by the opacity value, false to leave the Red, Green, and Blue values unmodified.- Throws:
java.lang.IllegalArgumentException
- if the GL is null, if the Color is null, if the opacity is less than 0, or if the opacity is greater than 1.
-
applyColor
public static void applyColor(com.jogamp.opengl.GL2 gl, java.awt.Color color, boolean premultiplyColors)
Sets the GL color state to the specifiedColor
, and with the specified color mode. IfpremultiplyColors
is true, this premultipies the Red, Green, and Blue color values by the Alpha value. Otherwise, this does not modify the Red, Green, and Blue color values.- Parameters:
gl
- the GL context.color
- the Red, Green, Blue, and Alpha values to set.premultiplyColors
- true to premultiply the Red, Green and Blue color values by the Alpha value, false to leave the Red, Green, and Blue values unmodified.- Throws:
java.lang.IllegalArgumentException
- if the GL is null, if the Color is null, if the opacity is less than 0, or if the opacity is greater than 1.
-
applyLightingDirectionalFromViewer
public static void applyLightingDirectionalFromViewer(com.jogamp.opengl.GL2 gl, int light, Vec4 direction)
Sets the GL lighting state to a white light originating from the eye position and pointed in the specified direction, in model coordinates. The light direction is always relative to the current eye point and viewer direction. If the direction is null, this the light direction defaults to (0, 0, -1), which points directly along the forward vector form the eye point- Parameters:
gl
- the GL context.light
- the GL light name to set.direction
- the light direction in model coordinates, may be null.- Throws:
java.lang.IllegalArgumentException
- if the GL is null.
-
computeTexturePixelFormat
public static int computeTexturePixelFormat(int internalFormat)
Returns an OpenGL pixel format corresponding to the specified texture internal format. This maps internal format to pixel format as follows:Mapping Internal Format Pixel Format GL2.GL_ALPHA GL2.GL_ALPHA GL2.GL_ALPHA4 GL2.GL_ALPHA GL2.GL_ALPHA8 GL2.GL_ALPHA GL2.GL_ALPHA12 GL2.GL_ALPHA GL2.GL_ALPHA16 GL2.GL_ALPHA GL2.GL_COMPRESSED_ALPHA GL2.GL_ALPHA GL2.GL_COMPRESSED_LUMINANCE GL2.GL_LUMINANCE GL2.GL_COMPRESSED_LUMINANCE_ALPHA GL2.GL_LUMINANCE_ALPHA GL2.GL_COMPRESSED_INTENSITY GL2.GL_RED GL2.GL_COMPRESSED_RGB GL2.GL_RGB GL2.GL_COMPRESSED_RGBA GL2.GL_RGBA GL2.GL_DEPTH_COMPONENT GL2.GL_RED GL2.GL_DEPTH_COMPONENT16 GL2.GL_RED GL2.GL_DEPTH_COMPONENT24 GL2.GL_RED GL2.GL_DEPTH_COMPONENT32 GL2.GL_RED GL2.GL_LUMINANCE GL2.GL_LUMINANCE GL2.GL_LUMINANCE4 GL2.GL_LUMINANCE GL2.GL_LUMINANCE8 GL2.GL_LUMINANCE GL2.GL_LUMINANCE12 GL2.GL_LUMINANCE GL2.GL_LUMINANCE16 GL2.GL_LUMINANCE GL2.GL_LUMINANCE_ALPHA GL2.GL_LUMINANCE_ALPHA GL2.GL_LUMINANCE4_ALPHA4 GL2.GL_LUMINANCE_ALPHA GL2.GL_LUMINANCE6_ALPHA2 GL2.GL_LUMINANCE_ALPHA GL2.GL_LUMINANCE8_ALPHA8 GL2.GL_LUMINANCE_ALPHA GL2.GL_LUMINANCE12_ALPHA4 GL2.GL_LUMINANCE_ALPHA GL2.GL_LUMINANCE12_ALPHA12 GL2.GL_LUMINANCE_ALPHA GL2.GL_LUMINANCE16_ALPHA16 GL2.GL_LUMINANCE_ALPHA GL2.GL_INTENSITY GL2.GL_RED GL2.GL_INTENSITY4 GL2.GL_RED GL2.GL_INTENSITY8 GL2.GL_RED GL2.GL_INTENSITY12 GL2.GL_RED GL2.GL_INTENSITY16 GL2.GL_RED GL2.GL_R3_G3_B2 GL2.GL_RGB GL2.GL_RGB GL2.GL_RGB GL2.GL_RGB4 GL2.GL_RGB GL2.GL_RGB5 GL2.GL_RGB GL2.GL_RGB8 GL2.GL_RGB GL2.GL_RGB10 GL2.GL_RGB GL2.GL_RGB12 GL2.GL_RGB GL2.GL_RGB16 GL2.GL_RGB GL2.GL_RGBA GL2.GL_RGBA GL2.GL_RGBA2 GL2.GL_RGBA GL2.GL_RGBA4 GL2.GL_RGBA GL2.GL_RGB5_A1 GL2.GL_RGBA GL2.GL_RGBA8 GL2.GL_RGBA GL2.GL_RGB10_A2 GL2.GL_RGBA GL2.GL_RGBA12 GL2.GL_RGBA GL2.GL_RGBA16 GL2.GL_RGBA GL2.GL_SLUMINANCE GL2.GL_LUMINANCE GL2.GL_SLUMINANCE8 GL2.GL_LUMINANCE GL2.GL_SLUMINANCE_ALPHA GL2.GL_LUMINANCE_ALPHA GL2.GL_SLUMINANCE8_ALPHA8 GL2.GL_LUMINANCE_ALPHA GL2.GL_SRGB GL2.GL_RGB GL2.GL_SRGB8 GL2.GL_RGB GL2.GL_SRGB_ALPHA GL2.GL_RGBA GL2.GL_SRGB8_ALPHA8 GL2.GL_RGBA This returns 0 if the internal format is not one of the recognized types.
- Parameters:
internalFormat
- the OpenGL texture internal format.- Returns:
- a pixel format corresponding to the texture internal format, or 0 if the internal format is not recognized.
-
estimateTextureMemorySize
public static int estimateTextureMemorySize(int internalFormat, int width, int height, boolean includeMipmaps)
Returns an OpenGL pixel format corresponding to the specified texture internal format. This maps internal format to pixel format as follows:Mapping Internal Format Estimated Bits Per Pixel GL2.GL_ALPHA 8 GL2.GL_ALPHA4 4 GL2.GL_ALPHA8 8 GL2.GL_ALPHA12 12 GL2.GL_ALPHA16 16 GL2.GL_COMPRESSED_ALPHA 0 GL2.GL_COMPRESSED_LUMINANCE 0 GL2.GL_COMPRESSED_LUMINANCE_ALPHA 0 GL2.GL_COMPRESSED_INTENSITY 0 GL2.GL_COMPRESSED_RGB 0 GL2.GL_COMPRESSED_RGBA 0 GL2.GL_DEPTH_COMPONENT 24 GL2.GL_DEPTH_COMPONENT16 16 GL2.GL_DEPTH_COMPONENT24 24 GL2.GL_DEPTH_COMPONENT32 32 GL2.GL_LUMINANCE 8 GL2.GL_LUMINANCE4 4 GL2.GL_LUMINANCE8 8 GL2.GL_LUMINANCE12 12 GL2.GL_LUMINANCE16 16 GL2.GL_LUMINANCE_ALPHA 16 GL2.GL_LUMINANCE4_ALPHA4 8 GL2.GL_LUMINANCE6_ALPHA2 8 GL2.GL_LUMINANCE8_ALPHA8 16 GL2.GL_LUMINANCE12_ALPHA4 16 GL2.GL_LUMINANCE12_ALPHA12 24 GL2.GL_LUMINANCE16_ALPHA16 32 GL2.GL_INTENSITY 8 GL2.GL_INTENSITY4 4 GL2.GL_INTENSITY8 8 GL2.GL_INTENSITY12 12 GL2.GL_INTENSITY16 16 GL2.GL_R3_G3_B2 8 GL2.GL_RGB 24 GL2.GL_RGB4 12 GL2.GL_RGB5 16 (assume the driver allocates 16 bits per pixel) GL2.GL_RGB8 24 GL2.GL_RGB10 32 (assume the driver allocates 32 bits per pixel) GL2.GL_RGB12 36 GL2.GL_RGB16 48 GL2.GL_RGBA 32 GL2.GL_RGBA2 8 GL2.GL_RGBA4 16 GL2.GL_RGB5_A1 16 GL2.GL_RGBA8 32 GL2.GL_RGB10_A2 32 GL2.GL_RGBA12 48 GL2.GL_RGBA16 64 GL2.GL_SLUMINANCE 8 GL2.GL_SLUMINANCE8 8 GL2.GL_SLUMINANCE_ALPHA 16 GL2.GL_SLUMINANCE8_ALPHA8 16 GL2.GL_SRGB 24 GL2.GL_SRGB8 24 GL2.GL_SRGB_ALPHA 32 GL2.GL_SRGB8_ALPHA8 32 The returned estimate assumes that the driver provides does not convert the formats to another supported, such converting as
GL2.GL_ALPHA4
toGL2.GL_ALPHA8
. This returns 0 if the internal format is not one of the recognized types. This does not attempt to estimate a memory size for compressed internal formats.- Parameters:
internalFormat
- the OpenGL texture internal format.width
- the texture width, in pixels.height
- the texture height, in pixels.includeMipmaps
- true to include the texture's mip map data in the estimated size; false otherwise.- Returns:
- a pixel format corresponding to the texture internal format, or 0 if the internal format is not recognized.
- Throws:
java.lang.IllegalArgumentException
- if either the width or height is less than or equal to zero.
-
newTextureData
public static com.jogamp.opengl.util.texture.TextureData newTextureData(com.jogamp.opengl.GLProfile glp, java.net.URL url, boolean useMipMaps) throws java.io.IOException
Creates TextureData from the given URL. Does no OpenGL work.- Parameters:
glp
- the OpenGL Profile this texture data should be created for.url
- the URL from which to read the texture datauseMipMaps
- whether mipmaps should be produced for this texture either by auto-generating them or reading them from the file. Some file formats support multiple mipmaps in a single file in which case those mipmaps will be used rather than generating them.- Returns:
- the texture data from the URL, or null if none of the registered texture providers could read the URL
- Throws:
java.io.IOException
- if an error occurred while reading the URL
-
newTextureData
public static com.jogamp.opengl.util.texture.TextureData newTextureData(com.jogamp.opengl.GLProfile glp, java.io.InputStream stream, boolean useMipMaps) throws java.io.IOException
Creates TextureData from an InputStream. Does no OpenGL work.- Parameters:
glp
- the OpenGL Profile this texture data should be created for.stream
- the stream from which to read the texture datauseMipMaps
- whether mipmaps should be produced for this texture either by auto-generating them or reading them from the file. Some file formats support multiple mipmaps in a single file in which case those mipmaps will be used rather than generating them.- Returns:
- the texture data from the URL, or null if none of the registered texture providers could read the URL
- Throws:
java.io.IOException
- if an error occurred while reading the URL
-
newTextureData
public static com.jogamp.opengl.util.texture.TextureData newTextureData(com.jogamp.opengl.GLProfile glp, java.io.File file, boolean useMipMaps) throws java.io.IOException
Creates TextureData from a File. Does no OpenGL work.- Parameters:
glp
- the OpenGL Profile this texture data should be created for.file
- the file from which to read the texture datauseMipMaps
- whether mipmaps should be produced for this texture either by auto-generating them or reading them from the file. Some file formats support multiple mipmaps in a single file in which case those mipmaps will be used rather than generating them.- Returns:
- the texture data from the URL, or null if none of the registered texture providers could read the URL
- Throws:
java.io.IOException
- if an error occurred while reading the URL
-
-