scg3  0.6
scg::GeometryCore Class Reference

A core that contains geometry information to be rendered. More...

#include "GeometryCore.h"

Inheritance diagram for scg::GeometryCore:
[legend]
Collaboration diagram for scg::GeometryCore:
[legend]

Public Member Functions

 GeometryCore (GLenum primitiveType, DrawMode drawMode)
 
virtual ~GeometryCore ()
 
GeometryCoreaddAttributeData (GLuint location, const GLfloat *data, GLsizeiptr size, GLint dim, GLenum usage)
 
GeometryCoresetElementIndexData (const GLuint *data, GLsizeiptr size, GLenum usage)
 
int getNTriangles () const
 
virtual void render (RenderState *renderState)
 
- Public Member Functions inherited from scg::Core
 Core ()
 
virtual ~Core ()=0
 
virtual void renderPost (RenderState *renderState)
 

Static Public Member Functions

static GeometryCoreSP create (GLenum primitiveType, DrawMode drawMode)
 

Protected Attributes

GLenum primitiveType_
 
DrawMode drawMode_
 
std::function< void(GLenum, GLsizei)> drawFunc_
 
GLuint vao_
 
std::vector< GLuint > vboAttributes_
 
GLuint vboIndex_
 
GLsizei nElements_
 

Detailed Description

A core that contains geometry information to be rendered.

Vertices and indices are stored in vertex buffer objects (VBOs). Each geometry core has its own vertex array object (VAO) that is used to store attribute and element index bindings.

Definition at line 53 of file GeometryCore.h.

Constructor & Destructor Documentation

◆ GeometryCore()

scg::GeometryCore::GeometryCore ( GLenum  primitiveType,
DrawMode  drawMode 
)

Constructor.

Parameters
primitiveTypeGL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, or GL_TRIANGLE_FAN
drawModeDrawMode::ARRAYS or DrawMode::ELEMENTS

◆ ~GeometryCore()

virtual scg::GeometryCore::~GeometryCore ( )
virtual

Destructor.

Member Function Documentation

◆ addAttributeData()

GeometryCore* scg::GeometryCore::addAttributeData ( GLuint  location,
const GLfloat *  data,
GLsizeiptr  size,
GLint  dim,
GLenum  usage 
)

Add vertex attribute data that is stored in its own vertex buffer object (VBO).

Parameters
locationattribute location the VBO is bound to
dataattribute data
sizebuffer size in bytes
dimdimension of each attribute value, e.g., 3 for xyz vertices
usageGL_STATIC_DRAW, GL_DYNAMIC_DRAW, or GL_STREAM_DRAW
Returns
this pointer for method chaining

◆ create()

static GeometryCoreSP scg::GeometryCore::create ( GLenum  primitiveType,
DrawMode  drawMode 
)
static

Create shared pointer.

◆ getNTriangles()

int scg::GeometryCore::getNTriangles ( ) const

Get approximate number of triangles, called by Shape::getNTriangles().

◆ render()

virtual void scg::GeometryCore::render ( RenderState renderState)
virtual

Render geometry.

Implements scg::Core.

◆ setElementIndexData()

GeometryCore* scg::GeometryCore::setElementIndexData ( const GLuint *  data,
GLsizeiptr  size,
GLenum  usage 
)

Set element index data that is stored in its own vertex buffer object (VBO).

Parameters
dataelement data
sizebuffer size in bytes
usageGL_STATIC_DRAW, GL_DYNAMIC_DRAW, or GL_STREAM_DRAW
Returns
this pointer for method chaining

Member Data Documentation

◆ drawFunc_

std::function<void(GLenum, GLsizei)> scg::GeometryCore::drawFunc_
protected

Definition at line 111 of file GeometryCore.h.

◆ drawMode_

DrawMode scg::GeometryCore::drawMode_
protected

Definition at line 110 of file GeometryCore.h.

◆ nElements_

GLsizei scg::GeometryCore::nElements_
protected

Definition at line 115 of file GeometryCore.h.

◆ primitiveType_

GLenum scg::GeometryCore::primitiveType_
protected

Definition at line 109 of file GeometryCore.h.

◆ vao_

GLuint scg::GeometryCore::vao_
protected

Definition at line 112 of file GeometryCore.h.

◆ vboAttributes_

std::vector<GLuint> scg::GeometryCore::vboAttributes_
protected

Definition at line 113 of file GeometryCore.h.

◆ vboIndex_

GLuint scg::GeometryCore::vboIndex_
protected

Definition at line 114 of file GeometryCore.h.


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