Kemena3D
Loading...
Searching...
No Matches
kemena::kOpenGLDriver Class Reference

OpenGL 3.3 Core Profile graphics driver. More...

#include <kopengldriver.h>

Inheritance diagram for kemena::kOpenGLDriver:
Collaboration diagram for kemena::kOpenGLDriver:

Public Member Functions

 kOpenGLDriver ()=default
 ~kOpenGLDriver () override
bool init (kWindow *window) override
 Creates an OpenGL 3.3 Core Profile context for the given window.
void destroy () override
 Destroys the SDL GL context.
void * getNativeContext () override
 Returns the raw SDL_GLContext handle.
kString getApiVersion () override
 Returns the OpenGL version kString.
kString getShaderVersion () override
 Returns the GLSL version kString.
void setClearColor (float r, float g, float b, float a) override
 Sets the colour used to clear the colour buffer.
void clear (bool color, bool depth, bool stencil) override
 Clears the selected buffers of the current framebuffer.
void setViewport (int x, int y, int width, int height) override
 Sets the rendering viewport rectangle.
void setDepthTest (bool enable) override
 Enables or disables depth testing.
void setDepthWrite (bool enable) override
 Enables or disables writing to the depth buffer.
void setBlend (bool enable) override
 Enables or disables alpha blending.
void setBlendFunc (kBlendFactor src, kBlendFactor dst) override
 Sets the source and destination blend factors.
void setCullFace (bool enable) override
 Enables or disables face culling.
void setCullMode (kCullMode mode) override
 Selects which faces are culled.
void setFrontFace (kFrontFace face) override
 Sets the winding order treated as front-facing.
void setMultisample (bool enable) override
 Enables or disables multisample anti-aliasing.
void setSRGBEncoding (bool enable) override
 Enables or disables sRGB framebuffer encoding.
void setSampleAlphaToCoverage (bool enable) override
 Enables or disables alpha-to-coverage sampling.
uint32_t compileShaderProgram (const char *vertSrc, const char *fragSrc) override
 Compiles and links a shader program from GLSL source.
uint32_t compileShaderProgramSpirv (const std::vector< uint8_t > &vertSpirv, const kString &vertEntry, const std::vector< uint8_t > &fragSpirv, const kString &fragEntry) override
 Compiles and links a shader program from SPIR-V binaries.
void deleteShaderProgram (uint32_t id) override
 Deletes a shader program.
void bindShaderProgram (uint32_t id) override
 Makes a shader program current for subsequent draws.
void unbindShaderProgram () override
 Unbinds the current shader program.
void setUniformBool (uint32_t progId, const kString &name, bool v) override
 Sets a bool uniform.
void setUniformInt (uint32_t progId, const kString &name, int v) override
 Sets an int uniform.
void setUniformUint (uint32_t progId, const kString &name, uint32_t v) override
 Sets an unsigned int uniform.
void setUniformFloat (uint32_t progId, const kString &name, float v) override
 Sets a float uniform.
void setUniformVec2 (uint32_t progId, const kString &name, const kVec2 &v) override
 Sets a vec2 uniform.
void setUniformVec3 (uint32_t progId, const kString &name, const kVec3 &v) override
 Sets a vec3 uniform.
void setUniformVec4 (uint32_t progId, const kString &name, const kVec4 &v) override
 Sets a vec4 uniform.
void setUniformMat4 (uint32_t progId, const kString &name, const kMat4 &v) override
 Sets a mat4 uniform.
void setUniformMat4Array (uint32_t progId, const kString &name, const std::vector< kMat4 > &v) override
 Sets an array-of-mat4 uniform.
uint32_t createVertexArray () override
 Creates a vertex array object.
void deleteVertexArray (uint32_t id) override
 Deletes a vertex array object.
void bindVertexArray (uint32_t id) override
 Binds a vertex array object.
void unbindVertexArray () override
 Unbinds the current vertex array object.
uint32_t createBuffer () override
 Creates a GPU buffer object.
void deleteBuffer (uint32_t id) override
 Deletes a GPU buffer object.
void uploadIndexBuffer (uint32_t bufferId, const void *data, size_t size) override
 Uploads index data into an element array buffer (static draw).
void uploadVertexBuffer (uint32_t bufferId, const void *data, size_t size) override
 Uploads vertex data into an array buffer (static draw).
void setVertexAttribFloat (int location, int components, int stride, size_t offset) override
 Defines a floating-point vertex attribute layout.
void setVertexAttribInt (int location, int components, int stride, size_t offset) override
 Defines an integer vertex attribute layout.
void drawIndexed (uint32_t vaoId, int indexCount) override
 Issues an indexed draw call (triangles) for the given VAO.
void drawArrays (uint32_t vaoId, kPrimitiveType type, int vertexCount) override
 Issues a non-indexed draw call for the given VAO.
void bindTexture2D (int unit, uint32_t id) override
 Binds a 2D texture to a texture unit.
void bindTexture2DArray (int unit, uint32_t id) override
 Binds a 2D-array texture to a texture unit.
void bindTextureCube (int unit, uint32_t id) override
 Binds a cubemap texture to a texture unit.
void unbindTexture2D (int unit) override
 Unbinds the 2D texture on a unit.
void unbindTexture2DArray (int unit) override
 Unbinds the 2D-array texture on a unit.
void unbindTextureCube (int unit) override
 Unbinds the cubemap texture on a unit.
void generateMipmaps2D (uint32_t id) override
 Generates the full mipmap chain for a 2D texture.
void readTexture2DRGB (uint32_t id, int mipLevel, float *pixels) override
 Reads back an RGB float image from a 2D texture mip level.
void readPixelsRGBA (int x, int y, uint8_t &r, uint8_t &g, uint8_t &b, uint8_t &a) override
 Reads a single RGBA pixel from the current read framebuffer.
uint32_t createFramebuffer () override
 Creates a framebuffer object.
void deleteFramebuffer (uint32_t id) override
 Deletes a framebuffer object.
void bindFramebuffer (uint32_t id) override
 Binds an FBO as both read and draw target.
void bindReadFramebuffer (uint32_t id) override
 Binds an FBO as the read target.
void bindDrawFramebuffer (uint32_t id) override
 Binds an FBO as the draw target.
void unbindFramebuffer () override
 Unbinds the current FBO, restoring the default framebuffer.
bool isFramebufferComplete () override
 Checks framebuffer completeness.
void blitFramebufferColor (int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1) override
 Blits the colour buffer between the read and draw framebuffers (nearest filter).
void setFramebufferDrawBuffer () override
 Sets the draw buffer of the bound FBO to colour attachment 0.
uint32_t createRenderbuffer () override
 Creates a renderbuffer object.
void deleteRenderbuffer (uint32_t id) override
 Deletes a renderbuffer object.
void setupRenderbuffer (uint32_t rboId, int width, int height) override
 Allocates depth/stencil storage for a renderbuffer.
void setupRenderbufferMSAA (uint32_t rboId, int samples, int width, int height) override
 Allocates multisampled depth/stencil storage for a renderbuffer.
void attachRenderbufferDepthStencil (uint32_t fboId, uint32_t rboId) override
 Attaches a renderbuffer as the depth/stencil attachment of an FBO.
uint32_t createFBOColorTexture (int width, int height) override
 Creates a colour texture suitable for FBO attachment.
uint32_t createFBOColorTextureMSAA (int samples, int width, int height) override
 Creates a multisampled colour texture suitable for FBO attachment.
uint32_t createFBODepthTexture (int width, int height) override
 Creates a depth texture suitable for FBO attachment.
uint32_t createFBODepthTextureArray (int width, int height, int layers) override
 Creates a layered depth texture array (e.g. for cascaded shadow maps).
void deleteFBOTexture (uint32_t id) override
 Deletes an FBO-managed texture.
void attachFBOColorTexture (uint32_t fboId, uint32_t texId) override
 Attaches a colour texture to colour attachment 0 of an FBO.
void attachFBOColorTextureMSAA (uint32_t fboId, uint32_t texId) override
 Attaches a multisampled colour texture to colour attachment 0 of an FBO.
void attachFBODepthTexture (uint32_t fboId, uint32_t texId) override
 Attaches a depth texture to the depth attachment of an FBO.
void attachFBODepthTextureLayer (uint32_t fboId, uint32_t texId, int layer) override
 Attaches a single layer of a depth texture array as the depth attachment.
void resizeFBOColorTexture (uint32_t texId, int width, int height) override
 Reallocates an FBO colour texture to a new size.
void resizeFBOColorTextureMSAA (uint32_t texId, int samples, int width, int height) override
 Reallocates a multisampled FBO colour texture to a new size/sample count.
Public Member Functions inherited from kemena::kDriver
virtual ~kDriver ()=default

Additional Inherited Members

Static Public Member Functions inherited from kemena::kDriver
static kDrivergetCurrent ()
 Returns the currently active driver (set via setCurrent()).
static void setCurrent (kDriver *driver)
 Sets the globally active driver.

Detailed Description

OpenGL 3.3 Core Profile graphics driver.

Created by kRenderer when the RENDERER_GL backend is selected. Wraps all raw OpenGL calls so that the rest of the engine remains API-agnostic.

Do not instantiate this class directly — use kRenderer::init() instead.

Constructor & Destructor Documentation

◆ kOpenGLDriver()

kemena::kOpenGLDriver::kOpenGLDriver ( )
default

◆ ~kOpenGLDriver()

kemena::kOpenGLDriver::~kOpenGLDriver ( )
override

Member Function Documentation

◆ attachFBOColorTexture()

void kemena::kOpenGLDriver::attachFBOColorTexture ( uint32_t fboId,
uint32_t texId )
overridevirtual

Attaches a colour texture to colour attachment 0 of an FBO.

Parameters
fboIdGL FBO id.
texIdGL texture id.

Implements kemena::kDriver.

◆ attachFBOColorTextureMSAA()

void kemena::kOpenGLDriver::attachFBOColorTextureMSAA ( uint32_t fboId,
uint32_t texId )
overridevirtual

Attaches a multisampled colour texture to colour attachment 0 of an FBO.

Parameters
fboIdGL FBO id.
texIdGL texture id.

Implements kemena::kDriver.

◆ attachFBODepthTexture()

void kemena::kOpenGLDriver::attachFBODepthTexture ( uint32_t fboId,
uint32_t texId )
overridevirtual

Attaches a depth texture to the depth attachment of an FBO.

Parameters
fboIdGL FBO id.
texIdGL texture id.

Implements kemena::kDriver.

◆ attachFBODepthTextureLayer()

void kemena::kOpenGLDriver::attachFBODepthTextureLayer ( uint32_t fboId,
uint32_t texId,
int layer )
overridevirtual

Attaches a single layer of a depth texture array as the depth attachment.

Parameters
fboIdGL FBO id.
texIdGL texture-array id.
layerArray layer to attach.

Implements kemena::kDriver.

◆ attachRenderbufferDepthStencil()

void kemena::kOpenGLDriver::attachRenderbufferDepthStencil ( uint32_t fboId,
uint32_t rboId )
overridevirtual

Attaches a renderbuffer as the depth/stencil attachment of an FBO.

Parameters
fboIdGL FBO id.
rboIdGL RBO id.

Implements kemena::kDriver.

◆ bindDrawFramebuffer()

void kemena::kOpenGLDriver::bindDrawFramebuffer ( uint32_t id)
overridevirtual

Binds an FBO as the draw target.

Parameters
idGL FBO id.

Implements kemena::kDriver.

◆ bindFramebuffer()

void kemena::kOpenGLDriver::bindFramebuffer ( uint32_t id)
overridevirtual

Binds an FBO as both read and draw target.

Parameters
idGL FBO id.

Implements kemena::kDriver.

◆ bindReadFramebuffer()

void kemena::kOpenGLDriver::bindReadFramebuffer ( uint32_t id)
overridevirtual

Binds an FBO as the read target.

Parameters
idGL FBO id.

Implements kemena::kDriver.

◆ bindShaderProgram()

void kemena::kOpenGLDriver::bindShaderProgram ( uint32_t id)
overridevirtual

Makes a shader program current for subsequent draws.

Parameters
idGL program id.

Implements kemena::kDriver.

◆ bindTexture2D()

void kemena::kOpenGLDriver::bindTexture2D ( int unit,
uint32_t id )
overridevirtual

Binds a 2D texture to a texture unit.

Parameters
unitTexture unit index.
idGL texture id.

Implements kemena::kDriver.

◆ bindTexture2DArray()

void kemena::kOpenGLDriver::bindTexture2DArray ( int unit,
uint32_t id )
overridevirtual

Binds a 2D-array texture to a texture unit.

Parameters
unitTexture unit index.
idGL texture id.

Implements kemena::kDriver.

◆ bindTextureCube()

void kemena::kOpenGLDriver::bindTextureCube ( int unit,
uint32_t id )
overridevirtual

Binds a cubemap texture to a texture unit.

Parameters
unitTexture unit index.
idGL texture id.

Implements kemena::kDriver.

◆ bindVertexArray()

void kemena::kOpenGLDriver::bindVertexArray ( uint32_t id)
overridevirtual

Binds a vertex array object.

Parameters
idGL VAO id.

Implements kemena::kDriver.

◆ blitFramebufferColor()

void kemena::kOpenGLDriver::blitFramebufferColor ( int srcX0,
int srcY0,
int srcX1,
int srcY1,
int dstX0,
int dstY0,
int dstX1,
int dstY1 )
overridevirtual

Blits the colour buffer between the read and draw framebuffers (nearest filter).

Parameters
srcX0Source rectangle left.
srcY0Source rectangle bottom.
srcX1Source rectangle right.
srcY1Source rectangle top.
dstX0Destination rectangle left.
dstY0Destination rectangle bottom.
dstX1Destination rectangle right.
dstY1Destination rectangle top.

Implements kemena::kDriver.

◆ clear()

void kemena::kOpenGLDriver::clear ( bool color,
bool depth,
bool stencil )
overridevirtual

Clears the selected buffers of the current framebuffer.

Parameters
colorClear the colour buffer when true.
depthClear the depth buffer when true.
stencilClear the stencil buffer when true.

Implements kemena::kDriver.

◆ compileShaderProgram()

uint32_t kemena::kOpenGLDriver::compileShaderProgram ( const char * vertSrc,
const char * fragSrc )
overridevirtual

Compiles and links a shader program from GLSL source.

Parameters
vertSrcNull-terminated vertex shader source.
fragSrcNull-terminated fragment shader source.
Returns
GL program id, or 0 on failure.

Implements kemena::kDriver.

◆ compileShaderProgramSpirv()

uint32_t kemena::kOpenGLDriver::compileShaderProgramSpirv ( const std::vector< uint8_t > & vertSpirv,
const kString & vertEntry,
const std::vector< uint8_t > & fragSpirv,
const kString & fragEntry )
overridevirtual

Compiles and links a shader program from SPIR-V binaries.

Requires GL_ARB_gl_spirv or OpenGL 4.6; returns 0 if unsupported.

Parameters
vertSpirvSPIR-V byte code for the vertex stage.
vertEntryEntry-point name for the vertex stage.
fragSpirvSPIR-V byte code for the fragment stage.
fragEntryEntry-point name for the fragment stage.
Returns
GL program id, or 0 on failure.

Implements kemena::kDriver.

◆ createBuffer()

uint32_t kemena::kOpenGLDriver::createBuffer ( )
overridevirtual

Creates a GPU buffer object.

Returns
GL buffer id.

Implements kemena::kDriver.

◆ createFBOColorTexture()

uint32_t kemena::kOpenGLDriver::createFBOColorTexture ( int width,
int height )
overridevirtual

Creates a colour texture suitable for FBO attachment.

Parameters
widthTexture width in pixels.
heightTexture height in pixels.
Returns
GL texture id.

Implements kemena::kDriver.

◆ createFBOColorTextureMSAA()

uint32_t kemena::kOpenGLDriver::createFBOColorTextureMSAA ( int samples,
int width,
int height )
overridevirtual

Creates a multisampled colour texture suitable for FBO attachment.

Parameters
samplesNumber of MSAA samples.
widthTexture width in pixels.
heightTexture height in pixels.
Returns
GL texture id.

Implements kemena::kDriver.

◆ createFBODepthTexture()

uint32_t kemena::kOpenGLDriver::createFBODepthTexture ( int width,
int height )
overridevirtual

Creates a depth texture suitable for FBO attachment.

Parameters
widthTexture width in pixels.
heightTexture height in pixels.
Returns
GL texture id.

Implements kemena::kDriver.

◆ createFBODepthTextureArray()

uint32_t kemena::kOpenGLDriver::createFBODepthTextureArray ( int width,
int height,
int layers )
overridevirtual

Creates a layered depth texture array (e.g. for cascaded shadow maps).

Parameters
widthTexture width in pixels.
heightTexture height in pixels.
layersNumber of array layers.
Returns
GL texture id.

Implements kemena::kDriver.

◆ createFramebuffer()

uint32_t kemena::kOpenGLDriver::createFramebuffer ( )
overridevirtual

Creates a framebuffer object.

Returns
GL FBO id.

Implements kemena::kDriver.

◆ createRenderbuffer()

uint32_t kemena::kOpenGLDriver::createRenderbuffer ( )
overridevirtual

Creates a renderbuffer object.

Returns
GL RBO id.

Implements kemena::kDriver.

◆ createVertexArray()

uint32_t kemena::kOpenGLDriver::createVertexArray ( )
overridevirtual

Creates a vertex array object.

Returns
GL VAO id.

Implements kemena::kDriver.

◆ deleteBuffer()

void kemena::kOpenGLDriver::deleteBuffer ( uint32_t id)
overridevirtual

Deletes a GPU buffer object.

Parameters
idGL buffer id.

Implements kemena::kDriver.

◆ deleteFBOTexture()

void kemena::kOpenGLDriver::deleteFBOTexture ( uint32_t id)
overridevirtual

Deletes an FBO-managed texture.

Parameters
idGL texture id.

Implements kemena::kDriver.

◆ deleteFramebuffer()

void kemena::kOpenGLDriver::deleteFramebuffer ( uint32_t id)
overridevirtual

Deletes a framebuffer object.

Parameters
idGL FBO id.

Implements kemena::kDriver.

◆ deleteRenderbuffer()

void kemena::kOpenGLDriver::deleteRenderbuffer ( uint32_t id)
overridevirtual

Deletes a renderbuffer object.

Parameters
idGL RBO id.

Implements kemena::kDriver.

◆ deleteShaderProgram()

void kemena::kOpenGLDriver::deleteShaderProgram ( uint32_t id)
overridevirtual

Deletes a shader program.

Parameters
idGL program id.

Implements kemena::kDriver.

◆ deleteVertexArray()

void kemena::kOpenGLDriver::deleteVertexArray ( uint32_t id)
overridevirtual

Deletes a vertex array object.

Parameters
idGL VAO id.

Implements kemena::kDriver.

◆ destroy()

void kemena::kOpenGLDriver::destroy ( )
overridevirtual

Destroys the SDL GL context.

Implements kemena::kDriver.

◆ drawArrays()

void kemena::kOpenGLDriver::drawArrays ( uint32_t vaoId,
kPrimitiveType type,
int vertexCount )
overridevirtual

Issues a non-indexed draw call for the given VAO.

Parameters
vaoIdGL VAO id to bind.
typePrimitive topology to assemble.
vertexCountNumber of vertices to draw.

Implements kemena::kDriver.

◆ drawIndexed()

void kemena::kOpenGLDriver::drawIndexed ( uint32_t vaoId,
int indexCount )
overridevirtual

Issues an indexed draw call (triangles) for the given VAO.

Parameters
vaoIdGL VAO id to bind.
indexCountNumber of indices to draw.

Implements kemena::kDriver.

◆ generateMipmaps2D()

void kemena::kOpenGLDriver::generateMipmaps2D ( uint32_t id)
overridevirtual

Generates the full mipmap chain for a 2D texture.

Parameters
idGL texture id.

Implements kemena::kDriver.

◆ getApiVersion()

kString kemena::kOpenGLDriver::getApiVersion ( )
overridevirtual

Returns the OpenGL version kString.

Implements kemena::kDriver.

◆ getNativeContext()

void * kemena::kOpenGLDriver::getNativeContext ( )
overridevirtual

Returns the raw SDL_GLContext handle.

Returns
Opaque pointer; cast to SDL_GLContext when needed.

Implements kemena::kDriver.

◆ getShaderVersion()

kString kemena::kOpenGLDriver::getShaderVersion ( )
overridevirtual

Returns the GLSL version kString.

Implements kemena::kDriver.

◆ init()

bool kemena::kOpenGLDriver::init ( kWindow * window)
overridevirtual

Creates an OpenGL 3.3 Core Profile context for the given window.

Sets SDL GL attributes, creates the context, initialises GLEW, and applies default render state.

Parameters
windowSDL-backed window to create the context for.
Returns
true on success.

Implements kemena::kDriver.

◆ isFramebufferComplete()

bool kemena::kOpenGLDriver::isFramebufferComplete ( )
overridevirtual

Checks framebuffer completeness.

Returns
true if the bound FBO is complete.

Implements kemena::kDriver.

◆ readPixelsRGBA()

void kemena::kOpenGLDriver::readPixelsRGBA ( int x,
int y,
uint8_t & r,
uint8_t & g,
uint8_t & b,
uint8_t & a )
overridevirtual

Reads a single RGBA pixel from the current read framebuffer.

Parameters
xPixel x coordinate.
yPixel y coordinate.
rOut: red component.
gOut: green component.
bOut: blue component.
aOut: alpha component.

Implements kemena::kDriver.

◆ readTexture2DRGB()

void kemena::kOpenGLDriver::readTexture2DRGB ( uint32_t id,
int mipLevel,
float * pixels )
overridevirtual

Reads back an RGB float image from a 2D texture mip level.

Parameters
idGL texture id.
mipLevelMip level to read.
pixelsDestination buffer (RGB floats), sized by caller.

Implements kemena::kDriver.

◆ resizeFBOColorTexture()

void kemena::kOpenGLDriver::resizeFBOColorTexture ( uint32_t texId,
int width,
int height )
overridevirtual

Reallocates an FBO colour texture to a new size.

Parameters
texIdGL texture id.
widthNew width in pixels.
heightNew height in pixels.

Implements kemena::kDriver.

◆ resizeFBOColorTextureMSAA()

void kemena::kOpenGLDriver::resizeFBOColorTextureMSAA ( uint32_t texId,
int samples,
int width,
int height )
overridevirtual

Reallocates a multisampled FBO colour texture to a new size/sample count.

Parameters
texIdGL texture id.
samplesNumber of MSAA samples.
widthNew width in pixels.
heightNew height in pixels.

Implements kemena::kDriver.

◆ setBlend()

void kemena::kOpenGLDriver::setBlend ( bool enable)
overridevirtual

Enables or disables alpha blending.

Parameters
enabletrue to enable.

Implements kemena::kDriver.

◆ setBlendFunc()

void kemena::kOpenGLDriver::setBlendFunc ( kBlendFactor src,
kBlendFactor dst )
overridevirtual

Sets the source and destination blend factors.

Parameters
srcSource colour blend factor.
dstDestination colour blend factor.

Implements kemena::kDriver.

◆ setClearColor()

void kemena::kOpenGLDriver::setClearColor ( float r,
float g,
float b,
float a )
overridevirtual

Sets the colour used to clear the colour buffer.

Parameters
rRed component in [0,1].
gGreen component in [0,1].
bBlue component in [0,1].
aAlpha component in [0,1].

Implements kemena::kDriver.

◆ setCullFace()

void kemena::kOpenGLDriver::setCullFace ( bool enable)
overridevirtual

Enables or disables face culling.

Parameters
enabletrue to enable.

Implements kemena::kDriver.

◆ setCullMode()

void kemena::kOpenGLDriver::setCullMode ( kCullMode mode)
overridevirtual

Selects which faces are culled.

Parameters
modeFront, back, or front-and-back.

Implements kemena::kDriver.

◆ setDepthTest()

void kemena::kOpenGLDriver::setDepthTest ( bool enable)
overridevirtual

Enables or disables depth testing.

Parameters
enabletrue to enable.

Implements kemena::kDriver.

◆ setDepthWrite()

void kemena::kOpenGLDriver::setDepthWrite ( bool enable)
overridevirtual

Enables or disables writing to the depth buffer.

Parameters
enabletrue to enable.

Implements kemena::kDriver.

◆ setFramebufferDrawBuffer()

void kemena::kOpenGLDriver::setFramebufferDrawBuffer ( )
overridevirtual

Sets the draw buffer of the bound FBO to colour attachment 0.

Implements kemena::kDriver.

◆ setFrontFace()

void kemena::kOpenGLDriver::setFrontFace ( kFrontFace face)
overridevirtual

Sets the winding order treated as front-facing.

Parameters
faceCW or CCW.

Implements kemena::kDriver.

◆ setMultisample()

void kemena::kOpenGLDriver::setMultisample ( bool enable)
overridevirtual

Enables or disables multisample anti-aliasing.

Parameters
enabletrue to enable.

Implements kemena::kDriver.

◆ setSampleAlphaToCoverage()

void kemena::kOpenGLDriver::setSampleAlphaToCoverage ( bool enable)
overridevirtual

Enables or disables alpha-to-coverage sampling.

Parameters
enabletrue to enable.

Implements kemena::kDriver.

◆ setSRGBEncoding()

void kemena::kOpenGLDriver::setSRGBEncoding ( bool enable)
overridevirtual

Enables or disables sRGB framebuffer encoding.

Parameters
enabletrue to enable.

Implements kemena::kDriver.

◆ setUniformBool()

void kemena::kOpenGLDriver::setUniformBool ( uint32_t progId,
const kString & name,
bool v )
overridevirtual

Sets a bool uniform.

Parameters
progIdProgram id.
nameUniform name.
vValue.

Implements kemena::kDriver.

◆ setUniformFloat()

void kemena::kOpenGLDriver::setUniformFloat ( uint32_t progId,
const kString & name,
float v )
overridevirtual

Sets a float uniform.

Parameters
progIdProgram id.
nameUniform name.
vValue.

Implements kemena::kDriver.

◆ setUniformInt()

void kemena::kOpenGLDriver::setUniformInt ( uint32_t progId,
const kString & name,
int v )
overridevirtual

Sets an int uniform.

Parameters
progIdProgram id.
nameUniform name.
vValue.

Implements kemena::kDriver.

◆ setUniformMat4()

void kemena::kOpenGLDriver::setUniformMat4 ( uint32_t progId,
const kString & name,
const kMat4 & v )
overridevirtual

Sets a mat4 uniform.

Parameters
progIdProgram id.
nameUniform name.
vValue.

Implements kemena::kDriver.

◆ setUniformMat4Array()

void kemena::kOpenGLDriver::setUniformMat4Array ( uint32_t progId,
const kString & name,
const std::vector< kMat4 > & v )
overridevirtual

Sets an array-of-mat4 uniform.

Parameters
progIdProgram id.
nameUniform array name.
vMatrices to upload.

Implements kemena::kDriver.

◆ setUniformUint()

void kemena::kOpenGLDriver::setUniformUint ( uint32_t progId,
const kString & name,
uint32_t v )
overridevirtual

Sets an unsigned int uniform.

Parameters
progIdProgram id.
nameUniform name.
vValue.

Implements kemena::kDriver.

◆ setUniformVec2()

void kemena::kOpenGLDriver::setUniformVec2 ( uint32_t progId,
const kString & name,
const kVec2 & v )
overridevirtual

Sets a vec2 uniform.

Parameters
progIdProgram id.
nameUniform name.
vValue.

Implements kemena::kDriver.

◆ setUniformVec3()

void kemena::kOpenGLDriver::setUniformVec3 ( uint32_t progId,
const kString & name,
const kVec3 & v )
overridevirtual

Sets a vec3 uniform.

Parameters
progIdProgram id.
nameUniform name.
vValue.

Implements kemena::kDriver.

◆ setUniformVec4()

void kemena::kOpenGLDriver::setUniformVec4 ( uint32_t progId,
const kString & name,
const kVec4 & v )
overridevirtual

Sets a vec4 uniform.

Parameters
progIdProgram id.
nameUniform name.
vValue.

Implements kemena::kDriver.

◆ setupRenderbuffer()

void kemena::kOpenGLDriver::setupRenderbuffer ( uint32_t rboId,
int width,
int height )
overridevirtual

Allocates depth/stencil storage for a renderbuffer.

Parameters
rboIdGL RBO id.
widthStorage width in pixels.
heightStorage height in pixels.

Implements kemena::kDriver.

◆ setupRenderbufferMSAA()

void kemena::kOpenGLDriver::setupRenderbufferMSAA ( uint32_t rboId,
int samples,
int width,
int height )
overridevirtual

Allocates multisampled depth/stencil storage for a renderbuffer.

Parameters
rboIdGL RBO id.
samplesNumber of MSAA samples.
widthStorage width in pixels.
heightStorage height in pixels.

Implements kemena::kDriver.

◆ setVertexAttribFloat()

void kemena::kOpenGLDriver::setVertexAttribFloat ( int location,
int components,
int stride,
size_t offset )
overridevirtual

Defines a floating-point vertex attribute layout.

Parameters
locationAttribute location index.
componentsNumber of components per vertex (1-4).
strideByte stride between consecutive vertices.
offsetByte offset of the attribute within the vertex.

Implements kemena::kDriver.

◆ setVertexAttribInt()

void kemena::kOpenGLDriver::setVertexAttribInt ( int location,
int components,
int stride,
size_t offset )
overridevirtual

Defines an integer vertex attribute layout.

Parameters
locationAttribute location index.
componentsNumber of components per vertex (1-4).
strideByte stride between consecutive vertices.
offsetByte offset of the attribute within the vertex.

Implements kemena::kDriver.

◆ setViewport()

void kemena::kOpenGLDriver::setViewport ( int x,
int y,
int width,
int height )
overridevirtual

Sets the rendering viewport rectangle.

Parameters
xLower-left x origin in pixels.
yLower-left y origin in pixels.
widthViewport width in pixels.
heightViewport height in pixels.

Implements kemena::kDriver.

◆ unbindFramebuffer()

void kemena::kOpenGLDriver::unbindFramebuffer ( )
overridevirtual

Unbinds the current FBO, restoring the default framebuffer.

Implements kemena::kDriver.

◆ unbindShaderProgram()

void kemena::kOpenGLDriver::unbindShaderProgram ( )
overridevirtual

Unbinds the current shader program.

Implements kemena::kDriver.

◆ unbindTexture2D()

void kemena::kOpenGLDriver::unbindTexture2D ( int unit)
overridevirtual

Unbinds the 2D texture on a unit.

Parameters
unitTexture unit index.

Implements kemena::kDriver.

◆ unbindTexture2DArray()

void kemena::kOpenGLDriver::unbindTexture2DArray ( int unit)
overridevirtual

Unbinds the 2D-array texture on a unit.

Parameters
unitTexture unit index.

Implements kemena::kDriver.

◆ unbindTextureCube()

void kemena::kOpenGLDriver::unbindTextureCube ( int unit)
overridevirtual

Unbinds the cubemap texture on a unit.

Parameters
unitTexture unit index.

Implements kemena::kDriver.

◆ unbindVertexArray()

void kemena::kOpenGLDriver::unbindVertexArray ( )
overridevirtual

Unbinds the current vertex array object.

Implements kemena::kDriver.

◆ uploadIndexBuffer()

void kemena::kOpenGLDriver::uploadIndexBuffer ( uint32_t bufferId,
const void * data,
size_t size )
overridevirtual

Uploads index data into an element array buffer (static draw).

Parameters
bufferIdGL buffer id.
dataPointer to index data.
sizeSize of the data in bytes.

Implements kemena::kDriver.

◆ uploadVertexBuffer()

void kemena::kOpenGLDriver::uploadVertexBuffer ( uint32_t bufferId,
const void * data,
size_t size )
overridevirtual

Uploads vertex data into an array buffer (static draw).

Parameters
bufferIdGL buffer id.
dataPointer to vertex data.
sizeSize of the data in bytes.

Implements kemena::kDriver.


The documentation for this class was generated from the following file: