![]() |
Scanframe Modular Application 0.1.0
|
OpenGL base class and wrapper template for vertex arrays. Automates most of the things needed for primitive objects. More...
#include <TVertexArray.h>
Classes | |
struct | ModeRange |
Modes to be called on the available indices. More... | |
struct | VT_Position |
Available structure for a typical selection of members. More... | |
struct | VT_PositionColor |
Available structure for a typical selection of members. More... | |
struct | VT_PositionNormal |
Available structure for a typical selection of members. More... | |
struct | VT_PositionNormalColor |
Available structure for a typical selection of members. More... | |
struct | VT_PositionNormalColorTexture |
Available structure for a typical selection of members. More... | |
struct | VT_PositionNormalTexture |
Available structure for a typical selection of members. More... | |
struct | VT_PositionTexture |
Available structure for a typical selection of members. More... | |
Public Member Functions | |
TVertexArray (ShaderProgram *sp) | |
Constructor. | |
~TVertexArray () override | |
Virtual destructor. | |
ShaderProgram * | shaderProgram () |
Gets the associated shader program. | |
void | draw () final |
Overridden from base class VertexArrayBase. Uses new style OpenGL with a shader program. | |
void | paint () final |
Overridden from base class VertexArrayBase. Uses old style OpenGL without a shader program. | |
bool | hasColor () const final |
Overridden from base class VertexArrayBase. | |
bool | hasTexture () const final |
Overridden from base class VertexArrayBase. | |
void | setTexture (QOpenGLTexture *texture) |
Assigns the texture. | |
NormalsDataType | getNormalsData () const override |
Overridden from base class. | |
void | clearData () override |
Clears the data to generate array buffers. | |
![]() | |
VertexArrayBase (QObject *parent=nullptr) | |
Default Qt object constructor. | |
void | triggerGenerate () |
Sets a flag to trigger data generation when the data is called for. | |
void | setRenderOptions (RenderOptions options) |
Modify the render options which will trigger a regeneration of the vertices and indices. | |
RenderOptions | getRenderOptions () const |
Gets the render options. | |
Protected Types | |
using | Vertex = std::conditional_t< VertexMembers==vmPosition, VT_Position, std::conditional_t< VertexMembers==(vmPosition|vmColor), VT_PositionColor, std::conditional_t< VertexMembers==(vmPosition|vmNormal), VT_PositionNormal, std::conditional_t< VertexMembers==(vmPosition|vmNormal|vmColor), VT_PositionNormalColor, std::conditional_t< VertexMembers==(vmPosition|vmTexCoord), VT_PositionTexture, std::conditional_t< VertexMembers==(vmPosition|vmNormal|vmTexCoord), VT_PositionNormalTexture, std::conditional_t< VertexMembers==(vmPosition|vmNormal|vmColor|vmTexCoord), VT_PositionNormalColorTexture, void > > > > > > > |
Conditional vertex structure type. Used for memory locations. | |
typedef TVector< GLuint > | IndexVectorType |
Type definition for storing indices. | |
Protected Member Functions | |
bool | setup () override |
Sets up the vertex array for the OpenGL context. | |
void | setupLayout () |
Sets up the layout of the Vertex structure for OpenGL. | |
template<typename VertexType , typename FieldType > | |
void | setAttribPointer (ShaderProgram::Attribute sa, size_t offset) |
Makes a call to setVertexAttribPointer(). | |
void | callModifyContext (const ModeRange &mr, bool before, bool draw, size_t mode_index) |
Calls the function modifyContext when overridden. | |
bool | checkData () const |
Check the data integrity of indices to vertices,. | |
![]() | |
bool | callGenerate () |
Makes a call to virtual function generate() when the #_generateFlag is set using triggerGenerate(). | |
virtual void | generate ()=0 |
Generate the data needed for creation of vertex array and/or indices. Is or must be called by setup() function. | |
virtual void | modifyContext (bool before, bool draw, size_t mode_index) |
Allows modifying the OpenGL context before and after drawing. | |
bool | isTriggered () const |
Gets the flag if data is to be (re-)generated. Flag is set to True initially. | |
Protected Attributes | |
TVector< Vertex > | _vertices |
Holds the data of the vertices before being copied to OpenGL memory. | |
IndexVectorType | _indices |
Holds the data of the indices for solid and wire drawing. | |
TVector< ModeRange > | _modes |
Modes to call glDrawArrays() or glDrawElements() depending on the _indices member not being empty. | |
Additional Inherited Members | |
![]() | |
enum | EVertexMember : VertexMember { vmPosition = 1 << 0 , vmNormal = 1 << 1 , vmColor = 1 << 2 , vmTexCoord = 1 << 3 } |
Possible member of a vertex structure. Where the position can not be omitted as part of the vertex. More... | |
enum | EDrawMode { dmDrawArrays , dmDrawElements } |
Drawing mode of by the template. More... | |
enum | ERenderOption : int { roNone = 0 , roWires = 1 << 0 , roNormals = 1 << 1 } |
Render options. More... | |
typedef unsigned | VertexMember |
Type used to describe vertex structure members. | |
typedef TVector< std::pair< vector3f, vector3f > > | NormalsDataType |
Type for extracting normals from all used vertices. | |
![]() | |
static const Color & | getDefaultColor () |
Gets the default color used by the vertex structures when not set by the derived class. Created to have a single location for the default color. An example how it is used: | |
static void | setDefaultColor (const QColor &color) |
Sets the default color used by the vertex structures when not set by the derived class. | |
OpenGL base class and wrapper template for vertex arrays. Automates most of the things needed for primitive objects.
|
protected |
Type definition for storing indices.
|
protected |
Conditional vertex structure type. Used for memory locations.
|
explicit |
Constructor.
sp | Shader program instance. |
|
override |
Virtual destructor.
|
protected |
Calls the function modifyContext when overridden.
mr | Mode range getting rendered. |
before | |
draw | |
mode_index |
|
protected |
Check the data integrity of indices to vertices,.
|
overridevirtual |
Clears the data to generate array buffers.
Implements sf::xgl::VertexArrayBase.
|
finalvirtual |
Overridden from base class VertexArrayBase. Uses new style OpenGL with a shader program.
Implements sf::xgl::VertexArrayBase.
|
overridevirtual |
Overridden from base class.
Implements sf::xgl::VertexArrayBase.
|
finalvirtual |
Overridden from base class VertexArrayBase.
Implements sf::xgl::VertexArrayBase.
|
finalvirtual |
Overridden from base class VertexArrayBase.
Implements sf::xgl::VertexArrayBase.
|
finalvirtual |
Overridden from base class VertexArrayBase. Uses old style OpenGL without a shader program.
Implements sf::xgl::VertexArrayBase.
|
protected |
Makes a call to setVertexAttribPointer().
VertexType | The vertex structure. |
FieldType | Structure field which is a std::array<> having a 'value_type'. |
sa | Shader attribute. |
offset |
void sf::xgl::TVertexArray< VertexMembers >::setTexture | ( | QOpenGLTexture * | texture | ) |
Assigns the texture.
texture |
|
overrideprotectedvirtual |
Sets up the vertex array for the OpenGL context.
Implements sf::xgl::VertexArrayBase.
|
protected |
Sets up the layout of the Vertex structure for OpenGL.
ShaderProgram * sf::xgl::TVertexArray< VertexMembers >::shaderProgram | ( | ) |
Gets the associated shader program.
|
protected |
Holds the data of the indices for solid and wire drawing.
|
protected |
Modes to call glDrawArrays() or glDrawElements() depending on the _indices member not being empty.
|
protected |
Holds the data of the vertices before being copied to OpenGL memory.
QOpenGLBuffer sf::xgl::TVertexArray< VertexMembers >::ebo {QOpenGLBuffer::IndexBuffer} |
Holds the index buffer object for solid drawing.
QOpenGLBuffer sf::xgl::TVertexArray< VertexMembers >::vbo {QOpenGLBuffer::VertexBuffer} |
Holds the vertex buffer object.