#include <kanzi/core.ui/platform/graphics_backend/gl/renderer.hpp>
Public Member Functions | |
Renderer (const KzcMemoryManager *memoryManager) | |
Creates a new renderer object. More... | |
~Renderer () | |
void | resetFrame () |
Resets frame for core renderer, that is, counters for logging rendering infos (triangle count etc.). More... | |
void | reset () |
Resets renderer, e.g. resets its caches and states and syncs renderer variables with actual GL states. More... | |
void | initialize (kzUint vertexBufferPoolSize, kzUint indexBufferPoolSize) |
Initializes renderer object. Requires graphics context. More... | |
void | uninitialize () |
Uninitializes renderer object. More... | |
bool | isInitialized () const |
Tells whether the renderer is initialized. More... | |
void | setActiveGraphicsOutput (GlGraphicsOutput *glGraphicsOutput) |
Sets active surface context for renderer. More... | |
GlGraphicsOutput * | getActiveGraphicsOutput () const |
Gets active surface context from renderer. More... | |
KzsWindow * | getActiveWindow () const |
KzsSurface * | getActiveSurface () const |
KzsGlGraphicsContext * | getActiveGraphicsContext () const |
enum KzsSurfaceType | getActiveSurfaceType () const |
::KzsOpenGlVendor | getActiveSurfaceVendor () const |
void | enableState (State state) |
Enables a specific renderer state. More... | |
void | disableState (State state) |
Disables a specific renderer state. More... | |
void | setState (State state, bool enable) |
Enables or disables the state of a specific renderer state. More... | |
bool | getState (State state) const |
Returns state of a specific renderer state. More... | |
void | clear () |
Clears currently bound framebuffer with requested buffers. More... | |
void | resetClearTarget () |
Resets clear targets for renderer. More... | |
void | addClearTarget (GraphicsClearTarget target) |
Sets a clearing target for renderer. More... | |
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 | removeClearTarget (GraphicsClearTarget target) |
Removes a clearing target for renderer. More... | |
bool | hasClearTarget (GraphicsClearTarget target) const |
Sees if renderer has specific clear target. More... | |
bool | isClearEnabled () const |
See if clear is enabled. More... | |
void | setClearColor (ColorRGBA colorRGBA) |
Set clear color for renderer. More... | |
void | setColorWriteMode (GraphicsColorWriteMode colorWriteMode) |
Set a color write mode for renderer. More... | |
GraphicsColorWriteMode | getColorWriteMode () const |
Gets current color write mode from renderer. More... | |
void | setScissorTest (optional< ViewportRectangle > scissor) |
Sets scissor test state and optional rectangle for renderer. More... | |
void | setClearDepthValue (float clearDepthValue) |
Set clear depth for renderer. More... | |
void | setClearStencil (int stencilClearValue) |
Set clear stencil for renderer. More... | |
void | setViewport (ViewportRectangle viewport) |
Sets an active view port for renderer. More... | |
void | setVertexBuffer (unsigned int vertexBuffer) |
Sets a vertex buffer for renderer. More... | |
void | setIndexBuffer (unsigned int indexBuffer) |
Sets an index buffer for renderer. More... | |
void | drawBuffers () |
Render buffers that are currently bound. More... | |
void | setVertexCount (unsigned int vertexCount) |
Sets vertex count for renderer. More... | |
void | setIndexCount (unsigned int indexCount) |
Sets the index count for renderer. More... | |
void | setIndexData (void *indexData) |
Sets index data for renderer. More... | |
void | setPrimitiveType (GraphicsPrimitiveType prmitiveType) |
Sets the primitive type for renderer. More... | |
int | getUniformLocationSlow (const string &uniformName) const |
Finds uniform location for given uniform from active shader. More... | |
unsigned int | getUniformArrayLength (const char *uniformName) const |
Returns array uniform length for given uniform. More... | |
void | setUniformInteger (int value, int uniformLocation) |
Sets integer uniform for renderer, using currently bound shader. More... | |
void | setUniformFloat (float value, int uniformLocation) |
Sets float uniform for renderer, using currently bound shader. More... | |
void | setUniformFloatArray (ShaderProgram::FixedUniform fixedUniform, size_t count, const float *values) |
Sets uniform float array for renderer. More... | |
void | setUniformFloatArray (int uniformLocation, size_t count, const float *values) |
Sets uniform float array for renderer. More... | |
void | setUniformVec2 (Vector2 value, int uniformLocation) |
Sets uniform vec2 for renderer, using currently bound shader. More... | |
void | setUniformVec3 (Vector3 value, int uniformLocation) |
Sets uniform vec3 for renderer, using currently bound shader. More... | |
void | setUniformVec4 (Vector4 value, int uniformLocation) |
Sets uniform vec4 for renderer, using currently bound shader. More... | |
void | setUniformVecArray (ShaderProgram::FixedUniform fixedUniform, size_t count, const Vector3 *values) |
Sets arbitrary vector array with dimension to renderer, using currently bound shader. More... | |
void | setUniformVecArray (int uniformLocation, size_t count, const Vector3 *values) |
Sets arbitrary vector array with dimension to renderer, using currently bound shader. More... | |
void | setUniformVecArray (ShaderProgram::FixedUniform fixedUniform, size_t count, const Vector4 *values) |
Sets arbitrary vector array with dimension to renderer, using currently bound shader. More... | |
void | setUniformVecArray (int uniformLocation, size_t count, const Vector4 *values) |
Sets arbitrary vector array with dimension to renderer, using currently bound shader. More... | |
void | setUniformColorRGBA (ColorRGBA value, int uniformLocation) |
Sets uniform colorRGBA for renderer, using currently bound shader. More... | |
void | setUniformMatrix3x3 (Matrix3x3 value, int uniformLocation) |
Sets matrix3x3 uniform for renderer, using currently bound shader. More... | |
void | setUniformMatrix4x4 (Matrix4x4 value, int uniformLocation) |
Sets matrix4x4 uniform for renderer, using currently bound shader. More... | |
void | setActiveScalar (GraphicsScalar scalar, float value) |
Switches an scalar value for renderer if necessary, e.g. depth clear value. More... | |
float | getActiveScalar (GraphicsScalar scalar) const |
Returns a current scalar value from renderer. More... | |
void | setBlendMode (GraphicsBlendMode blendMode) |
Sets a blend mode for renderer. More... | |
GraphicsBlendMode | getBlendMode () const |
Gets a blend mode for renderer. More... | |
void | setCullMode (GraphicsCullMode cullMode) |
Sets a cull mode for renderer. More... | |
GraphicsCullMode | getCullMode () const |
Gets a cull mode for renderer. More... | |
void | setDepthTest (GraphicsCompareFunction depthMode) |
Sets a depth pass mode for renderer. More... | |
GraphicsCompareFunction | getDepthTest () const |
Gets a depth pass mode for renderer. 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 | 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... | |
void | setMatrix (FixedMatrix matrixType, Matrix4x4 matrix) |
Sets matrix for a renderer. More... | |
Matrix4x4 | getMatrix (FixedMatrix matrixType) const |
Gets a matrix from renderer. More... | |
void | calculateProjectionCameraWorldMatrix () |
Calculates projection * camera * world matrix. More... | |
void | applyTransformation () |
Applies transformations from renderer to GPU. More... | |
void | setActiveTextureUnit (unsigned int textureUnit) |
Sets texture unit active. More... | |
void | applyTextureSizeUniforms (int textureWidthUniformLocation, int textureHeightUniformLocation, unsigned int textureWidth, unsigned int textureHeight) |
Applies texture uniforms for the renderer. More... | |
void | applyTexture (int textureUniformLocation, unsigned int textureHandle, Texture::Type type) |
Applies texture for renderer using currently bound shader (required) and texture uniform (required). More... | |
void | setUniformTexture (int uniformLocation) |
Sets texture uniform location for renderer, effectively used for storing the integer in renderer to retrieve it when binding textures. More... | |
int | getUniformTexture () const |
Gets texture uniform location from renderer. More... | |
void | detachTextureHandle (unsigned int textureHandle) |
Detaches texture handle from all texture units it has been applied for. More... | |
void | detachTexture () |
Detaches texture from rendering. More... | |
void | invalidateTextureHandle (unsigned int textureHandle) |
Invalidates texture handle from renderer without affecting GL state. More... | |
pair< Texture::Type, unsigned int > | bindTexture (Texture::Type type, unsigned int texture) |
Binds specified texture of specified type to currently active texture unit. More... | |
unsigned int | generateTexture () |
Generates new texture for renderer. 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 | textureStorage (Texture::Type 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 | generateMipmaps (Texture::Type textureType) |
Generates mipmaps for currently bound texture. More... | |
void | deleteTexture (unsigned int textureHandle) |
Deletes texture via renderer. More... | |
void | setTextureAddressingMode (Texture::Type type, Sampler::AddressingMode texAddress) |
Sets wrap mode for currently bound texture in current texture unit. More... | |
void | setTextureFilter (Texture::Type type, Sampler::Filter mininificationFilter, Sampler::Filter magnificationFilter, Sampler::MipmapMode mipmapMode, float anisotropy) |
Sets texture filter for currently bound texture in current texture unit. More... | |
void | setTextureCompare (Texture::Type type, bool isEnabled, GraphicsCompareFunction textureCompareFunction) |
Sets texture comparison function for currently bound texture in current texture unit. More... | |
void | setPixelStorePack (unsigned int packBytes) |
Sets pack storage for renderer. Specifies how the pixel data is aligned. More... | |
void | setPixelStoreUnpack (unsigned int unpackBytes) |
Sets unpack storage for renderer. Specifies how the pixel data is aligned. More... | |
unsigned int | createShader (ShaderType type) |
Creates shader. More... | |
unsigned int | createShaderProgram () |
Creates shader program. Returns the handle to the program. More... | |
void | refreshRenderContext (bool geometryRendering) |
Refreshes render context to contain all proper states. More... | |
void | attachShaderToProgram (unsigned int programHandle, unsigned int shaderHandle) |
Attaches shader to program. More... | |
void | detachShaderFromProgram (unsigned int programHandle, unsigned int shaderHandle) |
Detaches shader from program. More... | |
void | bindAttributeToLocation (unsigned int programHandle, unsigned int locationIndex, kzString attributeName) |
Binds attribute to given location index, for example "kzPosition" to 0. More... | |
bool | linkShaderProgram (unsigned int programHandle, kzString shaderName) |
Links shader program with given handle. More... | |
bool | compileSourceShader (ShaderType shaderType, unsigned int shaderHandle, const char *const shaderCode, string_view shaderName) |
Compiles source shader and deploys it to GPU. More... | |
bool | deployBinaryShader (unsigned int count, const unsigned int *shaders, unsigned int binaryFormat, const void *data, unsigned int dataSize) |
Deploys binary shaders. More... | |
bool | deployBinaryProgram (unsigned int program, unsigned int binaryFormat, const void *data, unsigned int dataSize) |
Initializes shader program from program binary data. More... | |
string | getProgramBinary (unsigned int program, unsigned int &binaryFormat) |
Gets binary representation for GL shader program. More... | |
void | deleteShaderProgram (unsigned int programHandle) |
Deletes shader program and attached shaders. More... | |
void | deleteShader (unsigned int shaderHandle) |
Deletes shader. More... | |
int | getFixedUniformLocation (ShaderProgram::FixedUniform fixedUniform) const |
Returns fixed shader uniform location of given fixed uniform. More... | |
unsigned int | generateFramebuffer () |
Generates new texture for renderer. More... | |
void | deleteFramebuffer (unsigned int frameBufferHandle) |
Deletes framebuffer. More... | |
void | bindFramebuffer (unsigned int frameBufferHandle) |
Binds framebuffer. More... | |
bool | isFramebufferComplete () |
Checks if the framebuffer status is complete. More... | |
void | invalidateFramebufferAttachments (Framebuffer::Target target, bitset< Surface::APIAttachmentCount > attachments) const |
Invalidates framebuffer attachments. 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... | |
void | framebufferRenderbuffer (Surface::APIAttachment attachment, unsigned int renderbuffer) |
Attaches renderbuffer to the currently active Framebuffer. More... | |
unsigned int | generateRenderbuffer () |
Generates new texture for renderer. More... | |
void | deleteRenderbuffer (unsigned int renderbuffer) |
Deletes framebuffer. More... | |
void | bindRenderbuffer (unsigned int renderbuffer) |
Binds framebuffer for editing. More... | |
void | renderbufferStorage (GraphicsFormat format, unsigned int width, unsigned int height, unsigned int explicitSampleCount) |
Sets storage for currently bound renderbuffer. More... | |
unsigned int | generateBuffer () |
Generates new index or vertex buffer or uniform buffer object name. More... | |
void | setVertexBufferData (unsigned int dataSize, const void *data) |
Sets static vertex buffer data. More... | |
void | setIndexBufferData (unsigned int dataSize, const void *data) |
Sets static index buffer data. More... | |
void | setVertexBufferSubData (unsigned int offset, unsigned int size, const void *data) |
Uploads vertex buffer subdata with given offset and size. More... | |
void | setIndexBufferSubData (unsigned int offset, unsigned int size, const void *data) |
Uploads index buffer subdata with given offset and size. More... | |
void | deleteBuffer (unsigned int handle) |
Deletes vertex or index buffer. More... | |
void | enableVertexAttributeArray (unsigned int attributeHandle) |
Sets vertex attribute array to be enabled. More... | |
void | disableVertexAttributeArray (unsigned int attributeHandle) |
Sets vertex attribute array to be disabled. More... | |
void | applyVertexAttributeArrays () |
Update vertex attribute configurations to the graphics driver. 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 | setActiveShaderHandle (unsigned int activeShaderHandle, int const *fixedUniformMap, const int *vertexAttributeMap) |
Sets active shader for renderer. More... | |
unsigned int | getActiveShaderHandle () const |
Gets active shader handle from renderer. More... | |
const int * | getActiveShaderAttributeMap () const |
Gets active vertex attribute map from renderer. More... | |
const int * | getActiveFixedUniformMap () const |
Gets active fixed uniform map from renderer. More... | |
void | setDefaultFramebuffer (unsigned int frameBufferHandle) |
Specifies default frame buffer (screen) for renderer. More... | |
void | setActiveFramebuffer (unsigned int frameBufferHandle) |
Sets active frame buffer for renderer. More... | |
void | setColorBufferCount (unsigned int drawBufferCount) |
Sets the number of draw buffers for currently active framebuffer. More... | |
void | resetActiveFramebuffer () |
Resets active frame buffer for renderer to default (screen). More... | |
void | setActiveFramebufferCallback (FramebufferCallback callbackFunction) |
Sets callback function that is called after setActiveFramebuffer. More... | |
unsigned int | getActiveFramebuffer () const |
Gets active frame buffer handle from. More... | |
void | readPixels (int x, int y, int width, int height, GraphicsFormat format, void *pixels) |
Reads the pixels from the current frame buffer. More... | |
GraphicsFormat | getNativePixelReadFormat () |
Returns native pixel read format from renderer. More... | |
void | beginMaterialSetup () |
Begins a material for renderer. More... | |
void | endMaterialSetup () |
Ends a material for renderer. More... | |
void | beginVertexArray () |
Begins set of vertex arrays. 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 | endVertexArray (GraphicsPrimitiveType primitiveType, unsigned int count) |
Ends vertex array. Renders the specified vertex lists and finishes the usage. More... | |
unsigned int | getCurrentVertexArrayFlags () const |
Gets the current vertex array flags from renderer. More... | |
const void * | getCurrentVertexArrayAttributeData (VertexAttribute::Semantic attribute) const |
Gets current vertex array data from renderer. Reset when switching the shader. More... | |
void | setLineWidth (float lineWidth) |
Sets line rendering width for renderer. More... | |
void | flush () const |
Flushes the GPU pipeline, forces all commands to be executed in finite time. More... | |
void | pushStatistics () |
void | popStatistics () |
unsigned int | getIndexCount () const |
Gets index count from renderer. More... | |
unsigned int | getTriangleCount () const |
Gets triangle count from renderer. More... | |
unsigned int | getVertexCount () const |
Gets vertex count from renderer. More... | |
unsigned int | getBatchCount () const |
Gets batch count from renderer (number of draw calls, such as drawElements and drawArrays). More... | |
unsigned int | getShaderSwitchCount () const |
Gets shader switches. More... | |
unsigned int | getUniformSendCount () const |
Gets uniform sending count from renderer. More... | |
unsigned int | getTextureSwitchCount () const |
Gets number of texture switches from renderer. More... | |
unsigned int | getFramebufferSwitchCount () const |
Gets number of framebuffer switches from renderer. More... | |
unsigned int | getBufferSwitchCount () const |
Gets number of buffer switches (VBO + IBO) from renderer. More... | |
unsigned int | getHeavyweightCallCount () const |
Returns potential heavyweight calls such as buffer or texture updates and glFinish from renderer. More... | |
bool | isShaderBinaryFormatSupported (unsigned int glShaderBinaryFormat) const |
Checks if GL shader binary format is supported. More... | |
bool | isProgramBinaryFormatSupported (unsigned int glProgramBinaryFormat) const |
Checks if GL program binary format is supported. More... | |
void | setGPUCallsEnabled (bool enabled) |
Sets GPU calls enabled / disabled. More... | |
bool | GPUCallsIsEnabled () const |
Checks if GPU calls are enabled. More... | |
bool | isSupported (Support feature) const |
Is coverage buffer supported or not. More... | |
Multisample | getMultisampleSupport () const |
Return support for multisample textures and renderbuffers. More... | |
ProgramBinary | getProgramBinarySupport () const |
Return support for program binaries. More... | |
HalfFloatTexture | getHalfFloatTextureSupport () const |
Return support for half float texture format. More... | |
TexStorage | getTexStorageSupport () const |
Return support for tex storage. More... | |
bool | getTexStorageSupport (Texture::Type type, unsigned int samples) const |
Return support for tex storage. More... | |
void * | createImageObject (void *dataPointer, int target, int *attributes) |
Creates image object, returns NULL if no hardware support. More... | |
void | deleteImageObject (void *imageObject) |
Deletes image object created with createImageObject. More... | |
void | setImageTargetTexture (Texture::Type type, void *imageObject) |
Sets image object bound to currently bound texture (type). More... | |
float | getMaximumAnisotropy () const |
Gets maximum anisotropy. More... | |
unsigned int | getMaximumTextureSize (Texture::Type textureType) const |
Gets maximum texture side size. More... | |
unsigned int | getMaximumRenderbufferSize () const |
Gets maximum renderbuffer size. More... | |
unsigned int | getMaximumViewportWidth () const |
Gets maximum viewport width. More... | |
unsigned int | getMaximumViewportHeight () const |
Gets maximum viewport height. More... | |
unsigned int | getMaximumVertexAttributeCount () const |
Gets maximum vertex attribute count. More... | |
unsigned int | getMaximumSampleCount () const |
Gets maximum sample count for multisample. 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... | |
void | invalidateAllocations () |
Invalidates all handles from renderer without affecting GL state. More... | |
::KzcGPUBufferManager * | getGPUBufferManager () const |
Gets GPU buffer manager from renderer. More... | |
void | logOpenGLInformation (unsigned int flags) const |
Logs information about renderer capabilities. More... | |
void | resolveMultisample (unsigned int sourceFramebuffer, unsigned int destinationFramebuffer, unsigned int offsetX, unsigned int offsetY, unsigned int width, unsigned int height) |
Resolve multisample framebuffer. More... | |
ViewportRectangle | getViewport () const |
Gets current viewport rectangle from renderer. More... | |
ViewportRectangle | getScissor () const |
Gets current scissor rectangle from renderer. More... | |
void | adjust (Texture::CreateInfo &createInfo) const |
Helper function to adjust Texture::CreateInfo to meet graphics backend specific requirements. More... | |
void | enableWorkaround (Workaround workaround) |
Enable a renderer workaround. More... | |
void | disableWorkaround (Workaround workaround) |
Disable a renderer workaround. More... | |
bool | isWorkaroundEnabled (Workaround workaround) const |
Return if workaround is enabled or not. More... | |
void | setWorkaroundEnable (Workaround workaround, bool enabled) |
Set workaround enable state to true or false. More... | |
const KzcMemoryManager * | getMemoryManager () const |
TextureSharedPtr | createSubstituteTexture (Domain *domain, Texture::Type textureType, string_view name) |
Create a black 1x1 texture. 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... | |
unsigned int | getFeatures (GraphicsFormat format) const |
Describes what the specified format can be used for in the specified renderer. More... | |
bool | supports (GraphicsFormat format, unsigned int features) const |
Returns whether format supports requested features. More... | |
bool | supportsTexture (GraphicsFormat format) const |
Returns whether format can be used as texture by the specified renderer. More... | |
bool | supportsRenderbuffer (GraphicsFormat format) const |
Returns whether format can be used as renderbuffer by the specified renderer. 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... | |
GraphicsFormat | getFallback (GraphicsFormat format, unsigned int usageFlags) const |
Returns a fallback format which supports specified usage flags. 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... | |
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 | 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... | |
bool | supportsTexStorage (GraphicsFormat format, unsigned int features) const |
Returns true if graphics format supports texture storage. More... | |
void | clearUniformCaches () |
Free memory used by uniform caches. More... | |
void | advanceGlobalTime (chrono::milliseconds deltaTime) |
Advances renderer wall clock with time delta. More... | |
chrono::milliseconds | getGlobalTime () const |
Gets wall clock time in milliseconds since program start. More... | |
int | getGlesVersion () const |
Returns supported OpenGL ES version number. More... | |
ShaderProgram::CreateInfo::Status | validate (const ShaderProgram::CreateInfo &createInfo) const |
Perform validation of shader creation parameters. More... | |
Texture::CreateInfo::Status | validate (const Texture::CreateInfo &createInfo) const |
Perform validation of texture creation parameters. More... | |
Texture::CreateInfo::Status | validateImages (const Texture::CreateInfo &createInfo) const |
Test if given set of images can be used to create Texture. More... | |
Texture::CreateInfo::Status | validateFormat (const Texture::CreateInfo &createInfo) const |
Validates texture format and features. More... | |
Texture::CreateInfo::Status | validateSize (const Texture::CreateInfo &createInfo) const |
Validates texture size against minimum valid texture size (1x1) and maximum supported by graphics adapter. More... | |
Texture::CreateInfo::Status | validateTargetCompatibility (const Texture::CreateInfo &createInfo) const |
Checks for known device incompatibilities, for example with texture formats and size. More... | |
Static Public Member Functions | |
static ClearMode | getClearMode (GraphicsFormat format) |
typedef void(* kanzi::Renderer::FramebufferCallback) (unsigned int frameBufferHandle) |
Callback prototype for setActiveFramebuffer.
Multisample support code path in Renderer.
Program binary support code path in Renderer.
Half float texture support code path in Renderer.
Framebuffer invalidation support code path in Renderer.
Enumerator | |
---|---|
InvalidateFramebufferNone |
No support for framebuffer invalidation. |
InvalidateFramebufferARB |
Framebuffer invalidation supported using desktop OpenGL. |
InvalidateFramebufferES3 |
Framebuffer invalidation supported using OpenGL ES 3. |
InvalidateFramebufferES2Ext |
Framebuffer invalidation supported using OpenGL ES 2 multivendor extension. |
Renderer state enumerations.
Enumerator | |
---|---|
StateDepthTest |
Renderer state for depth testing. |
StateCullFace |
Renderer state for cull face. |
StateBlend |
Renderer state for blending. |
StateDepthWrite |
Renderer state for depth write. |
StateStencilTest |
Renderer state for stencil test. |
StateStencilWrite |
Renderer state for stencil write. |
StateMultisample |
Renderer state for multi-sampling. |
StateScissorTest |
Renderer state for scissor test. |
StateCoverageWrite |
Renderer state for coverage write. |
StateCount |
Maximum count of renderer states. |
List of active matrices renderer keeps track of.
Enumerator | |
---|---|
FixedMatrixProjection |
Projection matrix. |
FixedMatrixCamera |
Camera matrix. |
FixedMatrixWorld |
Current world matrix. |
FixedMatrixCameraWorld |
Current camera * world matrix. |
FixedMatrixProjectionCameraWorld |
Current projection * camera * world matrix. |
FixedMatrixCount |
Maximum amount of matrices. |
Per color buffer clear setting.
kanzi::Renderer::Renderer | ( | const KzcMemoryManager * | memoryManager | ) |
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::setActiveGraphicsOutput | ( | GlGraphicsOutput * | glGraphicsOutput | ) |
Sets active surface context for renderer.
GlGraphicsOutput* kanzi::Renderer::getActiveGraphicsOutput | ( | ) | const |
Gets active surface context from renderer.
KzsWindow* kanzi::Renderer::getActiveWindow | ( | ) | const |
KzsSurface* kanzi::Renderer::getActiveSurface | ( | ) | const |
KzsGlGraphicsContext* kanzi::Renderer::getActiveGraphicsContext | ( | ) | const |
enum KzsSurfaceType kanzi::Renderer::getActiveSurfaceType | ( | ) | const |
::KzsOpenGlVendor kanzi::Renderer::getActiveSurfaceVendor | ( | ) | const |
void kanzi::Renderer::enableState | ( | State | state | ) |
Enables a specific renderer state.
void kanzi::Renderer::disableState | ( | State | state | ) |
Disables a specific renderer state.
void kanzi::Renderer::setState | ( | State | state, |
bool | enable | ||
) |
Enables or disables the state of a specific renderer state.
bool kanzi::Renderer::getState | ( | State | 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). |
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, |
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 | ( | unsigned int | 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::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::setUniformInteger | ( | int | value, |
int | uniformLocation | ||
) |
Sets integer uniform for renderer, using currently bound shader.
void kanzi::Renderer::setUniformFloat | ( | float | value, |
int | uniformLocation | ||
) |
Sets float uniform for renderer, using currently bound shader.
void kanzi::Renderer::setUniformFloatArray | ( | ShaderProgram::FixedUniform | fixedUniform, |
size_t | count, | ||
const float * | values | ||
) |
Sets uniform float array for renderer.
void kanzi::Renderer::setUniformFloatArray | ( | int | uniformLocation, |
size_t | count, | ||
const float * | values | ||
) |
Sets uniform float array for renderer.
void kanzi::Renderer::setUniformVec2 | ( | Vector2 | value, |
int | uniformLocation | ||
) |
Sets uniform vec2 for renderer, using currently bound shader.
void kanzi::Renderer::setUniformVec3 | ( | Vector3 | value, |
int | uniformLocation | ||
) |
Sets uniform vec3 for renderer, using currently bound shader.
void kanzi::Renderer::setUniformVec4 | ( | Vector4 | value, |
int | uniformLocation | ||
) |
Sets uniform vec4 for renderer, using currently bound shader.
void kanzi::Renderer::setUniformVecArray | ( | ShaderProgram::FixedUniform | fixedUniform, |
size_t | count, | ||
const Vector3 * | values | ||
) |
Sets arbitrary vector array with dimension to renderer, using currently bound shader.
void kanzi::Renderer::setUniformVecArray | ( | int | uniformLocation, |
size_t | count, | ||
const Vector3 * | values | ||
) |
Sets arbitrary vector array with dimension to renderer, using currently bound shader.
void kanzi::Renderer::setUniformVecArray | ( | ShaderProgram::FixedUniform | fixedUniform, |
size_t | count, | ||
const Vector4 * | values | ||
) |
Sets arbitrary vector array with dimension to renderer, using currently bound shader.
void kanzi::Renderer::setUniformVecArray | ( | int | uniformLocation, |
size_t | count, | ||
const Vector4 * | values | ||
) |
Sets arbitrary vector array with dimension to renderer, using currently bound shader.
void kanzi::Renderer::setUniformColorRGBA | ( | ColorRGBA | value, |
int | uniformLocation | ||
) |
Sets uniform colorRGBA for renderer, using currently bound shader.
void kanzi::Renderer::setUniformMatrix3x3 | ( | Matrix3x3 | value, |
int | uniformLocation | ||
) |
Sets matrix3x3 uniform for renderer, using currently bound shader.
void kanzi::Renderer::setUniformMatrix4x4 | ( | Matrix4x4 | value, |
int | uniformLocation | ||
) |
Sets matrix4x4 uniform for renderer, using currently bound shader.
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::applyTransformation | ( | ) |
Applies transformations from renderer to GPU.
void kanzi::Renderer::setActiveTextureUnit | ( | unsigned int | textureUnit | ) |
Sets texture unit active.
void kanzi::Renderer::applyTextureSizeUniforms | ( | int | textureWidthUniformLocation, |
int | textureHeightUniformLocation, | ||
unsigned int | textureWidth, | ||
unsigned int | textureHeight | ||
) |
Applies texture uniforms for the renderer.
void kanzi::Renderer::applyTexture | ( | int | textureUniformLocation, |
unsigned int | textureHandle, | ||
Texture::Type | type | ||
) |
Applies texture for renderer using currently bound shader (required) and texture uniform (required).
void kanzi::Renderer::setUniformTexture | ( | int | uniformLocation | ) |
Sets texture uniform location for renderer, effectively used for storing the integer in renderer to retrieve it when binding textures.
int kanzi::Renderer::getUniformTexture | ( | ) | const |
Gets texture uniform location from renderer.
void kanzi::Renderer::detachTextureHandle | ( | unsigned int | textureHandle | ) |
Detaches texture handle from all texture units it has been applied for.
void kanzi::Renderer::detachTexture | ( | ) |
Detaches texture from rendering.
void kanzi::Renderer::invalidateTextureHandle | ( | unsigned int | textureHandle | ) |
Invalidates texture handle from renderer without affecting GL state.
pair<Texture::Type, unsigned int> kanzi::Renderer::bindTexture | ( | Texture::Type | type, |
unsigned int | texture | ||
) |
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 | ( | Texture::Type | 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 | ( | Texture::Type | textureType | ) |
Generates mipmaps for currently bound texture.
void kanzi::Renderer::deleteTexture | ( | unsigned int | textureHandle | ) |
Deletes texture via renderer.
void kanzi::Renderer::setTextureAddressingMode | ( | Texture::Type | type, |
Sampler::AddressingMode | texAddress | ||
) |
Sets wrap mode for currently bound texture in current texture unit.
void kanzi::Renderer::setTextureFilter | ( | Texture::Type | type, |
Sampler::Filter | mininificationFilter, | ||
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. |
anisotropy | Anisotropic filtering level for texture. Values <= 1.0f disable the feature. |
void kanzi::Renderer::setTextureCompare | ( | Texture::Type | 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.) |
type | isEnabled If true, depth comparison mode will be enabled for the texture, otherwide depth comparison will be disabled. |
textureCompareFunction | Selects which texture comparison function to use. |
void kanzi::Renderer::setPixelStorePack | ( | unsigned int | packBytes | ) |
Sets pack storage for renderer. Specifies how the pixel data is aligned.
void kanzi::Renderer::setPixelStoreUnpack | ( | unsigned int | unpackBytes | ) |
Sets unpack storage for renderer. Specifies how the pixel data is aligned.
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, | ||
unsigned int | dataSize | ||
) |
Deploys binary shaders.
bool kanzi::Renderer::deployBinaryProgram | ( | unsigned int | program, |
unsigned int | binaryFormat, | ||
const void * | data, | ||
unsigned int | 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.
int kanzi::Renderer::getFixedUniformLocation | ( | ShaderProgram::FixedUniform | fixedUniform | ) | const |
Returns fixed shader uniform location of given fixed uniform.
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 | ( | Framebuffer::Target | 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.
imageTarget | 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 | ( | unsigned int | dataSize, |
const void * | data | ||
) |
Sets static vertex buffer data.
void kanzi::Renderer::setIndexBufferData | ( | unsigned int | dataSize, |
const void * | data | ||
) |
Sets static index buffer data.
void kanzi::Renderer::setVertexBufferSubData | ( | unsigned int | offset, |
unsigned int | size, | ||
const void * | data | ||
) |
Uploads vertex buffer subdata with given offset and size.
void kanzi::Renderer::setIndexBufferSubData | ( | unsigned int | offset, |
unsigned int | 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::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, |
int const * | fixedUniformMap, | ||
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.
const int* kanzi::Renderer::getActiveFixedUniformMap | ( | ) | const |
Gets active fixed uniform 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.
void kanzi::Renderer::setColorBufferCount | ( | unsigned int | drawBufferCount | ) |
Sets the number of draw buffers for currently active framebuffer.
drawBufferCount | 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.
unsigned int 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 | ( | Support | feature | ) | const |
Is coverage buffer supported or not.
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.
TexStorage kanzi::Renderer::getTexStorageSupport | ( | ) | const |
Return support for tex storage.
bool kanzi::Renderer::getTexStorageSupport | ( | Texture::Type | type, |
unsigned int | samples | ||
) | const |
Return support for tex storage.
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 | ( | Texture::Type | 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 | ( | Texture::Type | 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.
::KzcGPUBufferManager* kanzi::Renderer::getGPUBufferManager | ( | ) | const |
Gets GPU buffer manager from renderer.
void kanzi::Renderer::logOpenGLInformation | ( | unsigned int | flags | ) | const |
Logs information about renderer capabilities.
void kanzi::Renderer::resolveMultisample | ( | unsigned int | sourceFramebuffer, |
unsigned int | destinationFramebuffer, | ||
unsigned int | offsetX, | ||
unsigned int | offsetY, | ||
unsigned int | width, | ||
unsigned int | height | ||
) |
Resolve multisample framebuffer.
|
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.
void kanzi::Renderer::adjust | ( | Texture::CreateInfo & | createInfo | ) | const |
Helper function to adjust Texture::CreateInfo to meet graphics backend specific requirements.
|
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.
|
inline |
TextureSharedPtr kanzi::Renderer::createSubstituteTexture | ( | Domain * | domain, |
Texture::Type | textureType, | ||
string_view | name | ||
) |
Create a black 1x1 texture.
domain | The domain. |
textureType | The type of the texture. |
name | The name of the texture. |
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.
Wall | clock time 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.
ShaderProgram::CreateInfo::Status kanzi::Renderer::validate | ( | const ShaderProgram::CreateInfo & | createInfo | ) | const |
Perform validation of shader creation parameters.
You can call validate() to see if shader creation parameters are valid before you pass create info to ShaderProgram::create().
createInfo | Shader create info to validate. |
Texture::CreateInfo::Status kanzi::Renderer::validate | ( | const Texture::CreateInfo & | createInfo | ) | const |
Perform validation of texture creation parameters.
You can call validate() to see if texture creation parameters are valid before you pass create info to Texture::create().
createInfo | Texture create info to validate. |
Texture::CreateInfo::Status kanzi::Renderer::validateImages | ( | const Texture::CreateInfo & | createInfo | ) | const |
Texture::CreateInfo::Status kanzi::Renderer::validateFormat | ( | const Texture::CreateInfo & | createInfo | ) | const |
Validates texture format and features.
createInfo | Texture create info to validate. |
Texture::CreateInfo::Status kanzi::Renderer::validateSize | ( | const Texture::CreateInfo & | createInfo | ) | const |
Validates texture size against minimum valid texture size (1x1) and maximum supported by graphics adapter.
createInfo | Texture create info to validate. |
Texture::CreateInfo::Status kanzi::Renderer::validateTargetCompatibility | ( | const Texture::CreateInfo & | createInfo | ) | const |
Checks for known device incompatibilities, for example with texture formats and size.
createInfo | Texture create info to validate. |
array<bool, GraphicsFormatCount> kanzi::Renderer::textureFormat |
Texture compression.
Multisample kanzi::Renderer::multisample |
ProgramBinary kanzi::Renderer::programBinary |
HalfFloatTexture kanzi::Renderer::halfFloatTexture |
TexStorage kanzi::Renderer::texStorage |
InvalidateFramebuffer kanzi::Renderer::invalidateFramebuffer |
array<bool, SupportCount> kanzi::Renderer::features |
vector<unsigned int> kanzi::Renderer::compressedTextureFormats |
vector<unsigned int> kanzi::Renderer::shaderBinaryFormats |
vector<unsigned int> kanzi::Renderer::programBinaryFormats |
vector<string> kanzi::Renderer::extensions |