jGL
Loading...
Searching...
No Matches
Public Member Functions | Static Public Attributes | List of all members
jGL::GL::glShapeRenderer Class Reference

OpenGL implementation of ShapeRenderer. More...

#include <glShapeRenderer.h>

Inheritance diagram for jGL::GL::glShapeRenderer:
Inheritance graph
[legend]
Collaboration diagram for jGL::GL::glShapeRenderer:
Collaboration graph
[legend]

Public Member Functions

 glShapeRenderer (size_t sizeHint=8)
 Construct a new glShapeRenderer.
 
 ~glShapeRenderer ()
 
- Public Member Functions inherited from jGL::ShapeRenderer
 ShapeRenderer (size_t sizeHint=8)
 Construct a new ShapeRenderer.
 
 ShapeRenderer (std::shared_ptr< Shader > shader, size_t sizeHint=8)
 Construct a new ShapeRenderer.
 
ShapegetShape (ShapeId id)
 
const TransformgetTransform (ShapeId id)
 
const glm::vec4 * getColour (ShapeId id)
 
virtual void draw (std::shared_ptr< Shader > shader, std::multimap< RenderPriority, ShapeId > &ids, UpdateInfo info=UpdateInfo())
 Draw with overriding render priority and shader.
 
virtual void draw (std::multimap< RenderPriority, ShapeId > &ids, UpdateInfo info=UpdateInfo())
 Draw with overriding render priority.
 
virtual void draw (std::shared_ptr< Shader > shader, UpdateInfo info=UpdateInfo())
 Draw with overriding shader and cached priorities.
 
virtual void draw (UpdateInfo info=UpdateInfo())
 Draw with default shader and cached priorities.
 
bool hasId (const ShapeId id) const
 
virtual void setProjection (glm::mat4 p)
 
- Public Member Functions inherited from PriorityStore< Shape >
 PriorityStore (uint64_t sizeHint=8)
 Construct a new Priority Store with a reserved size.
 
virtual void clear ()
 
virtual void add (Shape s, ElementId id, Priority priority=0)
 Insert an element.
 
virtual void remove (ElementId id)
 
void updatePriority (ElementId id, Priority newPriority)
 
std::vector< std::pair< Info, Shape > > vectorise (std::multimap< Priority, ElementId > &oids)
 Return a vector from overriding priorities.
 
Shape & operator[] (ElementId id)
 
std::vector< std::pair< Info, Shape > >::const_iterator begin () const
 
std::vector< std::pair< Info, Shape > >::const_iterator end () const
 
uint64_t size () const
 
bool hasId (const ElementId id) const
 

Static Public Attributes

static const char * shapeVertexShader
 A vertex shader for any default shapes.
 
static const char * rectangleFragmentShader
 A fragment shader to draw rectangles.
 
static const char * ellipseFragmentShader
 A fragment shader to draw ellipses.
 

Additional Inherited Members

- Protected Attributes inherited from jGL::ShapeRenderer
std::shared_ptr< Shadershader
 
glm::mat4 projection = glm::mat4(0.0f)
 
- Protected Attributes inherited from PriorityStore< Shape >
std::unordered_map< ElementId, std::pair< Shape, Priority > > idToElement
 
std::vector< std::pair< Info, Shape > > cache
 

Detailed Description

OpenGL implementation of ShapeRenderer.

Constructor & Destructor Documentation

◆ glShapeRenderer()

jGL::GL::glShapeRenderer::glShapeRenderer ( size_t  sizeHint = 8)
inline

Construct a new glShapeRenderer.

Parameters
sizeHinthint at the number of shapes.

◆ ~glShapeRenderer()

jGL::GL::glShapeRenderer::~glShapeRenderer ( )
inline

Member Data Documentation

◆ ellipseFragmentShader

const char * jGL::GL::glShapeRenderer::ellipseFragmentShader
static
Initial value:
=
"#version " GLSL_VERSION "\n"
"precision lowp float; precision lowp int;\n"
"in vec2 texCoord;\n"
"in vec4 colour;\n"
"out vec4 fragment;\n"
"void main(void){\n"
"vec2 c = texCoord-vec2(0.5,0.5);\n"
"if (dot(c,c) > 0.5*0.5) {discard;}\n"
"fragment = colour;\n"
"}"

A fragment shader to draw ellipses.

Remarks
Assume shapeVertexShader inputs

◆ rectangleFragmentShader

const char * jGL::GL::glShapeRenderer::rectangleFragmentShader
static
Initial value:
=
"#version " GLSL_VERSION "\n"
"precision lowp float; precision lowp int;\n"
"in vec2 texCoord;\n"
"in vec4 colour;\n"
"layout(location=0) out vec4 fragment;\n"
"void main(){\n"
"fragment = colour;\n"
"}"

A fragment shader to draw rectangles.

Remarks
Assume shapeVertexShader inputs

◆ shapeVertexShader

const char * jGL::GL::glShapeRenderer::shapeVertexShader
static
Initial value:
=
"#version " GLSL_VERSION "\n"
"precision lowp float; precision lowp int;\n"
"layout(location=0) in vec4 a_position;\n"
"layout(location=1) in vec3 a_xytheta;\n"
"layout(location=2) in vec2 a_scale;\n"
"layout(location=3) in vec4 a_colour;\n"
"uniform mat4 proj;\n"
"out vec2 texCoord;\n"
"out vec4 colour;\n"
"void main(){"
"vec2 pos = a_position.xy*a_scale;\n"
"float ct = cos(a_xytheta.z); float st = sin(a_xytheta.z);\n"
"mat2 rot = mat2(ct, -st, st, ct);\n"
"pos = rot*pos + a_xytheta.xy;\n"
"gl_Position = proj*vec4(pos,0.0,1.0);\n"
"texCoord = a_position.zw;\n"
"colour = a_colour;\n"
"}"

A vertex shader for any default shapes.


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