40 using namespace KIGFX;
43 m_noTransform( true ),
45 m_reserved( nullptr ),
74 static bool show_err =
true;
82 DisplayError(
nullptr, wxT(
"VERTEX_MANAGER::Reserve: Vertex allocation error" ) );
98 static bool show_err =
true;
116 if( newVertex ==
nullptr )
120 DisplayError(
nullptr, wxT(
"VERTEX_MANAGER::Vertex: Vertex allocation error" ) );
136 static bool show_err =
true;
141 if( newVertex ==
nullptr )
145 DisplayError(
nullptr, wxT(
"VERTEX_MANAGER::Vertices: Vertex allocation error" ) );
153 for(
unsigned int i = 0; i < aSize; ++i )
155 putVertex( newVertex[i], aVertices[i].x, aVertices[i].y, aVertices[i].z );
182 unsigned int size = aItem.
GetSize();
187 for(
unsigned int i = 0; i < size; ++i )
189 vertex->
r = aColor.
r * 255.0;
190 vertex->
g = aColor.
g * 255.0;
191 vertex->
b = aColor.
b * 255.0;
192 vertex->
a = aColor.
a * 255.0;
202 unsigned int size = aItem.
GetSize();
207 for(
unsigned int i = 0; i < size; ++i )
228 m_gpu->SetShader( aShader );
240 m_gpu->BeginDrawing();
246 m_gpu->DrawIndices( &aItem );
269 glm::vec4 transVertex( aX, aY, aZ, 1.0f );
272 aTarget.
x = transVertex.x;
273 aTarget.
y = transVertex.y;
274 aTarget.
z = transVertex.z;
292 m_gpu->EnableDepthTest( aEnabled );
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
static VERTEX_CONTAINER * MakeContainer(bool aCached)
Return a pointer to a new container of an appropriate type.
The Cairo implementation of the graphics abstraction layer.
This file is part of the common library.
std::shared_ptr< VERTEX_CONTAINER > m_container
Container for vertices, may be cached or noncached.
bool Reserve(unsigned int aSize)
Allocate space for vertices, so it will be used with subsequent Vertex() calls.
void BeginDrawing() const
Prepare buffers and items to start drawing.
void DrawItem(const VERTEX_ITEM &aItem) const
Draw an item to the buffer.
unsigned int GetSize() const
Return information about number of vertices stored.
GLfloat m_shader[SHADER_STRIDE]
Currently used shader and its parameters.
bool Vertex(const VERTEX &aVertex)
Add a vertex with the given coordinates to the currently set item.
void putVertex(VERTEX &aTarget, GLfloat aX, GLfloat aY, GLfloat aZ) const
Apply all transformation to the given coordinates and store them at the specified target.
bool m_noTransform
State machine variables True in case there is no need to transform vertices.
glm::mat4 m_transform
Currently used transform matrix.
void FinishItem() const
Clean after adding an item.
void Unmap()
Unmap vertex buffer.
void ChangeItemDepth(const VERTEX_ITEM &aItem, GLfloat aDepth) const
Change the depth of all vertices owned by an item.
VERTEX * GetVertices(const VERTEX_ITEM &aItem) const
Return a pointer to the vertices owned by an item.
void SetShader(SHADER &aShader) const
Set a shader program that is going to be used during rendering.
static GPU_MANAGER * MakeManager(VERTEX_CONTAINER *aContainer)
void Map()
Map vertex buffer.
Provide the access to the OpenGL shaders.
bool Vertices(const VERTEX aVertices[], unsigned int aSize)
Add one or more vertices to the currently set item.
void EndDrawing() const
Finish drawing operations.
void FreeItem(VERTEX_ITEM &aItem) const
Free the memory occupied by the item, so it is no longer stored in the container.
Class to store instances of VERTEX without caching.
void SetItem(VERTEX_ITEM &aItem) const
Set an item to start its modifications.
GLubyte m_color[COLOR_STRIDE]
Currently used color.
void EnableDepthTest(bool aEnabled)
Enable/disable Z buffer depth test.
Class to handle an item held in a container.
unsigned int GetOffset() const
Return data offset in the container.
VERTEX_MANAGER(bool aCached)
static constexpr size_t SHADER_STRIDE
void ChangeItemColor(const VERTEX_ITEM &aItem, const COLOR4D &aColor) const
Change the color of all vertices owned by an item.
std::shared_ptr< GPU_MANAGER > m_gpu
GPU manager for data transfers and drawing operations.
VERTEX * m_reserved
Currently reserved chunk to store vertices.
void Clear() const
Remove all the stored vertices from the container.
unsigned int m_reservedSpace
Currently available reserved space.
A color representation with 4 components: red, green, blue, alpha.