Class ImageSequence
- java.lang.Object
-
- com.jogamp.opengl.util.texture.ImageSequence
-
- All Implemented Interfaces:
TextureSequence
public class ImageSequence extends Object implements TextureSequence
SimpleTextureSequenceimplementation allowingexisting texturesorimage streamsto be used and replayed asframes.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.jogamp.opengl.util.texture.TextureSequence
TextureSequence.TexSeqEventListener<T extends TextureSequence>, TextureSequence.TextureFrame
-
-
Field Summary
-
Fields inherited from interface com.jogamp.opengl.util.texture.TextureSequence
sampler2D, samplerExternalOES
-
-
Constructor Summary
Constructors Constructor Description ImageSequence(int textureUnit, boolean useBuildInTexLookup)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description TextureSequence.TextureFrameaddFrame(GL gl, Texture tex)TextureSequence.TextureFrameaddFrame(GL gl, TextureSequence.TextureFrame frame)voidaddFrame(GL gl, Class<?> context, String imageResourcePath, String imageSuffix)voiddestroy(GL gl)com.jogamp.math.Vec4fgetARatioLetterboxBackColor()ReturnsTextureSequence.useARatioLetterbox()background color for added letter-box space, defaults to transparent zero.intgetCurrentIdx()TextureSequence.TextureFramegetFrame(int idx)intgetFrameCount()TextureSequence.TextureFramegetLastTexture()Returns the last updated texture.TextureSequence.TextureFramegetNextTexture(GL gl)Returns the next texture to be rendered.StringgetRequiredExtensionsShaderStub()In case a shader extension is required, based on the implementation and the runtime GL profile, this method returns the preprocessor macros, e.g.:intgetTextureFragmentShaderHashCode()Returns the hash code of the stringTextureSequence.getTextureFragmentShaderHashID().StringgetTextureFragmentShaderHashID()Returns the concatenated string representing the following values utilized forTextureSequence.getTextureFragmentShaderHashCode().StringgetTextureLookupFragmentShaderImpl()Returns the complete texture2D lookup function code of typeStringgetTextureLookupFunctionName()Returns the chosen lookup function name, which can be set viaTextureSequence.setTextureLookupFunctionName(String).int[]getTextureMinMagFilter()StringgetTextureSampler2DType()Returns eithersampler2DorsamplerExternalOESdepending onTextureSequence.getLastTexture().getTexture().getTarget().intgetTextureTarget()Returns the texture target used by implementation.intgetTextureUnit()Return the texture unit used to render the current frame.int[]getTextureWrapST()booleanisManualStepping()booleanisSequenceAnimating()booleanisTextureAvailable()Returns true if texture source is ready and a texture is available viaTextureSequence.getNextTexture(GL)andTextureSequence.getLastTexture().voidremoveAllFrames()booleanremoveFrame(TextureSequence.TextureFrame tex)voidsetARatioAdjustment(boolean v)TogglesTextureSequence.useARatioLetterbox().voidsetARatioLetterbox(boolean v, com.jogamp.math.Vec4f backColor)TogglesTextureSequence.useARatioLetterbox().voidsetCurrentIdx(int idx)voidsetManualStepping(boolean v)voidsetParams(int magFilter, int minFilter, int wrapS, int wrapT)StringsetTextureLookupFunctionName(String texLookupFuncName)Set the desired shader code's texture lookup function name.booleanuseARatioAdjustment()Returningtrueindicates texture correction for aspect-ratio in the shader.booleanuseARatioLetterbox()Returns whetherTextureSequence.useARatioAdjustment()shall add letter-box space to match aspect-ratio, otherwise it will be zoomed in.
-
-
-
Method Detail
-
setParams
public void setParams(int magFilter, int minFilter, int wrapS, int wrapT)
-
addFrame
public final TextureSequence.TextureFrame addFrame(GL gl, Texture tex)
-
addFrame
public final TextureSequence.TextureFrame addFrame(GL gl, TextureSequence.TextureFrame frame)
-
removeFrame
public boolean removeFrame(TextureSequence.TextureFrame tex)
-
removeAllFrames
public void removeAllFrames()
-
addFrame
public final void addFrame(GL gl, Class<?> context, String imageResourcePath, String imageSuffix) throws IOException
- Throws:
IOException
-
getFrameCount
public final int getFrameCount()
-
getCurrentIdx
public final int getCurrentIdx()
-
setCurrentIdx
public final void setCurrentIdx(int idx) throws IndexOutOfBoundsException- Throws:
IndexOutOfBoundsException
-
setManualStepping
public final void setManualStepping(boolean v)
-
isManualStepping
public final boolean isManualStepping()
-
isSequenceAnimating
public final boolean isSequenceAnimating()
-
getFrame
public final TextureSequence.TextureFrame getFrame(int idx)
-
destroy
public void destroy(GL gl) throws GLException
- Throws:
GLException
-
getTextureTarget
public int getTextureTarget()
Description copied from interface:TextureSequenceReturns the texture target used by implementation.- Specified by:
getTextureTargetin interfaceTextureSequence
-
getTextureUnit
public int getTextureUnit()
Description copied from interface:TextureSequenceReturn the texture unit used to render the current frame.- Specified by:
getTextureUnitin interfaceTextureSequence
-
getTextureMinMagFilter
public int[] getTextureMinMagFilter()
- Specified by:
getTextureMinMagFilterin interfaceTextureSequence
-
getTextureWrapST
public int[] getTextureWrapST()
- Specified by:
getTextureWrapSTin interfaceTextureSequence
-
useARatioAdjustment
public boolean useARatioAdjustment()
Returningtrueindicates texture correction for aspect-ratio in the shader. Graph'sRegionshader will utilizeTextureSequence.setTexCoordBBox(Texture, AABBox, boolean, float[], boolean)for texture-coordinate bounding-box calculation.Returning
falseindicates no correction for aspect-ratio in the shader. Graph'sRegionshader will utilizeTextureSequence.setTexCoordBBoxSimple(Texture, AABBox, float[], boolean)for texture-coordinate bounding-box calculation.Default value is implementation specific and toggling is optional.
Defaults to
trueand toggling is supported viasetARatioAdjustment(boolean)
-
setARatioAdjustment
public void setARatioAdjustment(boolean v)
TogglesTextureSequence.useARatioLetterbox().Default value is implementation specific and toggling is optional.
Defaults to
true.- Specified by:
setARatioAdjustmentin interfaceTextureSequence- See Also:
TextureSequence.useARatioLetterbox(),TextureSequence.useARatioAdjustment()
-
useARatioLetterbox
public boolean useARatioLetterbox()
Returns whetherTextureSequence.useARatioAdjustment()shall add letter-box space to match aspect-ratio, otherwise it will be zoomed in.Default value is implementation specific and toggling is optional.
Defaults to
falseand toggling is supported viasetARatioLetterbox(boolean, Vec4f)- Specified by:
useARatioLetterboxin interfaceTextureSequence- See Also:
TextureSequence.useARatioAdjustment(),TextureSequence.setARatioLetterbox(boolean, Vec4f)
-
getARatioLetterboxBackColor
public com.jogamp.math.Vec4f getARatioLetterboxBackColor()
Description copied from interface:TextureSequenceReturnsTextureSequence.useARatioLetterbox()background color for added letter-box space, defaults to transparent zero.- Specified by:
getARatioLetterboxBackColorin interfaceTextureSequence
-
setARatioLetterbox
public void setARatioLetterbox(boolean v, com.jogamp.math.Vec4f backColor)TogglesTextureSequence.useARatioLetterbox().Default value is implementation specific and toggling is optional.
Impacts only if
TextureSequence.useARatioAdjustment()returnstrue.Defaults to
false.- Specified by:
setARatioLetterboxin interfaceTextureSequence- Parameters:
v- new value forTextureSequence.useARatioLetterbox()backColor- optional background color for added letter-box space, defaults to transparent zero- See Also:
TextureSequence.useARatioLetterbox(),TextureSequence.useARatioAdjustment()
-
isTextureAvailable
public boolean isTextureAvailable()
Description copied from interface:TextureSequenceReturns true if texture source is ready and a texture is available viaTextureSequence.getNextTexture(GL)andTextureSequence.getLastTexture().- Specified by:
isTextureAvailablein interfaceTextureSequence
-
getLastTexture
public TextureSequence.TextureFrame getLastTexture() throws IllegalStateException
Description copied from interface:TextureSequenceReturns the last updated texture.In case the instance is just initialized, it shall return a
Not blocking.TextureFrameobject with valid attributes. The texture content may be undefined until the first call ofTextureSequence.getNextTexture(GL).
- Specified by:
getLastTexturein interfaceTextureSequence- Throws:
IllegalStateException- if instance is not initialized
-
getNextTexture
public TextureSequence.TextureFrame getNextTexture(GL gl) throws IllegalStateException
Description copied from interface:TextureSequenceReturns the next texture to be rendered.Implementation shall return the next frame if available, may block if a next frame may arrive soon. Otherwise implementation shall return the last frame.
Shall return
nullin case no next or last frame is available.- Specified by:
getNextTexturein interfaceTextureSequence- Throws:
IllegalStateException- if instance is not initialized
-
getRequiredExtensionsShaderStub
public String getRequiredExtensionsShaderStub() throws IllegalStateException
Description copied from interface:TextureSequenceIn case a shader extension is required, based on the implementation and the runtime GL profile, this method returns the preprocessor macros, e.g.:#extension GL_OES_EGL_image_external : enable
- Specified by:
getRequiredExtensionsShaderStubin interfaceTextureSequence- Throws:
IllegalStateException- if instance is not initialized
-
getTextureSampler2DType
public String getTextureSampler2DType() throws IllegalStateException
Description copied from interface:TextureSequenceReturns eithersampler2DorsamplerExternalOESdepending onTextureSequence.getLastTexture().getTexture().getTarget().- Specified by:
getTextureSampler2DTypein interfaceTextureSequence- Throws:
IllegalStateException- if instance is not initialized
-
setTextureLookupFunctionName
public String setTextureLookupFunctionName(String texLookupFuncName) throws IllegalStateException
Description copied from interface:TextureSequenceSet the desired shader code's texture lookup function name.- Specified by:
setTextureLookupFunctionNamein interfaceTextureSequence- Parameters:
texLookupFuncName- desired lookup function name. Ifnullor ignored by the implementation, a build-in name is returned.- Returns:
- the chosen lookup function name
- Throws:
IllegalStateException- if instance is not initialized- See Also:
TextureSequence.getTextureLookupFunctionName(),TextureSequence.getTextureFragmentShaderHashCode(),TextureSequence.getTextureLookupFragmentShaderImpl()
-
getTextureLookupFunctionName
public String getTextureLookupFunctionName() throws IllegalStateException
Description copied from interface:TextureSequenceReturns the chosen lookup function name, which can be set viaTextureSequence.setTextureLookupFunctionName(String).- Specified by:
getTextureLookupFunctionNamein interfaceTextureSequence- Throws:
IllegalStateException- if instance is not initialized- See Also:
TextureSequence.setTextureLookupFunctionName(String),TextureSequence.getTextureFragmentShaderHashCode(),TextureSequence.getTextureLookupFragmentShaderImpl()
-
getTextureLookupFragmentShaderImpl
public String getTextureLookupFragmentShaderImpl() throws IllegalStateException
Description copied from interface:TextureSequenceReturns the complete texture2D lookup function code of typevec4 funcName(in getTextureSampler2DType() image, in vec2 texCoord) { vec4 texColor = do_something_with(image, texCoord); return texColor; }funcName is set via
TextureSequence.setTextureLookupFunctionName(String)and queried viaTextureSequence.getTextureLookupFunctionName().User shall call
TextureSequence.setTextureLookupFunctionName(String)first if intended.Note: This function may return an empty string in case a build-in lookup function is being chosen. If the implementation desires so,
TextureSequence.getTextureLookupFunctionName()will ignore the desired function name and returns the build-in lookup function name.- Specified by:
getTextureLookupFragmentShaderImplin interfaceTextureSequence- Throws:
IllegalStateException- if instance is not initialized- See Also:
TextureSequence.getTextureLookupFunctionName(),TextureSequence.setTextureLookupFunctionName(String),TextureSequence.getTextureFragmentShaderHashID(),TextureSequence.getTextureFragmentShaderHashCode(),TextureSequence.getTextureSampler2DType()
-
getTextureFragmentShaderHashID
public String getTextureFragmentShaderHashID()
Description copied from interface:TextureSequenceReturns the concatenated string representing the following values utilized forTextureSequence.getTextureFragmentShaderHashCode().TextureSequence.getTextureSampler2DType()TextureSequence.getTextureLookupFunctionName()TextureSequence.getTextureLookupFragmentShaderImpl()
To reduce string concatenating, implementation may simply return
TextureSequence.getTextureLookupFragmentShaderImpl(), if it coversTextureSequence.getTextureSampler2DType()andTextureSequence.getTextureLookupFunctionName().- Specified by:
getTextureFragmentShaderHashIDin interfaceTextureSequence- See Also:
TextureSequence.getTextureFragmentShaderHashCode()
-
getTextureFragmentShaderHashCode
public int getTextureFragmentShaderHashCode()
Description copied from interface:TextureSequenceReturns the hash code of the stringTextureSequence.getTextureFragmentShaderHashID().User shall call
TextureSequence.setTextureLookupFunctionName(String)first if intended.Returns zero if
The returned hash code allows selection of a matching shader program for thistexture is not available.TextureSequenceinstance.Implementation caches the resulting hash code, which is reset by
TextureSequence.setTextureLookupFunctionName(String)and this method iftexture is not available.
-
-