KarmaEngine
Game Engine for practical learning and research purposes
Loading...
Searching...
No Matches
Karma::KarmaGuiBackendRendererUserData Struct Reference

A multiply inherited class for supporting both OpenGL and Vulkan API's. More...

#include <KarmaGuiRenderer.h>

Inheritance diagram for Karma::KarmaGuiBackendRendererUserData:
Collaboration diagram for Karma::KarmaGuiBackendRendererUserData:

Public Member Functions

KGTextureID GetTextureIDAtIndex (uint32_t index)
 
uint32_t GetTextureWidthAtIndex (uint32_t index)
 
uint32_t GetTextureHeightAtIndex (uint32_t index)
 
- Public Member Functions inherited from Karma::KarmaGui_ImplOpenGL3_Data
 KarmaGui_ImplOpenGL3_Data ()
 A constructor.
 

Additional Inherited Members

- Public Attributes inherited from Karma::KarmaGui_ImplOpenGL3_Data
GLuint GlVersion
 The OpenGL version in use.
 
char GlslVersionString [32]
 Specified by user or detected based on compile time GL settings.
 
GLuint FontTexture
 Array ID for OpenGL's font texture.
 
std::vector< MesaDecalDataopenglMesaDecalDataList
 The list of all the images' data to be used in KarmaGui with OpenGL api.
 
GLuint ShaderHandle
 The handle for KarmaGui's shader program.
 
GLint AttribLocationTex
 An integer that represents the location of a texture uniform variable within a program object.
 
GLint AttribLocationProjMtx
 An integer that represents the location of a projection matrix uniform variable within a program object.
 
GLuint AttribLocationVtxPos
 An integer that represents the location of a vertex position (model transform?) uniform variable within a program object.
 
GLuint AttribLocationVtxUV
 An integer that represents the location of a UV uniform variable within a program object.
 
GLuint AttribLocationVtxColor
 An integer that represents the location of a vertex colo(u)r uniform variable within a program object.
 
unsigned int VboHandle
 The handle for vertex buffer (GL_ARRAY_BUFFER) object meant for KarmaGui using OpenGL api.
 
unsigned int ElementsHandle
 The handle for index buffer (GL_ELEMENT_ARRAY_BUFFER) object meant for KarmaGui using OpenGL api.
 
GLsizeiptr VertexBufferSize
 The size of total sum of vertices in int units of sizeof(KGDrawVert) to be utilized by KarmaGui using OpenGL api.
 
GLsizeiptr IndexBufferSize
 The size of total sum of indices in int units of sizeof(KGDrawVert) to be utilized by KarmaGui using OpenGL api.
 
bool HasClipOrigin
 If extension GL_ARB_clip_control is supported and macro IMGUI_IMPL_OPENGL_MAY_HAVE_EXTENSIONS is defined or GlVersion >= 450 (setting the value true), then we look for clip origin. Assumption (in KarmaGui_ImplOpenGL3_SetupRenderState) is: origin is lower left.
 
bool UseBufferSubData
 True when the processor vendor is Intel and we are on Windows platform. When true glBufferSubData (instead of glBufferData) is used to upload vertex/index buffers.
 
- Public Attributes inherited from Karma::KarmaGui_ImplVulkan_Data
KarmaGui_ImplVulkan_InitInfo VulkanInitInfo
 KarmaGui's initialization data.
 
VkRenderPass RenderPass
 A render pass object represents a collection of attachments, subpasses, and dependencies between the subpasses, and describes how the attachments are used over the course of the subpasses.
 
VkDeviceSize BufferMemoryAlignment
 The value for default alignment for index and vertex buffers. The value is set to 256 by DearImgui authors, so we do in KarmaGuiRenderer::KarmaGui_ImplVulkan_Init.
 
VkPipelineCreateFlags PipelineCreateFlags
 Flags to be set for Vulkan's graphics pipeline.
 
VkDescriptorSetLayout DescriptorSetLayout
 A handle to the descriptorsetlayout created by backend in KarmaGuiVulkanHandler::KarmaGui_ImplVulkan_CreateDescriptorSetLayout.
 
VkPipelineLayout PipelineLayout
 Opaque handle to a pipeline layout object. Access to descriptor sets from a pipeline is accomplished through a pipeline layout. Zero or more descriptor set layouts and zero or more push constant ranges are combined to form a pipeline layout object describing the complete set of resources that can be accessed by a pipeline. The pipeline layout represents a sequence of descriptor sets with each having a specific layout. This sequence of layouts is used to determine the interface between shader stages and shader resources. Each pipeline is created using a pipeline layout.
 
VkPipeline Pipeline
 A huge object in Vulkan that encompasses the configuration of the entire GPU for the draw. Once a pipeline is built, it can be bound inside a command buffer, and then when you draw anything it will use the bound pipeline.
 
uint32_t Subpass
 Not sure what the use of this Subpass is. Seems vestigial?
 
VkShaderModule ShaderModuleVert
 Opaque handle to a vertex shader module object for backend. Shader modules contain shader code and one or more entry points. Shaders are selected from a shader module by specifying an entry point as part of pipeline creation. The stages of a pipeline can use shaders that come from different modules. The shader code defining a shader module must be in the SPIR-V format, as described by the Vulkan Environment for SPIR-V appendix.
 
VkShaderModule ShaderModuleFrag
 Opaque handle to fragment shader module object for backend. Shader modules contain shader code and one or more entry points. Shaders are selected from a shader module by specifying an entry point as part of pipeline creation. The stages of a pipeline can use shaders that come from different modules. The shader code defining a shader module must be in the SPIR-V format, as described by the Vulkan Environment for SPIR-V appendix.
 
VkSampler FontSampler
 Opaque handle to a sampler object. The object represents the state of an image sampler which is used by the implementation to read image data and apply filtering and other transformations for the shader.
 
VkDeviceMemory FontMemory
 The memory resource allocated for the fonts to be displayed by the backend.
 
VkImage FontImage
 A 2D font image object with following properties.
 
VkImageView FontView
 The image view, for 2D font, representing contiguous ranges of the image subresources and containing additional metadata which are used by pipeline shaders for reading or writing image data.
 
VkDescriptorSet FontDescriptorSet
 Container for uploading image texture relevant data, TextureView for instance, from CPU to GPU.
 
VkDeviceMemory UploadBufferMemory
 Device allocated memory for font image pixels' buffer.
 
VkBuffer UploadBuffer
 Vulkan buffer containing font texture pixels.
 
std::vector< KarmaGui_ImplVulkan_Image_TextureData * > vulkanMesaDecalDataList
 List of vulkan images' textures, for instance icons and stuff.
 

Detailed Description

A multiply inherited class for supporting both OpenGL and Vulkan API's.

Note
Seems like a flaw in design? Try using polymorphism appropriately.
Todo
This just fattens the KarmaBackendRendererUserData with disregard to I (Interface seggregation principle) of SOLID principles. Try using polymorphism by wormbo's "other way round" phrase and making OpenGL3_Data and Vulkan_Data child classes of KarmaGuiBackendRendererUserData.
Since
Karma 1.0.0

The documentation for this struct was generated from the following files: