com.jme3.texture
クラス FrameBuffer

java.lang.Object
  上位を拡張 com.jme3.renderer.GLObject
      上位を拡張 com.jme3.texture.FrameBuffer
すべての実装されたインタフェース:
java.lang.Cloneable

public class FrameBuffer
extends GLObject

FrameBuffers are rendering surfaces allowing off-screen rendering and render-to-texture functionality. Instead of the scene rendering to the screen, it is rendered into the FrameBuffer, the result can be either a texture or a buffer.

A FrameBuffer supports two methods of rendering, using a Texture or using a buffer. When using a texture, the result of the rendering will be rendered onto the texture, after which the texture can be placed on an object and rendered as if the texture was uploaded from disk. When using a buffer, the result is rendered onto a buffer located on the GPU, the data of this buffer is not accessible to the user. buffers are useful if one wishes to retrieve only the color content of the scene, but still desires depth testing (which requires a depth buffer). Buffers can be copied to other framebuffers including the main screen, by using Renderer.copyFrameBuffer(com.jme3.texture.FrameBuffer, com.jme3.texture.FrameBuffer). The content of a FrameBuffer.RenderBuffer can be retrieved by using Renderer.readFrameBuffer(com.jme3.texture.FrameBuffer, java.nio.ByteBuffer).

FrameBuffers have several attachment points, there are several color attachment points and a single depth attachment point. The color attachment points support image formats such as Image.Format.RGBA8, allowing rendering the color content of the scene. The depth attachment point requires a depth image format.

関連項目:
Renderer.setFrameBuffer(com.jme3.texture.FrameBuffer)

入れ子のクラスの概要
 class FrameBuffer.RenderBuffer
          RenderBuffer represents either a texture or a buffer that will be rendered to.
 
クラス com.jme3.renderer.GLObject から継承された入れ子のクラス/インタフェース
GLObject.Type
 
コンストラクタの概要
FrameBuffer(int width, int height, int samples)
           Creates a new FrameBuffer with the given width, height, and number of samples.
 
メソッドの概要
 void addColorTexture(Texture2D tex)
          Add a color texture to use for this framebuffer.
 void clearColorTargets()
          Clears all color targets that were set or added previously.
 GLObject createDestructableClone()
          Creates a shallow clone of this GL Object.
 void deleteObject(Renderer r)
          Deletes the GL object from the GPU when it is no longer used.
 FrameBuffer.RenderBuffer getColorBuffer()
           
 FrameBuffer.RenderBuffer getColorBuffer(int index)
           
 FrameBuffer.RenderBuffer getDepthBuffer()
           
 int getHeight()
           
 int getNumColorBuffers()
           
 int getSamples()
           
 int getTargetIndex()
           
 int getWidth()
           
 boolean isMultiTarget()
           
 void resetObject()
          Called when the GL context is restarted to reset all IDs.
 void setColorBuffer(Image.Format format)
          Enables the use of a color buffer for this FrameBuffer.
 void setColorTexture(Texture2D tex)
          Set the color texture to use for this framebuffer.
 void setDepthBuffer(Image.Format format)
          Enables the use of a depth buffer for this FrameBuffer.
 void setDepthTexture(Texture2D tex)
          Set the depth texture to use for this framebuffer.
 void setMultiTarget(boolean enabled)
          If enabled, any shaders rendering into this FrameBuffer will be able to write several results into the renderbuffers by using the gl_FragData array.
 void setTargetIndex(int index)
          If MRT is not enabled (setMultiTarget(boolean) is false) then this specifies the color target to which the scene should be rendered.
 java.lang.String toString()
           
 
クラス com.jme3.renderer.GLObject から継承されたメソッド
clearUpdateNeeded, getId, isUpdateNeeded, setId, setUpdateNeeded
 
クラス java.lang.Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

FrameBuffer

public FrameBuffer(int width,
                   int height,
                   int samples)

Creates a new FrameBuffer with the given width, height, and number of samples. If any textures are attached to this FrameBuffer, then they must have the same number of samples as given in this constructor.

Note that if the Renderer does not expose the Caps.NonPowerOfTwoTextures, then an exception will be thrown if the width and height arguments are not power of two.

パラメータ:
width - The width to use
height - The height to use
samples - The number of samples to use for a multisampled framebuffer, or 1 if the framebuffer should be singlesampled.
例外:
java.lang.IllegalArgumentException - If width or height are not positive.
メソッドの詳細

setDepthBuffer

public void setDepthBuffer(Image.Format format)
Enables the use of a depth buffer for this FrameBuffer.

パラメータ:
format - The format to use for the depth buffer.
例外:
java.lang.IllegalArgumentException - If format is not a depth format.

setColorBuffer

public void setColorBuffer(Image.Format format)
Enables the use of a color buffer for this FrameBuffer.

パラメータ:
format - The format to use for the color buffer.
例外:
java.lang.IllegalArgumentException - If format is not a color format.

setMultiTarget

public void setMultiTarget(boolean enabled)
If enabled, any shaders rendering into this FrameBuffer will be able to write several results into the renderbuffers by using the gl_FragData array. Every slot in that array maps into a color buffer attached to this framebuffer.

パラメータ:
enabled - True to enable MRT (multiple rendering targets).

isMultiTarget

public boolean isMultiTarget()
戻り値:
True if MRT (multiple rendering targets) is enabled.
関連項目:
setMultiTarget(boolean)

setTargetIndex

public void setTargetIndex(int index)
If MRT is not enabled (setMultiTarget(boolean) is false) then this specifies the color target to which the scene should be rendered.

By default the value is 0.

パラメータ:
index - The color attachment index.
例外:
java.lang.IllegalArgumentException - If index is negative or doesn't map to any attachment on this framebuffer.

getTargetIndex

public int getTargetIndex()
戻り値:
The color target to which the scene should be rendered.
関連項目:
setTargetIndex(int)

setColorTexture

public void setColorTexture(Texture2D tex)
Set the color texture to use for this framebuffer. This automatically clears all existing textures added previously with addColorTexture(com.jme3.texture.Texture2D) and adds this texture as the only target.

パラメータ:
tex - The color texture to set.

clearColorTargets

public void clearColorTargets()
Clears all color targets that were set or added previously.


addColorTexture

public void addColorTexture(Texture2D tex)
Add a color texture to use for this framebuffer. If MRT is enabled, then each subsequently added texture can be rendered to through a shader that writes to the array gl_FragData. If MRT is not enabled, then the index set with setTargetIndex(int) is rendered to by the shader.

パラメータ:
tex - The texture to add.

setDepthTexture

public void setDepthTexture(Texture2D tex)
Set the depth texture to use for this framebuffer.

パラメータ:
tex - The color texture to set.

getNumColorBuffers

public int getNumColorBuffers()
戻り値:
The number of color buffers attached to this texture.

getColorBuffer

public FrameBuffer.RenderBuffer getColorBuffer(int index)
パラメータ:
index -
戻り値:
The color buffer at the given index.

getColorBuffer

public FrameBuffer.RenderBuffer getColorBuffer()
戻り値:
The first color buffer attached to this FrameBuffer, or null if no color buffers are attached.

getDepthBuffer

public FrameBuffer.RenderBuffer getDepthBuffer()
戻り値:
The depth buffer attached to this FrameBuffer, or null if no depth buffer is attached

getHeight

public int getHeight()
戻り値:
The height in pixels of this framebuffer.

getWidth

public int getWidth()
戻り値:
The width in pixels of this framebuffer.

getSamples

public int getSamples()
戻り値:
The number of samples when using a multisample framebuffer, or 1 if this is a singlesampled framebuffer.

toString

public java.lang.String toString()
オーバーライド:
クラス GLObject 内の toString

resetObject

public void resetObject()
クラス GLObject の記述:
Called when the GL context is restarted to reset all IDs. Prevents "white textures" on display restart.

定義:
クラス GLObject 内の resetObject

deleteObject

public void deleteObject(Renderer r)
クラス GLObject の記述:
Deletes the GL object from the GPU when it is no longer used. Called automatically by the GL object manager.

定義:
クラス GLObject 内の deleteObject
パラメータ:
r - The renderer to be used to delete the object

createDestructableClone

public GLObject createDestructableClone()
クラス GLObject の記述:
Creates a shallow clone of this GL Object. The deleteObject method should be functional for this object.

定義:
クラス GLObject 内の createDestructableClone