#include <kanzi/core.ui/platform/graphics_backend/gl/renderer.hpp>
Classes | |
struct | TextureUnitInfo |
Texture unit information structure. More... | |
Public Member Functions | |
void | addClearColor (unsigned int drawBuffer, uint32_t red, uint32_t green, uint32_t blue, uint32_t alpha) |
Register color clear for unsigned integer color buffer. More... | |
void | addClearColor (unsigned int drawBuffer, int32_t red, int32_t green, int32_t blue, int32_t alpha) |
Register color clear for signed integer color buffer. More... | |
void | addClearColor (unsigned int drawBuffer, float red, float green, float blue, float alpha) |
Register color clear for float color buffer. More... | |
void | addClearColor (unsigned int drawBuffer, ColorRGBA colorRGBA) |
Register color clear for unsigned normalized color buffer. More... | |
void | addClearColor (unsigned int drawBuffer, ClearMode clearMode) |
Register color clear with value 0. More... | |
void | addClearTarget (GraphicsClearTarget target) |
Sets a clearing target for renderer. More... | |
void | advanceGlobalTime (chrono::milliseconds deltaTime) |
Advances renderer wall clock with time delta. More... | |
void | applyAttributePointer (unsigned int location, int dimension, GraphicsDataType dataType, int stride, const void *data) const |
For given vertex attribute, specified by attribute location, configures attribute dimension, datatype, stride and starting offset in current vertex buffer. More... | |
void | applyTexture (TextureType type, unsigned int textureUnit, unsigned int handle) |
Sets texture settings for given texture unit. More... | |
void | applyTextureSizeUniforms (ShaderTextureUniform textureUniforms, unsigned int textureWidth, unsigned int textureHeight) |
Applies texture uniforms for the renderer. More... | |
void | applyTransformation (ShaderProgram &shaderProgram) |
Applies transformations from renderer to GPU. More... | |
void | applyTransformationUniform (ShaderProgram::FixedUniform uniform, int uniformLocation) |
Applies a single transformation uniform. More... | |
void | applyVertexAttributeArrays () |
Update vertex attribute configurations to the graphics driver. More... | |
void | attachShaderToProgram (unsigned int programHandle, unsigned int shaderHandle) |
Attaches shader to program. More... | |
void | beginMaterialSetup () |
Begins a material for renderer. More... | |
void | beginVertexArray () |
Begins set of vertex arrays. More... | |
void | bindAttributeToLocation (unsigned int programHandle, unsigned int locationIndex, kzString attributeName) |
Binds attribute to given location index, for example "kzPosition" to 0. More... | |
void | bindFramebuffer (unsigned int frameBufferHandle) |
Binds framebuffer. More... | |
void | bindRenderbuffer (unsigned int renderbuffer) |
Binds framebuffer for editing. More... | |
unsigned int | bindTexture (TextureType type, unsigned int handle) |
Binds specified texture of specified type to currently active texture unit. More... | |
void | calculateProjectionCameraWorldMatrix () |
Calculates projection * camera * world matrix. More... | |
void | clear () |
Clears currently bound framebuffer with requested buffers. More... | |
void | clearUniformCaches () |
Free memory used by uniform caches. More... | |
bool | compileSourceShader (ShaderType shaderType, unsigned int shaderHandle, const char *const shaderCode, string_view shaderName) |
Compiles source shader and deploys it to GPU. More... | |
void * | createImageObject (void *dataPointer, int target, int *attributes) |
Creates image object, returns NULL if no hardware support. More... | |
unsigned int | createShader (ShaderType type) |
Creates shader. More... | |
unsigned int | createShaderProgram () |
Creates shader program. Returns the handle to the program. More... | |
void | deleteBuffer (unsigned int handle) |
Deletes vertex or index buffer. More... | |
void | deleteFramebuffer (unsigned int frameBufferHandle) |
Deletes framebuffer. More... | |
void | deleteImageObject (void *imageObject) |
Deletes image object created with createImageObject. More... | |
void | deleteRenderbuffer (unsigned int renderbuffer) |
Deletes framebuffer. More... | |
void | deleteShader (unsigned int shaderHandle) |
Deletes shader. More... | |
void | deleteShaderProgram (unsigned int programHandle) |
Deletes shader program and attached shaders. More... | |
void | deleteTexture (unsigned int textureHandle) |
Deletes texture via renderer. More... | |
bool | deployBinaryProgram (unsigned int program, unsigned int binaryFormat, const void *data, size_t dataSize) |
Initializes shader program from program binary data. More... | |
bool | deployBinaryShader (unsigned int count, const unsigned int *shaders, unsigned int binaryFormat, const void *data, size_t dataSize) |
Deploys binary shaders. More... | |
void | detachShaderFromProgram (unsigned int programHandle, unsigned int shaderHandle) |
Detaches shader from program. More... | |
void | detachTexture (unsigned int textureUnit) |
Detaches all texture information from given texture unit. More... | |
void | disableState (RendererState state) |
Disables a specific renderer state. More... | |
void | disableVertexAttributeArray (unsigned int attributeHandle) |
Sets vertex attribute array to be disabled. More... | |
void | disableWorkaround (Workaround workaround) |
Disable a renderer workaround. More... | |
void | drawBuffers () |
Render buffers that are currently bound. More... | |
void | enableState (RendererState state) |
Enables a specific renderer state. More... | |
void | enableVertexAttributeArray (unsigned int attributeHandle) |
Sets vertex attribute array to be enabled. More... | |
void | enableWorkaround (Workaround workaround) |
Enable a renderer workaround. More... | |
void | endMaterialSetup () |
Ends a material for renderer. More... | |
void | endVertexArray (GraphicsPrimitiveType primitiveType, unsigned int count) |
Ends vertex array. Renders the specified vertex lists and finishes the usage. More... | |
GraphicsFormat | findValidTextureFormat (GraphicsFormat format, unsigned int features) const |
Find a valid texture format which is supported by graphics adapter and is compatible with specified format. More... | |
void | flush () const |
Flushes the GPU pipeline, forces all commands to be executed in finite time. More... | |
void | framebufferRenderbuffer (Surface::APIAttachment attachment, unsigned int renderbuffer) |
Attaches renderbuffer to the currently active Framebuffer. More... | |
void | framebufferTexture2D (unsigned int glTextureImageTarget, Surface::APIAttachment attachment, unsigned int textureHandle, unsigned int mipmapLevel, unsigned int implicitSampleCount) |
Attaches texture to the currently active Framebuffer. More... | |
unsigned int | generateBuffer () |
Generates new index or vertex buffer or uniform buffer object name. More... | |
unsigned int | generateFramebuffer () |
Generates new texture for renderer. More... | |
void | generateMipmaps (TextureType textureType) |
Generates mipmaps for currently bound texture. More... | |
unsigned int | generateRenderbuffer () |
Generates new texture for renderer. More... | |
unsigned int | generateTexture () |
Generates new texture for renderer. More... | |
SurfaceColorSpace | getActiveColorSpace () const |
Gets the active Color Space. More... | |
unsigned int | getActiveFramebuffer () const |
Gets active frame buffer handle from. More... | |
GLGraphicsOutput * | getActiveGLGraphicsOutput () const |
Gets active surface context from renderer. More... | |
KzsGlGraphicsContext * | getActiveGraphicsContext () const |
float | getActiveScalar (GraphicsScalar scalar) const |
Returns a current scalar value from renderer. More... | |
const int * | getActiveShaderAttributeMap () const |
Gets active vertex attribute map from renderer. More... | |
unsigned int | getActiveShaderHandle () const |
Gets active shader handle from renderer. More... | |
SurfaceClientAPI | getActiveSurfaceClientAPI () const |
::KzsOpenGlVendor | getActiveSurfaceVendor () const |
unsigned int | getBatchCount () const |
Gets batch count from renderer (number of draw calls, such as drawElements and drawArrays). More... | |
GraphicsBlendMode | getBlendMode () const |
Gets a blend mode for renderer. More... | |
unsigned int | getBufferSwitchCount () const |
Gets number of buffer switches (VBO + IBO) from renderer. More... | |
int | getColorReadFormat () |
Returns GL constant for the color read format used in reading back data from framebuffer (RendererReadPixels). More... | |
int | getColorReadType () |
Returns GL constant for the color read type used in reading back data from framebuffer (RendererReadPixels). More... | |
GraphicsColorWriteMode | getColorWriteMode () const |
Gets current color write mode from renderer. More... | |
GraphicsCullMode | getCullMode () const |
Gets a cull mode for renderer. More... | |
const void * | getCurrentVertexArrayAttributeData (VertexAttribute::Semantic attribute) const |
Gets current vertex array data from renderer. Reset when switching the shader. More... | |
unsigned int | getCurrentVertexArrayFlags () const |
Gets the current vertex array flags from renderer. More... | |
GraphicsFormat | getDepthStencilFormatForRenderbuffer (bool depth, bool stencil) const |
Returns a depth/stencil renderbuffer format which is supported by renderer. More... | |
GraphicsFormat | getDepthStencilFormatForTexture (bool depth, bool stencil) const |
Returns a depth/stencil texture format which is supported by renderer. More... | |
GraphicsCompareFunction | getDepthTest () const |
Gets a depth pass mode for renderer. More... | |
DrawBuffers | getDrawBuffersSupport () const |
Return support for draw buffers. More... | |
bool | getDumpStateOnDrawCalls () const |
Returns current dump state on draw calls setting. More... | |
GraphicsFormat | getFallback (GraphicsFormat format, unsigned int usageFlags) const |
Returns a fallback format which supports specified usage flags. More... | |
unsigned int | getFeatures (GraphicsFormat format) const |
Describes what the specified format can be used for in the specified renderer. More... | |
FloatTexture | getFloatTextureSupport () const |
Return support for float texture format. More... | |
unsigned int | getFramebufferSwitchCount () const |
Gets number of framebuffer switches from renderer. More... | |
int | getGlesVersion () const |
Returns supported OpenGL ES version number. More... | |
void | getGLFormatTriplet (GraphicsFormat format, unsigned int features, unsigned int *out_glFormat, unsigned int *out_glInternalFormat, unsigned int *out_glType) const |
Returns GL API format, internal format, type triplet for given Format. More... | |
chrono::milliseconds | getGlobalTime () const |
Gets wall clock time in milliseconds since program start. More... | |
HalfFloatTexture | getHalfFloatTextureSupport () const |
Return support for half float texture format. More... | |
HalfFloatVertexAttribute | getHalfFloatVertexAttributeSupport () const |
Return support for half-float vertex attribute. More... | |
unsigned int | getHeavyweightCallCount () const |
Returns potential heavyweight calls such as buffer or texture updates and glFinish from renderer. More... | |
unsigned int | getIndexCount () const |
Gets index count from renderer. More... | |
bool | getLogging () const |
Returns current OpenGL API call logging setting. More... | |
Matrix4x4 | getMatrix (FixedMatrix matrixType) const |
Gets a matrix from renderer. More... | |
float | getMaximumAnisotropy () const |
Gets maximum anisotropy. More... | |
unsigned int | getMaximumRenderbufferSize () const |
Gets maximum renderbuffer size. More... | |
unsigned int | getMaximumSampleCount () const |
Gets maximum sample count for multisample. More... | |
unsigned int | getMaximumTextureSize (TextureType textureType) const |
Gets maximum texture side size. More... | |
unsigned int | getMaximumVertexAttributeCount () const |
Gets maximum vertex attribute count. More... | |
unsigned int | getMaximumViewportHeight () const |
Gets maximum viewport height. More... | |
unsigned int | getMaximumViewportWidth () const |
Gets maximum viewport width. More... | |
Multisample | getMultisampleSupport () const |
Return support for multisample textures and renderbuffers. More... | |
GraphicsFormat | getNativePixelReadFormat () |
Returns native pixel read format from renderer. More... | |
string | getProgramBinary (unsigned int program, unsigned int &binaryFormat) |
Gets binary representation for GL shader program. More... | |
ProgramBinary | getProgramBinarySupport () const |
Return support for program binaries. More... | |
ViewportRectangle | getScissor () const |
Gets current scissor rectangle from renderer. More... | |
unsigned int | getShaderSwitchCount () const |
Gets shader switches. More... | |
bool | getState (RendererState state) const |
Returns state of a specific renderer state. More... | |
void | getStencilFunction (GraphicsCompareFunction *out_stencilCompareFunction, unsigned int *out_referenceValue, unsigned int *out_maskValue) const |
Gets stencil function from renderer. More... | |
void | getStencilOperation (GraphicsStencilOperation *out_stencilFailOperation, GraphicsStencilOperation *out_stencilPassDepthFailOperation, GraphicsStencilOperation *out_stencilPassDepthPassOperation) const |
Gets a stencil operation from renderer. More... | |
TexStorage | getTexStorageSupport () const |
Return support for tex storage. More... | |
bool | getTexStorageSupport (TextureType type, unsigned int samples) const |
Return support for tex storage. More... | |
unsigned int | getTextureSwitchCount () const |
Gets number of texture switches from renderer. More... | |
unsigned int | getTriangleCount () const |
Gets triangle count from renderer. More... | |
unsigned int | getUniformArrayLength (const char *uniformName) const |
Returns array uniform length for given uniform. More... | |
int | getUniformLocationSlow (const string &uniformName) const |
Finds uniform location for given uniform from active shader. More... | |
unsigned int | getUniformSendCount () const |
Gets uniform sending count from renderer. More... | |
size_t | getVertexCount () const |
Gets vertex count from renderer. More... | |
ViewportRectangle | getViewport () const |
Gets current viewport rectangle from renderer. More... | |
bool | GPUCallsIsEnabled () const |
Checks if GPU calls are enabled. More... | |
bool | hasClearTarget (GraphicsClearTarget target) const |
Sees if renderer has specific clear target. More... | |
void | initialize (kzUint vertexBufferPoolSize, kzUint indexBufferPoolSize) |
Initializes renderer object. Requires graphics context. More... | |
void | invalidateAllocations () |
Invalidates all handles from renderer without affecting GL state. More... | |
void | invalidateFramebufferAttachments (FramebufferTarget target, bitset< Surface::APIAttachmentCount > attachments) const |
Invalidates framebuffer attachments. More... | |
bool | isClearEnabled () const |
See if clear is enabled. More... | |
bool | isFramebufferComplete () |
Checks if the framebuffer status is complete. More... | |
bool | isHalfFloatVertexAttributeSupported () const |
Indicates whether half-float vertex attribute is supported in any fashion. More... | |
bool | isInitialized () const |
Tells whether the renderer is initialized. More... | |
bool | isProgramBinaryFormatSupported (unsigned int glProgramBinaryFormat) const |
Checks if GL program binary format is supported. More... | |
bool | isShaderBinaryFormatSupported (unsigned int glShaderBinaryFormat) const |
Checks if GL shader binary format is supported. More... | |
bool | isSupported (RendererSupport feature) const |
Is coverage buffer supported or not. More... | |
bool | isWorkaroundEnabled (Workaround workaround) const |
Return if workaround is enabled or not. More... | |
bool | linkShaderProgram (unsigned int programHandle, kzString shaderName) |
Links shader program with given handle. More... | |
void | logOpenGLInformation (unsigned int flags) const |
Logs information about renderer capabilities. More... | |
void * | mapIndexBuffer (unsigned int size, BufferAccessMode mode) |
Maps index buffer. More... | |
void * | mapVertexBuffer (unsigned int size, BufferAccessMode mode) |
Maps vertex buffer. More... | |
void | popStatistics () |
void | pushStatistics () |
void | readPixels (int x, int y, int width, int height, GraphicsFormat format, void *pixels) |
Reads the pixels from the current frame buffer. More... | |
void | refreshRenderContext (bool geometryRendering) |
Refreshes render context to contain all proper states. More... | |
void | removeClearTarget (GraphicsClearTarget target) |
Removes a clearing target for renderer. More... | |
void | renderbufferStorage (GraphicsFormat format, unsigned int width, unsigned int height, unsigned int explicitSampleCount) |
Sets storage for currently bound renderbuffer. More... | |
Renderer () | |
Creates a new renderer object. More... | |
void | reset () |
Resets renderer, e.g. resets its caches and states and syncs renderer variables with actual GL states. More... | |
void | resetActiveFramebuffer () |
Resets active frame buffer for renderer to default (screen). More... | |
void | resetClearTarget () |
Resets clear targets for renderer. More... | |
void | resetFrame () |
Resets frame for core renderer, that is, counters for logging rendering infos (triangle count etc.). More... | |
void | resolveMultisample (NativeFramebufferHandle sourceFramebuffer, NativeFramebufferHandle destinationFramebuffer, unsigned int srcOffsetX, unsigned int srcOffsetY, unsigned int srcWidth, unsigned int srcHeight, unsigned int dstOffsetX, unsigned int dstOffsetY, unsigned int dstWidth, unsigned int dstHeight, bool color, bool depth, bool stencil) |
Resolve multisample framebuffer. More... | |
void | resolveMultisample (NativeFramebufferHandle sourceFramebuffer, NativeFramebufferHandle destinationFramebuffer, unsigned int srcOffsetX, unsigned int srcOffsetY, unsigned int srcWidth, unsigned int srcHeight, unsigned int dstOffsetX, unsigned int dstOffsetY, unsigned int dstWidth, unsigned int dstHeight) |
Resolve multisample framebuffer. More... | |
void | resolveMultisample (Texture &src, Texture &dst, unsigned int offsetX, unsigned int offsetY, unsigned int width, unsigned int height, bool color, bool depth) |
Resolve multisample samples from source texture into destination texture. More... | |
void | resolveMultisample (Texture &src, Texture &dst, unsigned int offsetX, unsigned int offsetY, unsigned int width, unsigned int height) |
Resolve multisample samples from source texture into destination texture. More... | |
void | setActiveFramebuffer (unsigned int frameBufferHandle) |
Sets active frame buffer for renderer. More... | |
void | setActiveFramebufferCallback (FramebufferCallback callbackFunction) |
Sets callback function that is called after setActiveFramebuffer. More... | |
void | setActiveGLGraphicsOutput (GLGraphicsOutput *glGraphicsOutput) |
Sets active surface context for renderer. More... | |
void | setActiveScalar (GraphicsScalar scalar, float value) |
Switches an scalar value for renderer if necessary, e.g. depth clear value. More... | |
void | setActiveShaderHandle (unsigned int activeShaderHandle, const int *vertexAttributeMap) |
Sets active shader for renderer. More... | |
void | setActiveTextureUnit (unsigned int textureUnit) |
Sets the currently active texture unit. More... | |
void | setBlendMode (GraphicsBlendMode blendMode) |
Sets a blend mode for renderer. More... | |
void | setClearColor (ColorRGBA colorRGBA) |
Set clear color for renderer. More... | |
void | setClearDepthValue (float clearDepthValue) |
Set clear depth for renderer. More... | |
void | setClearStencil (int stencilClearValue) |
Set clear stencil for renderer. More... | |
void | setColorBufferCount (unsigned int colorBufferCount) |
Sets the number of draw buffers for currently active framebuffer. More... | |
void | setColorWriteMode (GraphicsColorWriteMode colorWriteMode) |
Set a color write mode for renderer. More... | |
void | setCullMode (GraphicsCullMode cullMode) |
Sets a cull mode for renderer. More... | |
void | setDefaultFramebuffer (unsigned int frameBufferHandle) |
Specifies default frame buffer (screen) for renderer. More... | |
void | setDepthTest (GraphicsCompareFunction depthMode) |
Sets a depth pass mode for renderer. More... | |
void | setGPUCallsEnabled (bool enabled) |
Sets GPU calls enabled / disabled. More... | |
void | setImageTargetTexture (TextureType type, void *imageObject) |
Sets image object bound to currently bound texture (type). More... | |
void | setIndexBuffer (unsigned int indexBuffer) |
Sets an index buffer for renderer. More... | |
void | setIndexBufferData (size_t dataSize, const void *data) |
Sets static index buffer data. More... | |
void | setIndexBufferSubData (unsigned int offset, size_t size, const void *data) |
Uploads index buffer subdata with given offset and size. More... | |
void | setIndexCount (unsigned int indexCount) |
Sets the index count for renderer. More... | |
void | setIndexData (void *indexData) |
Sets index data for renderer. More... | |
void | setIndexData (void *indexData, IndexBufferType type) |
Sets index data for renderer. More... | |
void | setLineWidth (float lineWidth) |
Sets line rendering width for renderer. More... | |
void | setLogging (bool enabled, bool dumpStateOnDrawCalls) |
Sets OpenGL API call logging on/off. More... | |
void | setMatrix (FixedMatrix matrixType, Matrix4x4 matrix) |
Sets matrix for a renderer. More... | |
void | setPixelStorePack (unsigned int packBytes) |
Sets pack row alignment in memory. More... | |
void | setPixelStoreUnpack (unsigned int unpackBytes) |
Sets unpack row alignment in memory. More... | |
bool | setPixelStoreUnpackRowLength (unsigned int rowLength) |
Sets the unpack row length. More... | |
void | setPrimitiveType (GraphicsPrimitiveType prmitiveType) |
Sets the primitive type for renderer. More... | |
void | setScissorTest (optional< ViewportRectangle > scissor) |
Sets scissor test state and optional rectangle for renderer. More... | |
void | setState (RendererState state, bool enable) |
Enables or disables the state of a specific renderer state. More... | |
void | setStencilFunction (GraphicsCompareFunction stencilCompareFunction, unsigned int referenceValue, unsigned int maskValue) |
Sets a stencil function for renderer. More... | |
void | setStencilOperation (GraphicsStencilOperation stencilFailOperation, GraphicsStencilOperation stencilPassDepthFailOperation, GraphicsStencilOperation stencilPassDepthPassOperation) |
Sets a stencil operation for renderer. More... | |
void | setTextureAddressingMode (TextureType type, Sampler::AddressingMode texAddress) |
Sets wrap mode for currently bound texture in current texture unit. More... | |
void | setTextureCompare (TextureType type, bool isEnabled, GraphicsCompareFunction textureCompareFunction) |
Sets texture comparison function for currently bound texture in current texture unit. More... | |
void | setTextureFilter (TextureType type, Sampler::Filter minificationFilter, Sampler::Filter magnificationFilter, Sampler::MipmapMode mipmapMode, float anisotropy) |
Sets texture filter for currently bound texture in current texture unit. More... | |
void | setTextureImage2D (unsigned int glTextureImageTarget, unsigned int mipmapLevel, GraphicsFormat format, unsigned int width, unsigned int height, const void *data) |
Uploads texture data to GPU. More... | |
void | setTextureSubImage2D (unsigned int glTextureImageTarget, unsigned int mipmapLevel, GraphicsFormat format, unsigned int x, unsigned int y, unsigned int width, unsigned int height, const void *data) |
Uploads texture subimage data to GPU. More... | |
void | setTextureSwizzleMask (TextureType target, const TextureSwizzleMask &mask) |
Sets texture swizzle mask for currently bound alpha only texture in current texture unit. More... | |
void | setUniformColorArray (int uniformLocation, size_t count, const ColorRGBA *values) |
Sets vector array with dimension to renderer, using currently bound shader. More... | |
void | setUniformColorRGBA (const ColorRGBA &value, int uniformLocation) |
Sets ColorRGBA uniform for renderer, using currently bound shader. More... | |
void | setUniformFloat (const float &value, int uniformLocation) |
Sets floating point uniform for renderer, using currently bound shader. More... | |
void | setUniformFloatArray (int uniformLocation, size_t count, const float *values) |
Sets float array with dimension to renderer using currently bound shader. More... | |
void | setUniformIntArray (int uniformLocation, size_t count, const int *values) |
Sets integer array with dimension to renderer using currently bound shader. More... | |
void | setUniformInteger (const int &value, int uniformLocation) |
Sets integer uniform for renderer, using currently bound shader. More... | |
void | setUniformMatArray (int uniformLocation, size_t count, const Matrix3x3 *values) |
Sets matrix array with dimension to renderer, using currently bound shader. More... | |
void | setUniformMatArray (int uniformLocation, size_t count, const Matrix4x4 *values) |
Sets matrix array with dimension to renderer, using currently bound shader. More... | |
void | setUniformMatrix3x3 (const Matrix3x3 &value, int uniformLocation) |
Sets Matrix3x3 uniform for renderer, using currently bound shader. More... | |
void | setUniformMatrix4x4 (const Matrix4x4 &value, int uniformLocation) |
Sets Matrix4x4 uniform for renderer, using currently bound shader. More... | |
void | setUniformTexture (int uniformLocation, unsigned int textureUnit) |
Sets the uniform for a texture based on current active texture unit. More... | |
void | setUniformVec2 (const Vector2 &value, int uniformLocation) |
Sets Vector2 uniform for renderer, using currently bound shader. More... | |
void | setUniformVec3 (const Vector3 &value, int uniformLocation) |
Sets Vector3 uniform for renderer, using currently bound shader. More... | |
void | setUniformVec4 (const Vector4 &value, int uniformLocation) |
Sets Vector4 uniform for renderer, using currently bound shader. More... | |
void | setUniformVecArray (int uniformLocation, size_t count, const Vector2 *values) |
Sets vector array with dimension to renderer, using currently bound shader. More... | |
void | setUniformVecArray (int uniformLocation, size_t count, const Vector3 *values) |
Sets vector array with dimension to renderer, using currently bound shader. More... | |
void | setUniformVecArray (int uniformLocation, size_t count, const Vector4 *values) |
Sets vector array with dimension to renderer, using currently bound shader. More... | |
void | setVertexArrayData (VertexAttribute::Semantic attribute, const void *data) |
Sets vertex array data. More... | |
void | setVertexArrayData (VertexAttribute::Semantic attribute, GraphicsDataType dataType, const void *data) |
void | setVertexBuffer (unsigned int vertexBuffer) |
Sets a vertex buffer for renderer. More... | |
void | setVertexBufferData (size_t dataSize, const void *data) |
Sets static vertex buffer data. More... | |
void | setVertexBufferPointer (unsigned int location, int dimension, GraphicsDataType attributeDataType, int stride, const void *data) |
Sets attribute data source for currently enabled vertex attribute array. More... | |
void | setVertexBufferSubData (unsigned int offset, size_t size, const void *data) |
Uploads vertex buffer subdata with given offset and size. More... | |
void | setVertexCount (size_t vertexCount) |
Sets vertex count for renderer. More... | |
void | setViewport (ViewportRectangle viewport) |
Sets an active view port for renderer. More... | |
void | setWorkaroundEnable (Workaround workaround, bool enabled) |
Set workaround enable state to true or false. More... | |
bool | supports (GraphicsFormat format, unsigned int features) const |
Returns whether format supports requested features. More... | |
bool | supportsColorAttachment (GraphicsFormat format) const |
Returns whether format can be used as color attachment in framebuffers. More... | |
bool | supportsDepthStencilAttachment (GraphicsFormat format) const |
Returns whether format can be used as depth/stencil attachment in framebuffers. More... | |
bool | supportsRenderbuffer (GraphicsFormat format) const |
Returns whether format can be used as renderbuffer by the specified renderer. More... | |
bool | supportsTexStorage (GraphicsFormat format, unsigned int features) const |
Returns true if graphics format supports texture storage. More... | |
bool | supportsTexture (GraphicsFormat format) const |
Returns whether format can be used as texture by the specified renderer. More... | |
void | textureStorage (TextureType type, int sampleCount, int mipmapLevelCount, GraphicsFormat format, unsigned int width, unsigned int height, unsigned int depth, bool fixedSampleLocations) |
Specifies immutable texture format and shape. More... | |
void | uninitialize () |
Uninitializes renderer object. More... | |
bool | unmapIndexBuffer () |
Unmaps index buffer. More... | |
bool | unmapVertexBuffer () |
Unmaps vertex buffer. More... | |
~Renderer () | |
Static Public Member Functions | |
static ClearMode | getClearMode (GraphicsFormat format) |
Friends | |
RenderingChangeStateFlag & | operator &= (RenderingChangeStateFlag &lhs, int rhs) |
And assignment operator for rendering change state flags. More... | |
RenderingChangeStateFlag & | operator^= (RenderingChangeStateFlag &lhs, int rhs) |
Xor assignment operator for rendering change state flags. More... | |
RenderingChangeStateFlag & | operator|= (RenderingChangeStateFlag &lhs, int rhs) |
Or assignment operator for rendering change state flags. More... | |
typedef void(* kanzi::Renderer::FramebufferCallback) (unsigned int frameBufferHandle) |
Callback prototype for setActiveFramebuffer.
Rendering change flag type.
Kanzi internally sets the bits to flag which rendering settings have changed.
Per color buffer clear setting.
|
strong |
|
explicit |
Creates a new renderer object.
kanzi::Renderer::~Renderer | ( | ) |
void kanzi::Renderer::resetFrame | ( | ) |
Resets frame for core renderer, that is, counters for logging rendering infos (triangle count etc.).
void kanzi::Renderer::reset | ( | ) |
Resets renderer, e.g. resets its caches and states and syncs renderer variables with actual GL states.
Initializes renderer object. Requires graphics context.
void kanzi::Renderer::uninitialize | ( | ) |
Uninitializes renderer object.
bool kanzi::Renderer::isInitialized | ( | ) | const |
Tells whether the renderer is initialized.
void kanzi::Renderer::setActiveGLGraphicsOutput | ( | GLGraphicsOutput * | glGraphicsOutput | ) |
Sets active surface context for renderer.
GLGraphicsOutput* kanzi::Renderer::getActiveGLGraphicsOutput | ( | ) | const |
Gets active surface context from renderer.
KzsGlGraphicsContext* kanzi::Renderer::getActiveGraphicsContext | ( | ) | const |
SurfaceClientAPI kanzi::Renderer::getActiveSurfaceClientAPI | ( | ) | const |
SurfaceColorSpace kanzi::Renderer::getActiveColorSpace | ( | ) | const |
Gets the active Color Space.
::KzsOpenGlVendor kanzi::Renderer::getActiveSurfaceVendor | ( | ) | const |
void kanzi::Renderer::enableState | ( | RendererState | state | ) |
Enables a specific renderer state.
void kanzi::Renderer::disableState | ( | RendererState | state | ) |
Disables a specific renderer state.
void kanzi::Renderer::setState | ( | RendererState | state, |
bool | enable | ||
) |
Enables or disables the state of a specific renderer state.
bool kanzi::Renderer::getState | ( | RendererState | state | ) | const |
Returns state of a specific renderer state.
void kanzi::Renderer::clear | ( | ) |
Clears currently bound framebuffer with requested buffers.
Buffers can be requested to be clered with addClearTarget() and addClearColor() functions.
void kanzi::Renderer::resetClearTarget | ( | ) |
Resets clear targets for renderer.
void kanzi::Renderer::addClearTarget | ( | GraphicsClearTarget | target | ) |
Sets a clearing target for renderer.
target | The buffer to clear, must be GraphicsClearTargetColor0, GraphicsClearTargetDepth or GraphicsClearTargetStencil |
|
static |
void kanzi::Renderer::addClearColor | ( | unsigned int | drawBuffer, |
uint32_t | red, | ||
uint32_t | green, | ||
uint32_t | blue, | ||
uint32_t | alpha | ||
) |
Register color clear for unsigned integer color buffer.
All registered clears are performed when clear() is called.
drawBuffer | Index of color buffer to clear (0..3). |
red | Clear color red channel value. |
green | Clear color green channel value. |
blue | Clear color blue channel value. |
alpha | Clear color alpha channel value. |
void kanzi::Renderer::addClearColor | ( | unsigned int | drawBuffer, |
int32_t | red, | ||
int32_t | green, | ||
int32_t | blue, | ||
int32_t | alpha | ||
) |
Register color clear for signed integer color buffer.
All registered clears are performed when clear() is called.
drawBuffer | Index of color buffer to clear (0..3). |
red | Clear color red channel value. |
green | Clear color green channel value. |
blue | Clear color blue channel value. |
alpha | Clear color alpha channel value. |
void kanzi::Renderer::addClearColor | ( | unsigned int | drawBuffer, |
float | red, | ||
float | green, | ||
float | blue, | ||
float | alpha | ||
) |
Register color clear for float color buffer.
All registered clears are performed when clear() is called.
drawBuffer | Index of color buffer to clear (0..3 for OpenGL ES 3, must be 0 for OpenGL ES 2). |
red | Clear color red channel value. |
green | Clear color green channel value. |
blue | Clear color blue channel value. |
alpha | Clear color alpha channel value. |
void kanzi::Renderer::addClearColor | ( | unsigned int | drawBuffer, |
ColorRGBA | colorRGBA | ||
) |
Register color clear for unsigned normalized color buffer.
All registered clears are performed when clear() is called.
drawBuffer | Index of color buffer to clear (0..3 for OpenGL ES 3, must be 0 for OpenGL ES 2). |
colorRGBA | RGBA clear color. |
void kanzi::Renderer::addClearColor | ( | unsigned int | drawBuffer, |
ClearMode | clearMode | ||
) |
Register color clear with value 0.
All registered clears are performed when clear() is called.
drawBuffer | Index of color buffer to clear (0..3 for OpenGL ES 3, must be 0 for OpenGL ES 2). |
clearMode | ClearMode of the color buffer. |
void kanzi::Renderer::removeClearTarget | ( | GraphicsClearTarget | target | ) |
Removes a clearing target for renderer.
bool kanzi::Renderer::hasClearTarget | ( | GraphicsClearTarget | target | ) | const |
Sees if renderer has specific clear target.
bool kanzi::Renderer::isClearEnabled | ( | ) | const |
See if clear is enabled.
void kanzi::Renderer::setClearColor | ( | ColorRGBA | colorRGBA | ) |
Set clear color for renderer.
void kanzi::Renderer::setColorWriteMode | ( | GraphicsColorWriteMode | colorWriteMode | ) |
Set a color write mode for renderer.
GraphicsColorWriteMode kanzi::Renderer::getColorWriteMode | ( | ) | const |
Gets current color write mode from renderer.
void kanzi::Renderer::setScissorTest | ( | optional< ViewportRectangle > | scissor | ) |
Sets scissor test state and optional rectangle for renderer.
void kanzi::Renderer::setClearDepthValue | ( | float | clearDepthValue | ) |
Set clear depth for renderer.
void kanzi::Renderer::setClearStencil | ( | int | stencilClearValue | ) |
Set clear stencil for renderer.
void kanzi::Renderer::setViewport | ( | ViewportRectangle | viewport | ) |
Sets an active view port for renderer.
void kanzi::Renderer::setVertexBuffer | ( | unsigned int | vertexBuffer | ) |
Sets a vertex buffer for renderer.
void kanzi::Renderer::setIndexBuffer | ( | unsigned int | indexBuffer | ) |
Sets an index buffer for renderer.
void kanzi::Renderer::drawBuffers | ( | ) |
Render buffers that are currently bound.
void kanzi::Renderer::setVertexCount | ( | size_t | vertexCount | ) |
Sets vertex count for renderer.
void kanzi::Renderer::setIndexCount | ( | unsigned int | indexCount | ) |
Sets the index count for renderer.
void kanzi::Renderer::setIndexData | ( | void * | indexData | ) |
Sets index data for renderer.
void kanzi::Renderer::setIndexData | ( | void * | indexData, |
IndexBufferType | type | ||
) |
Sets index data for renderer.
void kanzi::Renderer::setPrimitiveType | ( | GraphicsPrimitiveType | prmitiveType | ) |
Sets the primitive type for renderer.
int kanzi::Renderer::getUniformLocationSlow | ( | const string & | uniformName | ) | const |
Finds uniform location for given uniform from active shader.
The data will be stored to uniform cache and fetched from in subsequent calls.
unsigned int kanzi::Renderer::getUniformArrayLength | ( | const char * | uniformName | ) | const |
Returns array uniform length for given uniform.
If uniform with given name is not found, returns 0. If uniform is not an array, returns 1.
void kanzi::Renderer::setUniformIntArray | ( | int | uniformLocation, |
size_t | count, | ||
const int * | values | ||
) |
Sets integer array with dimension to renderer using currently bound shader.
uniformLocation | Uniform location ID. |
count | Number of entries to set. |
values | Values to set. |
void kanzi::Renderer::setUniformFloatArray | ( | int | uniformLocation, |
size_t | count, | ||
const float * | values | ||
) |
Sets float array with dimension to renderer using currently bound shader.
uniformLocation | Uniform location ID. |
count | Number of entries to set. |
values | Values to set. |
void kanzi::Renderer::setUniformVecArray | ( | int | uniformLocation, |
size_t | count, | ||
const Vector2 * | values | ||
) |
Sets vector array with dimension to renderer, using currently bound shader.
uniformLocation | Uniform location ID. |
count | Number of entries to set. |
values | Values to set. |
void kanzi::Renderer::setUniformVecArray | ( | int | uniformLocation, |
size_t | count, | ||
const Vector3 * | values | ||
) |
Sets vector array with dimension to renderer, using currently bound shader.
uniformLocation | Uniform location ID. |
count | Number of entries to set. |
values | Values to set. |
void kanzi::Renderer::setUniformVecArray | ( | int | uniformLocation, |
size_t | count, | ||
const Vector4 * | values | ||
) |
Sets vector array with dimension to renderer, using currently bound shader.
uniformLocation | Uniform location ID. |
count | Number of entries to set. |
values | Values to set. |
void kanzi::Renderer::setUniformColorArray | ( | int | uniformLocation, |
size_t | count, | ||
const ColorRGBA * | values | ||
) |
Sets vector array with dimension to renderer, using currently bound shader.
uniformLocation | Uniform location ID. |
count | Number of entries to set. |
values | Values to set. |
void kanzi::Renderer::setUniformMatArray | ( | int | uniformLocation, |
size_t | count, | ||
const Matrix3x3 * | values | ||
) |
Sets matrix array with dimension to renderer, using currently bound shader.
uniformLocation | Uniform location ID. |
count | Number of entries to set. |
values | Values to set. |
void kanzi::Renderer::setUniformMatArray | ( | int | uniformLocation, |
size_t | count, | ||
const Matrix4x4 * | values | ||
) |
Sets matrix array with dimension to renderer, using currently bound shader.
uniformLocation | Uniform location ID. |
count | Number of entries to set. |
values | Values to set. |
|
inline |
Sets integer uniform for renderer, using currently bound shader.
value | Value to set. |
uniformLocation | Uniform location ID. |
|
inline |
Sets floating point uniform for renderer, using currently bound shader.
value | Value to set. |
uniformLocation | Uniform location ID. |
|
inline |
Sets Vector2 uniform for renderer, using currently bound shader.
value | Value to set. |
uniformLocation | Uniform location ID. |
|
inline |
Sets Vector3 uniform for renderer, using currently bound shader.
value | Value to set. |
uniformLocation | Uniform location ID. |
|
inline |
Sets Vector4 uniform for renderer, using currently bound shader.
value | Value to set. |
uniformLocation | Uniform location ID. |
|
inline |
Sets ColorRGBA uniform for renderer, using currently bound shader.
value | Value to set. |
uniformLocation | Uniform location ID. |
|
inline |
Sets Matrix3x3 uniform for renderer, using currently bound shader.
value | Value to set. |
uniformLocation | Uniform location ID. |
|
inline |
Sets Matrix4x4 uniform for renderer, using currently bound shader.
value | Value to set. |
uniformLocation | Uniform location ID. |
void kanzi::Renderer::setActiveScalar | ( | GraphicsScalar | scalar, |
float | value | ||
) |
Switches an scalar value for renderer if necessary, e.g. depth clear value.
float kanzi::Renderer::getActiveScalar | ( | GraphicsScalar | scalar | ) | const |
Returns a current scalar value from renderer.
void kanzi::Renderer::setBlendMode | ( | GraphicsBlendMode | blendMode | ) |
Sets a blend mode for renderer.
GraphicsBlendMode kanzi::Renderer::getBlendMode | ( | ) | const |
Gets a blend mode for renderer.
void kanzi::Renderer::setCullMode | ( | GraphicsCullMode | cullMode | ) |
Sets a cull mode for renderer.
GraphicsCullMode kanzi::Renderer::getCullMode | ( | ) | const |
Gets a cull mode for renderer.
void kanzi::Renderer::setDepthTest | ( | GraphicsCompareFunction | depthMode | ) |
Sets a depth pass mode for renderer.
GraphicsCompareFunction kanzi::Renderer::getDepthTest | ( | ) | const |
Gets a depth pass mode for renderer.
void kanzi::Renderer::setStencilFunction | ( | GraphicsCompareFunction | stencilCompareFunction, |
unsigned int | referenceValue, | ||
unsigned int | maskValue | ||
) |
Sets a stencil function for renderer.
void kanzi::Renderer::setStencilOperation | ( | GraphicsStencilOperation | stencilFailOperation, |
GraphicsStencilOperation | stencilPassDepthFailOperation, | ||
GraphicsStencilOperation | stencilPassDepthPassOperation | ||
) |
Sets a stencil operation for renderer.
void kanzi::Renderer::getStencilFunction | ( | GraphicsCompareFunction * | out_stencilCompareFunction, |
unsigned int * | out_referenceValue, | ||
unsigned int * | out_maskValue | ||
) | const |
Gets stencil function from renderer.
void kanzi::Renderer::getStencilOperation | ( | GraphicsStencilOperation * | out_stencilFailOperation, |
GraphicsStencilOperation * | out_stencilPassDepthFailOperation, | ||
GraphicsStencilOperation * | out_stencilPassDepthPassOperation | ||
) | const |
Gets a stencil operation from renderer.
void kanzi::Renderer::setMatrix | ( | FixedMatrix | matrixType, |
Matrix4x4 | matrix | ||
) |
Sets matrix for a renderer.
Matrix4x4 kanzi::Renderer::getMatrix | ( | FixedMatrix | matrixType | ) | const |
Gets a matrix from renderer.
void kanzi::Renderer::calculateProjectionCameraWorldMatrix | ( | ) |
Calculates projection * camera * world matrix.
void kanzi::Renderer::applyTransformationUniform | ( | ShaderProgram::FixedUniform | uniform, |
int | uniformLocation | ||
) |
Applies a single transformation uniform.
Repeatedly called by applyTransformation().
uniform | Uniform type. |
uniformLocation | Uniform location. |
void kanzi::Renderer::applyTransformation | ( | ShaderProgram & | shaderProgram | ) |
Applies transformations from renderer to GPU.
shaderProgram | Shader program in use. |
void kanzi::Renderer::applyTextureSizeUniforms | ( | ShaderTextureUniform | textureUniforms, |
unsigned int | textureWidth, | ||
unsigned int | textureHeight | ||
) |
Applies texture uniforms for the renderer.
void kanzi::Renderer::applyTexture | ( | TextureType | type, |
unsigned int | textureUnit, | ||
unsigned int | handle | ||
) |
Sets texture settings for given texture unit.
This only changes renderer state and does not issue GL calls. The texture unit state must be refreshed for the changes to take effect.
type | Type of the texture (texture target) to set. |
textureUnit | Texture unit to set. |
handle | Native texture handle. |
void kanzi::Renderer::detachTexture | ( | unsigned int | textureUnit | ) |
Detaches all texture information from given texture unit.
This only changes renderer state and does not issue GL calls. The texture unit state must be refreshed for the changes to take effect.
textureUnit | Texture unit to set. |
void kanzi::Renderer::setActiveTextureUnit | ( | unsigned int | textureUnit | ) |
Sets the currently active texture unit.
Takes effect immediately. Can be called by the user or is used internally when refreshing texture unit render context.
textureUnit | Texture unit to activate. |
void kanzi::Renderer::setUniformTexture | ( | int | uniformLocation, |
unsigned int | textureUnit | ||
) |
Sets the uniform for a texture based on current active texture unit.
This is essentially an alias for setting an integer uniform.
uniformLocation | Uniform location to apply. |
textureUnit | Texture unit for this uniform. |
unsigned int kanzi::Renderer::bindTexture | ( | TextureType | type, |
unsigned int | handle | ||
) |
Binds specified texture of specified type to currently active texture unit.
Takes effect immediately, and as a consequence, doesn't flag the texture unit render context dirty.
type | Type of texture to bind. |
handle | Native texture handle. |
unsigned int kanzi::Renderer::generateTexture | ( | ) |
Generates new texture for renderer.
void kanzi::Renderer::setTextureImage2D | ( | unsigned int | glTextureImageTarget, |
unsigned int | mipmapLevel, | ||
GraphicsFormat | format, | ||
unsigned int | width, | ||
unsigned int | height, | ||
const void * | data | ||
) |
Uploads texture data to GPU.
void kanzi::Renderer::setTextureSubImage2D | ( | unsigned int | glTextureImageTarget, |
unsigned int | mipmapLevel, | ||
GraphicsFormat | format, | ||
unsigned int | x, | ||
unsigned int | y, | ||
unsigned int | width, | ||
unsigned int | height, | ||
const void * | data | ||
) |
Uploads texture subimage data to GPU.
void kanzi::Renderer::textureStorage | ( | TextureType | type, |
int | sampleCount, | ||
int | mipmapLevelCount, | ||
GraphicsFormat | format, | ||
unsigned int | width, | ||
unsigned int | height, | ||
unsigned int | depth, | ||
bool | fixedSampleLocations | ||
) |
Specifies immutable texture format and shape.
void kanzi::Renderer::generateMipmaps | ( | TextureType | textureType | ) |
Generates mipmaps for currently bound texture.
void kanzi::Renderer::deleteTexture | ( | unsigned int | textureHandle | ) |
Deletes texture via renderer.
void kanzi::Renderer::setTextureAddressingMode | ( | TextureType | type, |
Sampler::AddressingMode | texAddress | ||
) |
Sets wrap mode for currently bound texture in current texture unit.
void kanzi::Renderer::setTextureFilter | ( | TextureType | type, |
Sampler::Filter | minificationFilter, | ||
Sampler::Filter | magnificationFilter, | ||
Sampler::MipmapMode | mipmapMode, | ||
float | anisotropy | ||
) |
Sets texture filter for currently bound texture in current texture unit.
type | Selects which texture to edit (current 2d, cubemap etc.) |
minificationFilter | Minification filter for texture. |
magnificationFilter | Magnification filter for texture. |
mipmapMode | Mipmap mode for the texture. |
anisotropy | Anisotropic filtering level for texture. Values <= 1.0f disable the feature. |
void kanzi::Renderer::setTextureSwizzleMask | ( | TextureType | target, |
const TextureSwizzleMask & | mask | ||
) |
Sets texture swizzle mask for currently bound alpha only texture in current texture unit.
This method makes all the color channels map to the alpha channel. Note: Use this method only for GraphicsFormatALPHA8_UNORM texture format, and if the native OpenGL driver supports GL_ARB_texture_swizzle or GL_EXT_texture_swizzle extension.
target | Target texture type. |
mask | Swizzle mask for the texture. This can be a custom swizzle mask or chosen from the predefined ones: SwizzleMaskRGBToLuminanceAlpha and SwizzleMaskLuminanceToRGBA. |
void kanzi::Renderer::setTextureCompare | ( | TextureType | type, |
bool | isEnabled, | ||
GraphicsCompareFunction | textureCompareFunction | ||
) |
Sets texture comparison function for currently bound texture in current texture unit.
type | Selects which texture to edit (current 2d, cubemap etc.) |
isEnabled | If true, depth comparison mode is enabled for the texture, otherwise depth comparison is disabled. |
textureCompareFunction | Selects which texture comparison function to use. |
void kanzi::Renderer::setPixelStorePack | ( | unsigned int | packBytes | ) |
Sets pack row alignment in memory.
Default value is 4.
packBytes | Value for byte alignment. |
void kanzi::Renderer::setPixelStoreUnpack | ( | unsigned int | unpackBytes | ) |
Sets unpack row alignment in memory.
Default value is 4.
unpackBytes | Value for byte alignment. |
bool kanzi::Renderer::setPixelStoreUnpackRowLength | ( | unsigned int | rowLength | ) |
Sets the unpack row length.
If nonzero, specifies the number of bytes per row of image data. Use when image data rows are not aligned exactly at bytes per pixel multiplied by image width. Default value is 0.
rowLength | Number of bytes per image row. |
unsigned int kanzi::Renderer::createShader | ( | ShaderType | type | ) |
Creates shader.
unsigned int kanzi::Renderer::createShaderProgram | ( | ) |
Creates shader program. Returns the handle to the program.
void kanzi::Renderer::refreshRenderContext | ( | bool | geometryRendering | ) |
Refreshes render context to contain all proper states.
void kanzi::Renderer::attachShaderToProgram | ( | unsigned int | programHandle, |
unsigned int | shaderHandle | ||
) |
Attaches shader to program.
void kanzi::Renderer::detachShaderFromProgram | ( | unsigned int | programHandle, |
unsigned int | shaderHandle | ||
) |
Detaches shader from program.
void kanzi::Renderer::bindAttributeToLocation | ( | unsigned int | programHandle, |
unsigned int | locationIndex, | ||
kzString | attributeName | ||
) |
Binds attribute to given location index, for example "kzPosition" to 0.
bool kanzi::Renderer::linkShaderProgram | ( | unsigned int | programHandle, |
kzString | shaderName | ||
) |
Links shader program with given handle.
bool kanzi::Renderer::compileSourceShader | ( | ShaderType | shaderType, |
unsigned int | shaderHandle, | ||
const char *const | shaderCode, | ||
string_view | shaderName | ||
) |
Compiles source shader and deploys it to GPU.
bool kanzi::Renderer::deployBinaryShader | ( | unsigned int | count, |
const unsigned int * | shaders, | ||
unsigned int | binaryFormat, | ||
const void * | data, | ||
size_t | dataSize | ||
) |
Deploys binary shaders.
bool kanzi::Renderer::deployBinaryProgram | ( | unsigned int | program, |
unsigned int | binaryFormat, | ||
const void * | data, | ||
size_t | dataSize | ||
) |
Initializes shader program from program binary data.
Program binaries are vendor, device and driver version specific. If deployBinaryProgram() succeeds, program is in linked state. If deployBinaryProgram() fails, program remains in previous state. See
program | GL shader program name to initialize from program binary data. |
binaryFormat | Binary format for data. |
data | Program binary data. |
dataSize | Number of bytes in data. |
string kanzi::Renderer::getProgramBinary | ( | unsigned int | program, |
unsigned int & | binaryFormat | ||
) |
Gets binary representation for GL shader program.
Program binaries are vendor, device and driver version specific.
program | GL shader program name to get program binary from. |
binaryFormat | GL program binary format will be returned here, or KZS_GL_NONE if no program binary format was supported by graphics device. |
void kanzi::Renderer::deleteShaderProgram | ( | unsigned int | programHandle | ) |
Deletes shader program and attached shaders.
void kanzi::Renderer::deleteShader | ( | unsigned int | shaderHandle | ) |
Deletes shader.
unsigned int kanzi::Renderer::generateFramebuffer | ( | ) |
Generates new texture for renderer.
void kanzi::Renderer::deleteFramebuffer | ( | unsigned int | frameBufferHandle | ) |
Deletes framebuffer.
void kanzi::Renderer::bindFramebuffer | ( | unsigned int | frameBufferHandle | ) |
Binds framebuffer.
bool kanzi::Renderer::isFramebufferComplete | ( | ) |
Checks if the framebuffer status is complete.
If framebuffer status is not complete, error code will be logged.
void kanzi::Renderer::invalidateFramebufferAttachments | ( | FramebufferTarget | target, |
bitset< Surface::APIAttachmentCount > | attachments | ||
) | const |
Invalidates framebuffer attachments.
After invalidation, contents of specified attachments are undefined. The graphics driver may perform performance and memory optimizations when it knows that contents of specific attachments are no longer needed.
target | Framebuffer target to invalidate. |
attachments | Bits from Framebuffer::AttachmentBit to specify attachments to invalidate. Surfaces that are attached to these attachment points will be invalidated. |
void kanzi::Renderer::framebufferTexture2D | ( | unsigned int | glTextureImageTarget, |
Surface::APIAttachment | attachment, | ||
unsigned int | textureHandle, | ||
unsigned int | mipmapLevel, | ||
unsigned int | implicitSampleCount | ||
) |
Attaches texture to the currently active Framebuffer.
glTextureImageTarget | GL texture image target. For cubemap texture this specifies the cubemap face. |
attachment | Framebuffer attachment point where texture should be attached to. |
textureHandle | GL texture object name to attach. |
mipmapLevel | Mipmap level of texture to attach. |
implicitSampleCount | When implicit multisample textures are used, this specifies the number of samples to use. When implicit multisample textures are not used, value here must be 0. |
void kanzi::Renderer::framebufferRenderbuffer | ( | Surface::APIAttachment | attachment, |
unsigned int | renderbuffer | ||
) |
Attaches renderbuffer to the currently active Framebuffer.
attachment | Framebuffer attachment point where renderbuffer should be attached to. |
renderbuffer | GL renderbuffer object name to attach. |
unsigned int kanzi::Renderer::generateRenderbuffer | ( | ) |
Generates new texture for renderer.
void kanzi::Renderer::deleteRenderbuffer | ( | unsigned int | renderbuffer | ) |
Deletes framebuffer.
renderbuffer | GL renderbuffer object name to delete. |
void kanzi::Renderer::bindRenderbuffer | ( | unsigned int | renderbuffer | ) |
Binds framebuffer for editing.
renderbuffer | Gl renderbuffer object name to bind. |
void kanzi::Renderer::renderbufferStorage | ( | GraphicsFormat | format, |
unsigned int | width, | ||
unsigned int | height, | ||
unsigned int | explicitSampleCount | ||
) |
Sets storage for currently bound renderbuffer.
format | GraphicsFormat for the renderbuffer. |
width | Width for the renderbuffer in pixels. |
height | Height for the renderbuffer in pixels. |
explicitSampleCount | Number of multisample samples. |
unsigned int kanzi::Renderer::generateBuffer | ( | ) |
Generates new index or vertex buffer or uniform buffer object name.
void kanzi::Renderer::setVertexBufferData | ( | size_t | dataSize, |
const void * | data | ||
) |
Sets static vertex buffer data.
void kanzi::Renderer::setIndexBufferData | ( | size_t | dataSize, |
const void * | data | ||
) |
Sets static index buffer data.
void kanzi::Renderer::setVertexBufferSubData | ( | unsigned int | offset, |
size_t | size, | ||
const void * | data | ||
) |
Uploads vertex buffer subdata with given offset and size.
void kanzi::Renderer::setIndexBufferSubData | ( | unsigned int | offset, |
size_t | size, | ||
const void * | data | ||
) |
Uploads index buffer subdata with given offset and size.
void kanzi::Renderer::deleteBuffer | ( | unsigned int | handle | ) |
Deletes vertex or index buffer.
void* kanzi::Renderer::mapVertexBuffer | ( | unsigned int | size, |
BufferAccessMode | mode | ||
) |
Maps vertex buffer.
size | Size in bytes of the mapped area of the buffer. |
mode | Buffer access mode, which can be read, write, or both. |
bool kanzi::Renderer::unmapVertexBuffer | ( | ) |
Unmaps vertex buffer.
void* kanzi::Renderer::mapIndexBuffer | ( | unsigned int | size, |
BufferAccessMode | mode | ||
) |
Maps index buffer.
size | Size in bytes of the mapped area of the buffer. |
mode | Buffer access mode, which can be read, write, or both. |
bool kanzi::Renderer::unmapIndexBuffer | ( | ) |
Unmaps index buffer.
void kanzi::Renderer::enableVertexAttributeArray | ( | unsigned int | attributeHandle | ) |
Sets vertex attribute array to be enabled.
attributeHandle | index to attribute to enable |
void kanzi::Renderer::disableVertexAttributeArray | ( | unsigned int | attributeHandle | ) |
Sets vertex attribute array to be disabled.
attributeHandle | index to attribute to disable |
void kanzi::Renderer::applyVertexAttributeArrays | ( | ) |
Update vertex attribute configurations to the graphics driver.
This should be called before each draw call if vertex attribute configuration has been changed with any of enableVertexAttributeArray(), disableVertexAttributeArray() or setVertexBufferPointer().
void kanzi::Renderer::setVertexBufferPointer | ( | unsigned int | location, |
int | dimension, | ||
GraphicsDataType | attributeDataType, | ||
int | stride, | ||
const void * | data | ||
) |
Sets attribute data source for currently enabled vertex attribute array.
location | Attribute location. |
dimension | Number of vector components in the attribute. Valid values are 1, 2, 3 and 4. |
attributeDataType | Data type for attribute. |
stride | Stride, number of bytes to get from one vertex to the next vertex. Valid values are positive integers. |
data | If current vertex buffer is non-zero, this is offset in bytes to current vertex buffer GPU memory. If current vertex buffer is zero, this is CPU memory address to attribute data. |
void kanzi::Renderer::setActiveShaderHandle | ( | unsigned int | activeShaderHandle, |
const int * | vertexAttributeMap | ||
) |
Sets active shader for renderer.
unsigned int kanzi::Renderer::getActiveShaderHandle | ( | ) | const |
Gets active shader handle from renderer.
const int* kanzi::Renderer::getActiveShaderAttributeMap | ( | ) | const |
Gets active vertex attribute map from renderer.
void kanzi::Renderer::setDefaultFramebuffer | ( | unsigned int | frameBufferHandle | ) |
Specifies default frame buffer (screen) for renderer.
void kanzi::Renderer::setActiveFramebuffer | ( | unsigned int | frameBufferHandle | ) |
Sets active frame buffer for renderer.
frameBufferHandle | Handle to bind for rendering. |
void kanzi::Renderer::setColorBufferCount | ( | unsigned int | colorBufferCount | ) |
Sets the number of draw buffers for currently active framebuffer.
colorBufferCount | Number of color attachments. |
void kanzi::Renderer::resetActiveFramebuffer | ( | ) |
Resets active frame buffer for renderer to default (screen).
void kanzi::Renderer::setActiveFramebufferCallback | ( | FramebufferCallback | callbackFunction | ) |
Sets callback function that is called after setActiveFramebuffer.
unsigned int kanzi::Renderer::getActiveFramebuffer | ( | ) | const |
Gets active frame buffer handle from.
void kanzi::Renderer::readPixels | ( | int | x, |
int | y, | ||
int | width, | ||
int | height, | ||
GraphicsFormat | format, | ||
void * | pixels | ||
) |
Reads the pixels from the current frame buffer.
GraphicsFormat kanzi::Renderer::getNativePixelReadFormat | ( | ) |
Returns native pixel read format from renderer.
void kanzi::Renderer::beginMaterialSetup | ( | ) |
Begins a material for renderer.
void kanzi::Renderer::endMaterialSetup | ( | ) |
Ends a material for renderer.
void kanzi::Renderer::beginVertexArray | ( | ) |
Begins set of vertex arrays.
void kanzi::Renderer::setVertexArrayData | ( | VertexAttribute::Semantic | attribute, |
const void * | data | ||
) |
Sets vertex array data.
void kanzi::Renderer::setVertexArrayData | ( | VertexAttribute::Semantic | attribute, |
GraphicsDataType | dataType, | ||
const void * | data | ||
) |
void kanzi::Renderer::endVertexArray | ( | GraphicsPrimitiveType | primitiveType, |
unsigned int | count | ||
) |
Ends vertex array. Renders the specified vertex lists and finishes the usage.
unsigned int kanzi::Renderer::getCurrentVertexArrayFlags | ( | ) | const |
Gets the current vertex array flags from renderer.
const void* kanzi::Renderer::getCurrentVertexArrayAttributeData | ( | VertexAttribute::Semantic | attribute | ) | const |
Gets current vertex array data from renderer. Reset when switching the shader.
void kanzi::Renderer::setLineWidth | ( | float | lineWidth | ) |
Sets line rendering width for renderer.
void kanzi::Renderer::flush | ( | ) | const |
Flushes the GPU pipeline, forces all commands to be executed in finite time.
void kanzi::Renderer::pushStatistics | ( | ) |
void kanzi::Renderer::popStatistics | ( | ) |
unsigned int kanzi::Renderer::getIndexCount | ( | ) | const |
Gets index count from renderer.
unsigned int kanzi::Renderer::getTriangleCount | ( | ) | const |
Gets triangle count from renderer.
size_t kanzi::Renderer::getVertexCount | ( | ) | const |
Gets vertex count from renderer.
unsigned int kanzi::Renderer::getBatchCount | ( | ) | const |
Gets batch count from renderer (number of draw calls, such as drawElements and drawArrays).
unsigned int kanzi::Renderer::getShaderSwitchCount | ( | ) | const |
Gets shader switches.
unsigned int kanzi::Renderer::getUniformSendCount | ( | ) | const |
Gets uniform sending count from renderer.
unsigned int kanzi::Renderer::getTextureSwitchCount | ( | ) | const |
Gets number of texture switches from renderer.
unsigned int kanzi::Renderer::getFramebufferSwitchCount | ( | ) | const |
Gets number of framebuffer switches from renderer.
unsigned int kanzi::Renderer::getBufferSwitchCount | ( | ) | const |
Gets number of buffer switches (VBO + IBO) from renderer.
unsigned int kanzi::Renderer::getHeavyweightCallCount | ( | ) | const |
Returns potential heavyweight calls such as buffer or texture updates and glFinish from renderer.
Potential due to GPU implementation may decide when heavyweight occurs (e.g. reading cannot be performed before write operation finishes).
bool kanzi::Renderer::isShaderBinaryFormatSupported | ( | unsigned int | glShaderBinaryFormat | ) | const |
Checks if GL shader binary format is supported.
glShaderBinaryFormat | GL shader binary format to check |
bool kanzi::Renderer::isProgramBinaryFormatSupported | ( | unsigned int | glProgramBinaryFormat | ) | const |
Checks if GL program binary format is supported.
glProgramBinaryFormat | GL program binary format to check |
void kanzi::Renderer::setGPUCallsEnabled | ( | bool | enabled | ) |
Sets GPU calls enabled / disabled.
bool kanzi::Renderer::GPUCallsIsEnabled | ( | ) | const |
Checks if GPU calls are enabled.
bool kanzi::Renderer::isSupported | ( | RendererSupport | feature | ) | const |
Is coverage buffer supported or not.
feature | Feature to check. |
Multisample kanzi::Renderer::getMultisampleSupport | ( | ) | const |
Return support for multisample textures and renderbuffers.
ProgramBinary kanzi::Renderer::getProgramBinarySupport | ( | ) | const |
Return support for program binaries.
HalfFloatTexture kanzi::Renderer::getHalfFloatTextureSupport | ( | ) | const |
Return support for half float texture format.
|
inline |
Return support for half-float vertex attribute.
|
inline |
Indicates whether half-float vertex attribute is supported in any fashion.
FloatTexture kanzi::Renderer::getFloatTextureSupport | ( | ) | const |
Return support for float texture format.
TexStorage kanzi::Renderer::getTexStorageSupport | ( | ) | const |
Return support for tex storage.
DrawBuffers kanzi::Renderer::getDrawBuffersSupport | ( | ) | const |
Return support for draw buffers.
bool kanzi::Renderer::getTexStorageSupport | ( | TextureType | type, |
unsigned int | samples | ||
) | const |
Return support for tex storage.
type | Texture type requested. |
samples | Sample count requested. |
void* kanzi::Renderer::createImageObject | ( | void * | dataPointer, |
int | target, | ||
int * | attributes | ||
) |
Creates image object, returns NULL if no hardware support.
Image object can be bound as texture input. Requires surface to be set for renderer via setSurface, otherwise throws an error.
void kanzi::Renderer::deleteImageObject | ( | void * | imageObject | ) |
Deletes image object created with createImageObject.
void kanzi::Renderer::setImageTargetTexture | ( | TextureType | type, |
void * | imageObject | ||
) |
Sets image object bound to currently bound texture (type).
float kanzi::Renderer::getMaximumAnisotropy | ( | ) | const |
Gets maximum anisotropy.
unsigned int kanzi::Renderer::getMaximumTextureSize | ( | TextureType | textureType | ) | const |
Gets maximum texture side size.
unsigned int kanzi::Renderer::getMaximumRenderbufferSize | ( | ) | const |
Gets maximum renderbuffer size.
unsigned int kanzi::Renderer::getMaximumViewportWidth | ( | ) | const |
Gets maximum viewport width.
unsigned int kanzi::Renderer::getMaximumViewportHeight | ( | ) | const |
Gets maximum viewport height.
unsigned int kanzi::Renderer::getMaximumVertexAttributeCount | ( | ) | const |
Gets maximum vertex attribute count.
unsigned int kanzi::Renderer::getMaximumSampleCount | ( | ) | const |
Gets maximum sample count for multisample.
int kanzi::Renderer::getColorReadFormat | ( | ) |
Returns GL constant for the color read format used in reading back data from framebuffer (RendererReadPixels).
int kanzi::Renderer::getColorReadType | ( | ) |
Returns GL constant for the color read type used in reading back data from framebuffer (RendererReadPixels).
void kanzi::Renderer::invalidateAllocations | ( | ) |
Invalidates all handles from renderer without affecting GL state.
void kanzi::Renderer::logOpenGLInformation | ( | unsigned int | flags | ) | const |
Logs information about renderer capabilities.
void kanzi::Renderer::resolveMultisample | ( | NativeFramebufferHandle | sourceFramebuffer, |
NativeFramebufferHandle | destinationFramebuffer, | ||
unsigned int | srcOffsetX, | ||
unsigned int | srcOffsetY, | ||
unsigned int | srcWidth, | ||
unsigned int | srcHeight, | ||
unsigned int | dstOffsetX, | ||
unsigned int | dstOffsetY, | ||
unsigned int | dstWidth, | ||
unsigned int | dstHeight, | ||
bool | color, | ||
bool | depth, | ||
bool | stencil | ||
) |
Resolve multisample framebuffer.
Performs a blit from source framebuffer into destination framebuffer. This has implicit effect of resolving multisample samples.
sourceFramebuffer | Source framebuffer handle. |
destinationFramebuffer | Destination framebuffer handle. |
srcOffsetX | Copied area x offset in source framebuffer. |
srcOffsetY | Copied area y offset in source framebuffer. |
srcWidth | Copied area width in source framebuffer. |
srcHeight | Copied area height in source framebuffer. |
dstOffsetX | Copied area x offset in destination framebuffer. |
dstOffsetY | Copied area y offset in destination framebuffer. |
dstWidth | Copied area width in destination framebuffer. |
dstHeight | Copied area height in destination framebuffer. |
color | Set to true to resolve color channel. |
depth | Set to true to resolve depth channel. |
stencil | Set to true to resolve stencil channel. |
|
inline |
Resolve multisample framebuffer.
Performs a blit from source framebuffer into destination framebuffer. This has implicit effect of resolving multisample samples. Only resolves color buffer.
sourceFramebuffer | Source framebuffer handle. |
destinationFramebuffer | Destination framebuffer handle. |
srcOffsetX | Copied area x offset in source framebuffer. |
srcOffsetY | Copied area y offset in source framebuffer. |
srcWidth | Copied area width in source framebuffer. |
srcHeight | Copied area height in source framebuffer. |
dstOffsetX | Copied area x offset in destination framebuffer. |
dstOffsetY | Copied area y offset in destination framebuffer. |
dstWidth | Copied area width in destination framebuffer. |
dstHeight | Copied area height in destination framebuffer. |
void kanzi::Renderer::resolveMultisample | ( | Texture & | src, |
Texture & | dst, | ||
unsigned int | offsetX, | ||
unsigned int | offsetY, | ||
unsigned int | width, | ||
unsigned int | height, | ||
bool | color, | ||
bool | depth | ||
) |
Resolve multisample samples from source texture into destination texture.
src | Source texture (with multisampling enabled). |
dst | Destination texture (with multisampling disabled). |
offsetX | Copied area x offset both in source and target texture. |
offsetY | Copied area y offset both in source and target texture. |
width | Width of the area to be copied from source to destination. |
height | Height of the area to be copied from source to destination. |
color | Set to true to resolve color channel. |
depth | Set to true to resolve depth channel. |
|
inline |
Resolve multisample samples from source texture into destination texture.
Only resolves color buffer.
src | Source texture (with multisampling enabled). |
dst | Destination texture (with multisampling disabled). |
offsetX | Copied area x offset both in source and target texture. |
offsetY | Copied area y offset both in source and target texture. |
width | Width of the area to be copied from source to destination. |
height | Height of the area to be copied from source to destination. |
|
inline |
Gets current viewport rectangle from renderer.
|
inline |
Gets current scissor rectangle from renderer.
The rectangle is returned even if scissor test is not enabled. In this situation it is the last set scissor rectangle.
|
inline |
Enable a renderer workaround.
|
inline |
Disable a renderer workaround.
|
inline |
Return if workaround is enabled or not.
|
inline |
Set workaround enable state to true or false.
GraphicsFormat kanzi::Renderer::findValidTextureFormat | ( | GraphicsFormat | format, |
unsigned int | features | ||
) | const |
Find a valid texture format which is supported by graphics adapter and is compatible with specified format.
Returned format must be binary compatible with the format parameter. For example, input ETC1 format can return ETC2 format).
format | Format that result format should be compatible with. |
features | Usage bits that should be supported by the format. |
unsigned int kanzi::Renderer::getFeatures | ( | GraphicsFormat | format | ) | const |
Describes what the specified format can be used for in the specified renderer.
bool kanzi::Renderer::supports | ( | GraphicsFormat | format, |
unsigned int | features | ||
) | const |
Returns whether format supports requested features.
bool kanzi::Renderer::supportsTexture | ( | GraphicsFormat | format | ) | const |
Returns whether format can be used as texture by the specified renderer.
bool kanzi::Renderer::supportsRenderbuffer | ( | GraphicsFormat | format | ) | const |
Returns whether format can be used as renderbuffer by the specified renderer.
bool kanzi::Renderer::supportsColorAttachment | ( | GraphicsFormat | format | ) | const |
Returns whether format can be used as color attachment in framebuffers.
bool kanzi::Renderer::supportsDepthStencilAttachment | ( | GraphicsFormat | format | ) | const |
Returns whether format can be used as depth/stencil attachment in framebuffers.
GraphicsFormat kanzi::Renderer::getFallback | ( | GraphicsFormat | format, |
unsigned int | usageFlags | ||
) | const |
Returns a fallback format which supports specified usage flags.
GraphicsFormat kanzi::Renderer::getDepthStencilFormatForRenderbuffer | ( | bool | depth, |
bool | stencil | ||
) | const |
Returns a depth/stencil renderbuffer format which is supported by renderer.
GraphicsFormat kanzi::Renderer::getDepthStencilFormatForTexture | ( | bool | depth, |
bool | stencil | ||
) | const |
Returns a depth/stencil texture format which is supported by renderer.
void kanzi::Renderer::applyAttributePointer | ( | unsigned int | location, |
int | dimension, | ||
GraphicsDataType | dataType, | ||
int | stride, | ||
const void * | data | ||
) | const |
For given vertex attribute, specified by attribute location, configures attribute dimension, datatype, stride and starting offset in current vertex buffer.
location | Attribute location to modify. |
dimension | Dimension for attribute. Valid values are 1, 2, 3 and 4. |
dataType | Data type for attribute. |
stride | Stride for attribute. Valid values are positive integers. |
data | Starting offset in current vertex buffer GPU memory for attribute data. If current vertex buffer is 0, this is starting address in CPU memory for attribute data. |
void kanzi::Renderer::getGLFormatTriplet | ( | GraphicsFormat | format, |
unsigned int | features, | ||
unsigned int * | out_glFormat, | ||
unsigned int * | out_glInternalFormat, | ||
unsigned int * | out_glType | ||
) | const |
Returns GL API format, internal format, type triplet for given Format.
bool kanzi::Renderer::supportsTexStorage | ( | GraphicsFormat | format, |
unsigned int | features | ||
) | const |
Returns true if graphics format supports texture storage.
void kanzi::Renderer::clearUniformCaches | ( | ) |
Free memory used by uniform caches.
void kanzi::Renderer::advanceGlobalTime | ( | chrono::milliseconds | deltaTime | ) |
Advances renderer wall clock with time delta.
deltaTime | Wall clock delta time. |
chrono::milliseconds kanzi::Renderer::getGlobalTime | ( | ) | const |
Gets wall clock time in milliseconds since program start.
int kanzi::Renderer::getGlesVersion | ( | ) | const |
Returns supported OpenGL ES version number.
Version is encoded into integer with the following formula: major version times 100 plus minor version times ten. For example, value 310 would mean version 3.1.
bool kanzi::Renderer::getLogging | ( | ) | const |
Returns current OpenGL API call logging setting.
bool kanzi::Renderer::getDumpStateOnDrawCalls | ( | ) | const |
Returns current dump state on draw calls setting.
void kanzi::Renderer::setLogging | ( | bool | enabled, |
bool | dumpStateOnDrawCalls | ||
) |
Sets OpenGL API call logging on/off.
enabled | New logging setting. |
dumpStateOnDrawCalls | New dump state on draw calls setting. |
|
friend |
And assignment operator for rendering change state flags.
lhs | Left-hand-side operand. |
rhs | Right-hand-side operand. |
|
friend |
Or assignment operator for rendering change state flags.
lhs | Left-hand-side operand. |
rhs | Right-hand-side operand. |
|
friend |
Xor assignment operator for rendering change state flags.
lhs | Left-hand-side operand. |
rhs | Right-hand-side operand. |