Cinder  0.8.6
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Namespaces | Functions
gl.cpp File Reference
#include "cinder/gl/gl.h"
#include "cinder/gl/Vbo.h"
#include "cinder/CinderMath.h"
#include "cinder/Vector.h"
#include "cinder/Camera.h"
#include "cinder/TriMesh.h"
#include "cinder/Sphere.h"
#include "cinder/gl/Texture.h"
#include "cinder/Text.h"
#include "cinder/PolyLine.h"
#include "cinder/Path2d.h"
#include "cinder/Shape2d.h"
#include "cinder/Triangulate.h"
#include <cmath>
#include <map>
Include dependency graph for gl.cpp:

Namespaces

 cinder
 
 cinder::gl
 

Functions

bool cinder::gl::isExtensionAvailable (const std::string &extName)
 Returns whether a particular OpenGL extension is available. Caches results. More...
 
void cinder::gl::clear (const ColorA &color=ColorA::black(), bool clearDepthBuffer=true)
 Clears the OpenGL color buffer using color and optionally clears the depth buffer when clearDepthBuffer. More...
 
void cinder::gl::enableVerticalSync (bool enable=true)
 Enables or disables wait for vertical sync. More...
 
bool cinder::gl::isVerticalSyncEnabled ()
 Returns whether vertical sync is enabled for the current context. More...
 
void cinder::gl::setModelView (const Camera &cam)
 Sets the MODELVIEW matrix to reflect the values of cam. Leaves the MatrixMode as MODELVIEW. More...
 
void cinder::gl::setProjection (const Camera &cam)
 Sets the PROJECTION matrix to reflect the values of cam. Leaves the MatrixMode as PROJECTION. More...
 
void cinder::gl::setMatrices (const Camera &cam)
 Sets the MODELVIEW and PROJECTION matrices to reflect the values of cam. Leaves the MatrixMode as MODELVIEW. More...
 
void cinder::gl::pushModelView ()
 Pushes the MODELVIEW matrix onto its stack, preserving the current values. Leaves the MatrixMode as MODELVIEW. More...
 
void cinder::gl::popModelView ()
 Pops the MODELVIEW matrix off of its stack, restoring the values saved with the previous push. Leaves the MatrixMode as MODELVIEW. More...
 
void cinder::gl::pushModelView (const Camera &cam)
 Pushes the MODELVIEW matrix onto its stack, preserving the current values, and then sets the matrix to reflect cam. Leaves the MatrixMode as MODELVIEW. More...
 
void cinder::gl::pushProjection (const Camera &cam)
 Pushes the PROJECTION matrix onto its stack, preserving the current values, and then sets the matrix to reflect cam. Leaves the MatrixMode as PROJECTION. More...
 
void cinder::gl::pushMatrices ()
 Pushes the MODELVIEW and PROJECTION matrices onto their stacks, preserving the current values. Leaves the MatrixMode as MODELVIEW. More...
 
void cinder::gl::popMatrices ()
 Pops the MODELVIEW and PROJECTION matrices off their stacks, restoring the values saved with the previous push. Leaves the MatrixMode as MODELVIEW. More...
 
void cinder::gl::multModelView (const Matrix44f &mtx)
 Multiplies the current MODELVIEW matrix with mtx. Leaves the MatrixMode as MODELVIEW. More...
 
void cinder::gl::multProjection (const Matrix44f &mtx)
 Multiplies the current PROJECTION matrix with mtx. Leaves the MatrixMode as MODELVIEW. More...
 
Matrix44f cinder::gl::getModelView ()
 Returns the value of the current MODELVIEW matrix as a Matrix44f. More...
 
Matrix44f cinder::gl::getProjection ()
 Returns the value of the current PROJECTION matrix as a Matrix44f. More...
 
void cinder::gl::setMatricesWindowPersp (int screenWidth, int screenHeight, float fovDegrees=60.0f, float nearPlane=1.0f, float farPlane=1000.0f, bool originUpperLeft=true)
 Sets the viepwort and MODELVIEW and PROJECTION matrices to be a perspective projection with the upper-left corner at [0,0] and the lower-right at [screenWidth,screenHeight], but flipped vertically if not originUpperLeft. More...
 
void cinder::gl::setMatricesWindow (int screenWidth, int screenHeight, bool originUpperLeft=true)
 Sets the viewport and MODELVIEW and PROJECTION matrices to orthographic with the upper-left corner at [0,0] and the lower-right at [screenWidth,screenHeight] if originUpperLeft is true. Otherwise the origin is in the lower right. More...
 
Area cinder::gl::getViewport ()
 Returns the current OpenGL Viewport as an Area. More...
 
void cinder::gl::setViewport (const Area &area)
 Sets the current OpenGL Viewport to area. More...
 
void cinder::gl::translate (const Vec2f &pos)
 Produces a translation by pos in the current matrix. More...
 
void cinder::gl::translate (const Vec3f &pos)
 Produces a translation by pos in the current matrix. More...
 
void cinder::gl::scale (const Vec3f &scl)
 Produces a scale by scale in the current matrix. More...
 
void cinder::gl::rotate (const Vec3f &xyz)
 Produces a rotation around the X-axis by xyz.x degrees, the Y-axis by xyz.y degrees and the Z-axis by xyz.z degrees in the current matrix. Processed in X-Y-Z order. More...
 
void cinder::gl::rotate (const Quatf &quat)
 Produces a rotation by the quaternion quat in the current matrix. More...
 
void cinder::gl::enableAlphaBlending (bool premultiplied=false)
 Enables alpha blending. Selects a BlendFunc that is appropriate for premultiplied-alpha when premultiplied. More...
 
void cinder::gl::disableAlphaBlending ()
 Disables alpha blending. More...
 
void cinder::gl::enableAdditiveBlending ()
 Enables alpha blending and selects a BlendFunc for additive blending. More...
 
void cinder::gl::enableAlphaTest (float value=0.5f, int func=GL_GREATER)
 Enables alpha testing and sets the AlphaFunc to test for values which are func than value, which should be in the range [0, 1.0]. Possible values for func include GL_NEVER, GL_LESS, GL_EQUAL, GL_LEQUAL, GL_GREATER, GL_NOTEQUAL, GL_GEQUAL and GL_ALWAYS. More...
 
void cinder::gl::disableAlphaTest ()
 Disables alpha testing. More...
 
void cinder::gl::enableWireframe ()
 
void cinder::gl::disableWireframe ()
 
void cinder::gl::disableDepthRead ()
 Disables reading from the depth buffer, disabling z-testing. More...
 
void cinder::gl::enableDepthRead (bool enable=true)
 Enables reading from the depth buffer when enable, enabling z-testing. More...
 
void cinder::gl::enableDepthWrite (bool enable=true)
 Enables writing to the depth buffer when enable. More...
 
void cinder::gl::disableDepthWrite ()
 Disables writing to the depth buffer. More...
 
void cinder::gl::drawLine (const Vec2f &start, const Vec2f &end)
 Draws a line from start to end. More...
 
void cinder::gl::drawLine (const Vec3f &start, const Vec3f &end)
 Draws a line from start to end. More...
 
void cinder::gl::drawCube (const Vec3f &center, const Vec3f &size)
 Renders a solid cube centered at center of size size. Normals and created texture coordinates are generated for GL_TEXTURE_2D, with each face in the range [0,0] - [1.0,1.0]. More...
 
void cinder::gl::drawColorCube (const Vec3f &center, const Vec3f &size)
 Renders a solid cube centered at center of size size. Each face is assigned a unique color, and no normals or texture coordinates are generated. More...
 
void cinder::gl::drawStrokedCube (const Vec3f &center, const Vec3f &size)
 Renders a stroked cube centered at center of size size. More...
 
void cinder::gl::drawSphere (const Vec3f &center, float radius, int segments=12)
 Renders a solid sphere centered at center of radius radius. segments defines how many segments the sphere is subdivided into. Normals and texture coordinates in the range [0,1] are generated. More...
 
void cinder::gl::draw (const class Sphere &sphere, int segments=12)
 Renders a solid sphere. segments defines how many segments the sphere is subdivided into. Normals and texture coordinates in the range [0,1] are generated. More...
 
void cinder::gl::drawSolidCircle (const Vec2f &center, float radius, int numSegments=0)
 Renders a solid circle using triangle fans. The default value of zero for numSegments automatically determines a number of segments based on the circle's circumference. More...
 
void cinder::gl::drawStrokedCircle (const Vec2f &center, float radius, int numSegments=0)
 Renders a stroked circle using a line loop. The default value of zero for numSegments automatically determines a number of segments based on the circle's circumference. More...
 
void cinder::gl::drawSolidEllipse (const Vec2f &center, float radiusX, float radiusY, int numSegments=0)
 Renders a solid ellipse using triangle fans. The default value of zero for numSegments automatically determines a number of segments based on the ellipse's circumference. More...
 
void cinder::gl::drawStrokedEllipse (const Vec2f &center, float radiusX, float radiusY, int numSegments=0)
 Renders a stroked circle using a line loop. The default value of zero for numSegments automatically determines a number of segments based on the circle's circumference. More...
 
void cinder::gl::drawSolidRect (const Rectf &rect, bool textureRectangle=false)
 Renders a solid rectangle. Texture coordinates in the range [0,1] are generated unless textureRectangle. More...
 
void cinder::gl::drawStrokedRect (const Rectf &rect)
 Renders a stroked rectangle. More...
 
void cinder::gl::drawSolidRoundedRect (const Rectf &r, float cornerRadius, int numSegmentsPerCorner=0)
 
void cinder::gl::drawStrokedRoundedRect (const Rectf &r, float cornerRadius, int numSegmentsPerCorner=0)
 
void cinder::gl::drawSolidTriangle (const Vec2f &pt1, const Vec2f &pt2, const Vec2f &pt3)
 
void cinder::gl::drawSolidTriangle (const Vec2f pts[3])
 
void cinder::gl::drawSolidTriangle (const Vec2f &pt1, const Vec2f &pt2, const Vec2f &pt3, const Vec2f &texPt1, const Vec2f &texPt2, const Vec2f &texPt3)
 Renders a textured triangle. More...
 
void cinder::gl::drawSolidTriangle (const Vec2f pts[3], const Vec2f texCoord[3])
 
void cinder::gl::drawStrokedTriangle (const Vec2f &pt1, const Vec2f &pt2, const Vec2f &pt3)
 Renders a stroked triangle. More...
 
void cinder::gl::drawStrokedTriangle (const Vec2f pts[3])
 
void cinder::gl::drawCoordinateFrame (float axisLength=1.0f, float headLength=0.2f, float headRadius=0.05f)
 
void cinder::gl::drawVector (const Vec3f &start, const Vec3f &end, float headLength=0.2f, float headRadius=0.05f)
 Draws a vector starting at start and ending at end. An arrowhead is drawn at the end of radius headRadius and length headLength. More...
 
void cinder::gl::drawFrustum (const Camera &cam)
 Draws a wireframe representation of the frustum defined by cam. More...
 
void cinder::gl::drawTorus (float outterRadius, float innerRadius, int longitudeSegments=12, int latitudeSegments=12)
 Draws a torus at the origin, with an outter radius outterRadius and an inner radius innerRadius, subdivided into longitudeSegments and latitudeSegments. Normals and texture coordinates in the range [0,1] are generated. More...
 
void cinder::gl::drawCylinder (float baseRadius, float topRadius, float height, int slices=12, int stacks=1)
 Draws a open-ended cylinder, with base radius baseRadius and top radius topRadius, with height height, subdivided into slices and stacks. Normals and texture coordinates in the range [0,1] are generated. More...
 
void cinder::gl::draw (const PolyLine< Vec2f > &polyLine)
 
void cinder::gl::draw (const PolyLine< Vec3f > &polyLine)
 
void cinder::gl::draw (const Path2d &path2d, float approximationScale)
 
void cinder::gl::draw (const Shape2d &shape2d, float approximationScale)
 
void cinder::gl::drawSolid (const Path2d &path2d, float approximationScale)
 
void cinder::gl::drawSolid (const Shape2d &shape2d, float approximationScale)
 
void cinder::gl::drawSolid (const PolyLine2f &polyLine)
 Draws a solid (filled) PolyLine2f polyLine. Performance warning: This routine tesselates the polygon into triangles. Consider using Triangulator directly. More...
 
void cinder::gl::draw (const TriMesh2d &mesh)
 Draws a cinder::TriMesh mesh at the origin. More...
 
void cinder::gl::drawRange (const TriMesh2d &mesh, size_t startTriangle, size_t triangleCount)
 Draws a range of triangles starting with triangle # startTriangle and a count of triangleCount from cinder::TriMesh mesh at the origin. More...
 
void cinder::gl::draw (const TriMesh &mesh)
 Draws a cinder::TriMesh mesh at the origin. More...
 
void cinder::gl::drawRange (const TriMesh &mesh, size_t startTriangle, size_t triangleCount)
 Draws a range of triangles starting with triangle # startTriangle and a count of triangleCount from cinder::TriMesh mesh at the origin. More...
 
void cinder::gl::draw (const VboMesh &vbo)
 
void cinder::gl::drawRange (const VboMesh &vbo, size_t startIndex, size_t indexCount, int vertexStart, int vertexEnd)
 
void cinder::gl::drawArrays (const VboMesh &vbo, GLint first, GLsizei count)
 
void cinder::gl::drawBillboard (const Vec3f &pos, const Vec2f &scale, float rotationDegrees, const Vec3f &bbRight, const Vec3f &bbUp)
 Draws a textured quad of size scale that is aligned with the vectors bbRight and bbUp at pos, rotated by rotationDegrees around the vector orthogonal to bbRight and bbUp. More...
 
void cinder::gl::draw (const Texture &texture)
 Draws texture on the XY-plane. More...
 
void cinder::gl::draw (const Texture &texture, const Vec2f &pos)
 Draws texture on the XY-plane at pos. More...
 
void cinder::gl::draw (const Texture &texture, const Rectf &rect)
 Draws texture on the XY-plane in the rectangle defined by rect. More...
 
void cinder::gl::draw (const Texture &texture, const Area &srcArea, const Rectf &destRect)
 Draws the pixels inside srcArea of texture on the XY-plane in the rectangle defined by destRect. More...
 
void cinder::gl::drawString (const std::string &str, const Vec2f &pos, const ColorA &color=ColorA(1, 1, 1, 1), Font font=Font())
 Draws a string str with its lower left corner located at pos. Optional font and color affect the style. More...
 
void cinder::gl::drawStringCentered (const std::string &str, const Vec2f &pos, const ColorA &color=ColorA(1, 1, 1, 1), Font font=Font())
 Draws a string str with the horizontal center of its baseline located at pos. Optional font and color affect the style. More...
 
void cinder::gl::drawStringRight (const std::string &str, const Vec2f &pos, const ColorA &color=ColorA(1, 1, 1, 1), Font font=Font())
 Draws a right-justified string str with the center of its located at pos. Optional font and color affect the style. More...