| Constructor and Description |
|---|
GLRenderer(GL gl,
GLExt glext,
GLFbo glfbo) |
| Modifier and Type | Method and Description |
|---|---|
void |
applyRenderState(RenderState state)
Applies the given
RenderState, making the necessary
GL calls so that the state is applied. |
protected void |
bindProgram(Shader shader) |
void |
cleanup()
Deletes all previously used
Native Objects on this Renderer, and
then resets the native objects. |
void |
clearBuffers(boolean color,
boolean depth,
boolean stencil)
Clears certain channels of the currently bound framebuffer.
|
void |
clearClipRect()
Clears the clipping rectangle set with
Renderer.setClipRect(int, int, int, int). |
void |
clearVertexAttribs() |
int |
convertElementMode(Mesh.Mode mode)
\
|* Render Calls *|
\
|
int |
convertShaderType(Shader.ShaderType type) |
void |
copyFrameBuffer(FrameBuffer src,
FrameBuffer dst)
\
|* Framebuffers *|
\
|
void |
copyFrameBuffer(FrameBuffer src,
FrameBuffer dst,
boolean copyDepth)
Copies contents from src to dst, scaling if necessary.
|
void |
copyFrameBuffer(FrameBuffer src,
FrameBuffer dst,
boolean copyColor,
boolean copyDepth)
Copies contents from src to dst, scaling if necessary.
|
void |
deleteBuffer(BufferObject bo)
Deletes the buffer object from the GPU.
|
void |
deleteBuffer(VertexBuffer vb)
Deletes a vertex buffer from the GPU.
|
void |
deleteFrameBuffer(FrameBuffer fb)
Deletes a framebuffer and all attached renderbuffers
|
void |
deleteImage(Image image)
Deletes a texture from the GPU.
|
void |
deleteShader(Shader shader)
Deletes a shader.
|
void |
deleteShaderSource(Shader.ShaderSource source)
Deletes the provided shader source.
|
void |
drawTriangleArray(Mesh.Mode mode,
int count,
int vertCount) |
void |
drawTriangleList(VertexBuffer indexBuf,
Mesh mesh,
int count) |
static int |
extractVersion(java.lang.String version) |
int[] |
generateProfilingTasks(int numTasks)
Generates a pool of gpu queries meant to use as profiling tasks
|
boolean |
getAlphaToCoverage()
Gets the alpha to coverage state.
|
java.util.EnumSet<Caps> |
getCaps()
Get the capabilities of the renderer.
|
int |
getDefaultAnisotropicFilter()
Get the default anisotropic filter level for textures.
|
Vector2f[] |
getFrameBufferSamplePositions(FrameBuffer fb) |
java.util.EnumMap<Limits,java.lang.Integer> |
getLimits()
Get the limits of the renderer.
|
long |
getProfilingTime(int taskId)
Returns the time in nano seconds elapsed for the task with the given id.
|
Statistics |
getStatistics()
The statistics allow tracking of how data
per frame, such as number of objects rendered, number of triangles, etc.
|
void |
initialize()
Detects available capabilities of the GPU.
|
void |
invalidateState()
Invalidates the current rendering state.
|
boolean |
isLinearizeSrgbImages()
Test whether images with the sRGB flag will be linearized when read by a
shader.
|
boolean |
isMainFrameBufferSrgb()
Test whether colors rendered to the main framebuffer undergo
linear-to-sRGB conversion.
|
boolean |
isTaskResultAvailable(int taskId)
Check if the profiling results are available
|
void |
modifyTexture(Texture2D dest,
Image src,
int destX,
int destY,
int srcX,
int srcY,
int areaW,
int areaH)
Copy a part of an image to a texture 2d.
|
void |
modifyTexture(Texture tex,
Image pixels,
int x,
int y)
Deprecated.
Use modifyTexture(Texture2D dest, Image src, int destX, int destY, int srcX, int srcY, int areaW, int areaH)
|
void |
postFrame()
Called when a new frame has been rendered.
|
void |
readFrameBuffer(FrameBuffer fb,
java.nio.ByteBuffer byteBuf)
Reads the pixels currently stored in the specified framebuffer
into the given ByteBuffer object.
|
void |
readFrameBufferWithFormat(FrameBuffer fb,
java.nio.ByteBuffer byteBuf,
Image.Format format)
Reads the pixels currently stored in the specified framebuffer
into the given ByteBuffer object.
|
void |
renderMesh(Mesh mesh,
int lod,
int count,
VertexBuffer[] instanceData)
Renders
count meshes, with the geometry data supplied and
per-instance data supplied. |
void |
resetGLObjects()
Resets all previously used
Native Objects on this Renderer. |
protected void |
resetUniformLocations(Shader shader) |
void |
setAlphaToCoverage(boolean value)
Sets the alpha to coverage state.
|
void |
setBackgroundColor(ColorRGBA color)
Sets the background (aka clear) color.
|
void |
setClipRect(int x,
int y,
int width,
int height)
Specifies a clipping rectangle.
|
void |
setDefaultAnisotropicFilter(int level)
Set the default anisotropic filter level for textures.
|
void |
setDepthRange(float start,
float end)
\
|* Render State *|
\
|
void |
setFrameBuffer(FrameBuffer fb)
Sets the framebuffer that will be drawn to.
|
void |
setLinearizeSrgbImages(boolean linearize)
|
void |
setMainFrameBufferOverride(FrameBuffer fb)
Set the framebuffer that will be set instead of the main framebuffer
when a call to setFrameBuffer(null) is made.
|
void |
setMainFrameBufferSrgb(boolean enableSrgb)
If enabled, color values rendered to the main framebuffer undergo
linear -> sRGB conversion.
|
void |
setReadDrawBuffers(FrameBuffer fb) |
void |
setShader(Shader shader)
Sets the shader to use for rendering.
|
void |
setTexture(int unit,
Texture tex)
Sets the texture to use for the given texture unit.
|
void |
setVertexAttrib(VertexBuffer vb) |
void |
setVertexAttrib(VertexBuffer vb,
VertexBuffer idb) |
void |
setViewPort(int x,
int y,
int w,
int h)
\
|* Camera and World transforms *|
\
|
void |
startProfiling(int taskId)
Starts a time profiling task on the GPU.
|
void |
stopProfiling()
Will stop the last profiling task started with startProfiling
|
void |
updateBufferData(BufferObject bo)
Uploads data of the buffer object on the GPU.
|
void |
updateBufferData(VertexBuffer vb)
Uploads a vertex buffer to the GPU.
|
void |
updateFrameBuffer(FrameBuffer fb) |
void |
updateFrameBufferAttachment(FrameBuffer fb,
FrameBuffer.RenderBuffer rb) |
void |
updateRenderTexture(FrameBuffer fb,
FrameBuffer.RenderBuffer rb) |
protected void |
updateShaderBufferBlock(Shader shader,
ShaderBufferBlock bufferBlock)
Updates the buffer block for the shader.
|
protected void |
updateShaderBufferBlocks(Shader shader)
Updates all shader's buffer blocks.
|
void |
updateShaderData(Shader shader) |
void |
updateShaderSourceData(Shader.ShaderSource source) |
protected void |
updateShaderUniforms(Shader shader) |
void |
updateTexImageData(Image img,
Texture.Type type,
int unit,
boolean scaleToPot)
Uploads the given image to the GL driver.
|
protected void |
updateUniform(Shader shader,
Uniform uniform) |
protected void |
updateUniformLocation(Shader shader,
Uniform uniform)
\
|* Shaders *|
\
|
void |
updateVertexArray(Mesh mesh,
VertexBuffer instanceData) |
public Statistics getStatistics()
RendererStatistics.clearFrame() at the appropriate time
to get accurate info per frame.getStatistics in interface Rendererpublic java.util.EnumSet<Caps> getCaps()
Rendererpublic java.util.EnumMap<Limits,java.lang.Integer> getLimits()
Rendererpublic static int extractVersion(java.lang.String version)
public void initialize()
Rendererinitialize in interface Rendererpublic void invalidateState()
RendererinvalidateState in interface Rendererpublic void resetGLObjects()
RendererNative Objects on this Renderer.
The state of the native objects is reset in such way, that using
them again will cause the renderer to reupload them.
Call this method when you know the GL context is going to shutdown.resetGLObjects in interface RendererNativeObject.resetObject()public void cleanup()
RendererNative Objects on this Renderer, and
then resets the native objects.cleanup in interface RendererRenderer.resetGLObjects(),
NativeObject.deleteObject(java.lang.Object)public void setDepthRange(float start,
float end)
setDepthRange in interface Rendererstart - The range startend - The range endpublic void clearBuffers(boolean color,
boolean depth,
boolean stencil)
RendererclearBuffers in interface Renderercolor - True if to clear colors (RGBA)depth - True if to clear depth/zstencil - True if to clear stencil buffer (if available, otherwise
ignored)public void setBackgroundColor(ColorRGBA color)
RenderersetBackgroundColor in interface Renderercolor - The background color to setpublic void setDefaultAnisotropicFilter(int level)
Renderertexture anisotropic filter is
set to 0, then the default level is used. Otherwise if the texture level
is 1 or greater, then the texture's value overrides the default value.setDefaultAnisotropicFilter in interface Rendererlevel - The default anisotropic filter level to use. Default: 1.public void setAlphaToCoverage(boolean value)
RendererWhen alpha coverage and multi-sampling is enabled, each pixel will contain alpha coverage in all of its subsamples, which is then combined when other future alpha-blended objects are rendered.
Alpha-to-coverage is useful for rendering transparent objects without having to worry about sorting them.
setAlphaToCoverage in interface Rendererpublic void applyRenderState(RenderState state)
RendererRenderState, making the necessary
GL calls so that the state is applied.applyRenderState in interface Rendererpublic void setViewPort(int x,
int y,
int w,
int h)
setViewPort in interface Rendererx - The x coordinate of the viewporty - The y coordinate of the viewportw - Width of the viewporth - Height of the viewportpublic void setClipRect(int x,
int y,
int width,
int height)
RenderersetClipRect in interface Rendererx - The x coordinate of the clip recty - The y coordinate of the clip rectwidth - Width of the clip rectheight - Height of the clip rectpublic void clearClipRect()
RendererRenderer.setClipRect(int, int, int, int).clearClipRect in interface Rendererpublic void postFrame()
Rendererprotected void bindProgram(Shader shader)
protected void updateUniformLocation(Shader shader, Uniform uniform)
protected void updateShaderBufferBlock(Shader shader, ShaderBufferBlock bufferBlock)
shader - the shader.bufferBlock - the storage block.protected void updateShaderUniforms(Shader shader)
protected void updateShaderBufferBlocks(Shader shader)
shader - the shader.protected void resetUniformLocations(Shader shader)
public int convertShaderType(Shader.ShaderType type)
public void updateShaderSourceData(Shader.ShaderSource source)
public void updateShaderData(Shader shader)
public void setShader(Shader shader)
Rendererpublic void deleteShaderSource(Shader.ShaderSource source)
RendererdeleteShaderSource in interface Renderersource - The ShaderSource to delete.public void deleteShader(Shader shader)
RendererdeleteShader in interface Renderershader - Shader to delete.Renderer.deleteShaderSource(com.jme3.shader.Shader.ShaderSource)public void copyFrameBuffer(FrameBuffer src, FrameBuffer dst)
public void copyFrameBuffer(FrameBuffer src, FrameBuffer dst, boolean copyDepth)
RenderercopyFrameBuffer in interface Rendererpublic void copyFrameBuffer(FrameBuffer src, FrameBuffer dst, boolean copyColor, boolean copyDepth)
RenderercopyFrameBuffer in interface Rendererpublic void updateRenderTexture(FrameBuffer fb, FrameBuffer.RenderBuffer rb)
public void updateFrameBufferAttachment(FrameBuffer fb, FrameBuffer.RenderBuffer rb)
public void updateFrameBuffer(FrameBuffer fb)
public Vector2f[] getFrameBufferSamplePositions(FrameBuffer fb)
public void setMainFrameBufferOverride(FrameBuffer fb)
RenderersetMainFrameBufferOverride in interface Rendererfb - The framebuffer to override the main framebuffer.public void setReadDrawBuffers(FrameBuffer fb)
public void setFrameBuffer(FrameBuffer fb)
RenderersetFrameBuffer in interface Rendererfb - The framebuffer to setpublic void readFrameBuffer(FrameBuffer fb, java.nio.ByteBuffer byteBuf)
RendererreadFrameBuffer in interface Rendererfb - The framebuffer to read frombyteBuf - The bytebuffer to transfer color data topublic void readFrameBufferWithFormat(FrameBuffer fb, java.nio.ByteBuffer byteBuf, Image.Format format)
RendererreadFrameBufferWithFormat in interface Rendererfb - The framebuffer to read frombyteBuf - The bytebuffer to transfer color data toformat - the image format to use when reading the frameBuffer.public void deleteFrameBuffer(FrameBuffer fb)
RendererdeleteFrameBuffer in interface Rendererpublic void updateTexImageData(Image img, Texture.Type type, int unit, boolean scaleToPot)
img - The image to uploadtype - How the data in the image argument should be interpreted.unit - The texture slot to be used to upload the image, not importantscaleToPot - If true, the image will be scaled to power-of-2 dimensions
before being uploaded.public void setTexture(int unit,
Texture tex)
RenderersetTexture in interface Renderer@Deprecated public void modifyTexture(Texture tex, Image pixels, int x, int y)
RenderermodifyTexture in interface Renderertex - the Texture that will be modifiedpixels - the source Image data to copy data fromx - the x position to put the image into the texturey - the y position to put the image into the texturepublic void modifyTexture(Texture2D dest, Image src, int destX, int destY, int srcX, int srcY, int areaW, int areaH)
dest - The destination image, where the source will be copiedsrc - The source image that contains the data to copydestX - First pixel of the destination image from where the src image will be drawn (x component)destY - First pixel of the destination image from where the src image will be drawn (y component)srcX - First pixel to copy (x component)srcY - First pixel to copy (y component)areaW - Width of the area to copyareaH - Height of the area to copypublic void deleteImage(Image image)
RendererdeleteImage in interface Rendererpublic void updateBufferData(VertexBuffer vb)
RendererupdateBufferData in interface Renderervb - The vertex buffer to uploadpublic void updateBufferData(BufferObject bo)
RendererupdateBufferData in interface Rendererbo - the buffer object to upload.public void deleteBuffer(VertexBuffer vb)
RendererdeleteBuffer in interface Renderervb - The vertex buffer to deletepublic void deleteBuffer(BufferObject bo)
RendererdeleteBuffer in interface Rendererbo - the buffer object to delete.public void clearVertexAttribs()
public void setVertexAttrib(VertexBuffer vb, VertexBuffer idb)
public void setVertexAttrib(VertexBuffer vb)
public void drawTriangleArray(Mesh.Mode mode, int count, int vertCount)
public void drawTriangleList(VertexBuffer indexBuf, Mesh mesh, int count)
public int convertElementMode(Mesh.Mode mode)
public void updateVertexArray(Mesh mesh, VertexBuffer instanceData)
public void renderMesh(Mesh mesh, int lod, int count, VertexBuffer[] instanceData)
Renderercount meshes, with the geometry data supplied and
per-instance data supplied.
The shader which is currently set with setShader is
responsible for transforming the input vertices into clip space
and shading it based on the given vertex attributes.
The integer variable gl_InstanceID can be used to access the current
instance of the mesh being rendered inside the vertex shader.
If the instance data is non-null, then it is submitted as a
per-instance vertex attribute to the shader.renderMesh in interface Renderermesh - The mesh to renderlod - The LOD level to use, see Mesh.setLodLevels(com.jme3.scene.VertexBuffer[]).count - Number of mesh instances to renderinstanceData - When count is greater than 1, these buffers provide
the per-instance attributes.public void setMainFrameBufferSrgb(boolean enableSrgb)
RendererFrameBuffer.setSrgb(boolean) except it is toggled
for the main framebuffer instead of an offscreen buffer.
This should be set together with Renderer.setLinearizeSrgbImages(boolean)
As a shorthand, the user can set AppSettings.setGammaCorrection(boolean) to true
to toggle both Renderer.setLinearizeSrgbImages(boolean) and
Renderer.setMainFrameBufferSrgb(boolean) if the
Caps.Srgb is supported by the GPU.setMainFrameBufferSrgb in interface RendererFrameBuffer.setSrgb(boolean),
Caps.Srgbpublic void setLinearizeSrgbImages(boolean linearize)
Rendererimages with the sRGB flag
set shall undergo an sRGB to linear RGB color conversion when read by a shader.
The conversion is performed for the following formats:
- Image.Format.RGB8
- Image.Format.RGBA8
- Image.Format.Luminance8
- Image.Format.Luminance8Alpha8
- Image.Format.DXT1
- Image.Format.DXT1A
- Image.Format.DXT3
- Image.Format.DXT5
For all other formats, no conversion is performed.
If this option is toggled at runtime, textures must be reloaded for the change to take effect.setLinearizeSrgbImages in interface Rendererlinearize - If sRGB images undergo sRGB -> linear conversion prior to rendering.Caps.Srgbpublic int[] generateProfilingTasks(int numTasks)
RenderergenerateProfilingTasks in interface RenderernumTasks - the number of task ids to generatepublic void startProfiling(int taskId)
RendererstartProfiling in interface RenderertaskId - the id of the task to start profiling.public void stopProfiling()
RendererstopProfiling in interface Rendererpublic long getProfilingTime(int taskId)
RenderergetProfilingTime in interface RenderertaskId - the id of the task given by startProfiling.public boolean isTaskResultAvailable(int taskId)
RendererisTaskResultAvailable in interface RenderertaskId - the id of the task provided by startProfilingpublic boolean getAlphaToCoverage()
RenderergetAlphaToCoverage in interface Rendererpublic int getDefaultAnisotropicFilter()
RenderergetDefaultAnisotropicFilter in interface Rendererpublic boolean isLinearizeSrgbImages()
isLinearizeSrgbImages in interface Rendererpublic boolean isMainFrameBufferSrgb()
isMainFrameBufferSrgb in interface Renderer