globjects  1.0.0.000000000000
Strict OpenGL objects wrapper.
AbstractState.h
Go to the documentation of this file.
1
2#pragma once
3
4#include <array>
5
6#include <glbinding/gl/types.h>
7
8#include <globjects/globjects_api.h>
9
10
11namespace globjects
12{
13
14
15class StateSetting;
16
17class GLOBJECTS_API AbstractState
18{
19public:
20 virtual void enable(gl::GLenum capability) = 0;
21 virtual void disable(gl::GLenum capability) = 0;
22 virtual bool isEnabled(gl::GLenum capability) const = 0;
23 virtual void enable(gl::GLenum capability, int index) = 0;
24 virtual void disable(gl::GLenum capability, int index) = 0;
25 virtual bool isEnabled(gl::GLenum capability, int index) const = 0;
26
27 void setEnabled(gl::GLenum capability, bool enabled);
28 void setEnabled(gl::GLenum capability, int index, bool enabled);
29
30 void blendColor(gl::GLfloat red, gl::GLfloat green, gl::GLfloat blue, gl::GLfloat alpha);
31 void blendColor(const std::array<gl::GLfloat, 4> & color);
32 void blendFunc(gl::GLenum sFactor, gl::GLenum dFactor);
33 void blendFuncSeparate(gl::GLenum srcRGB, gl::GLenum dstRGB, gl::GLenum srcAlpha, gl::GLenum dstAlpha);
34 void clearColor(gl::GLfloat red, gl::GLfloat green, gl::GLfloat blue, gl::GLfloat alpha);
35 void clearColor(const std::array<gl::GLfloat, 4> & color);
36 void clearDepth(gl::GLfloat depth);
37 void clearStencil(gl::GLint s);
38 void colorMask(gl::GLboolean red, gl::GLboolean green, gl::GLboolean blue, gl::GLboolean alpha);
39 void colorMask(const std::array<gl::GLboolean, 4> & mask);
40 void cullFace(gl::GLenum mode);
41 void depthFunc(gl::GLenum func);
42 void depthMask(gl::GLboolean flag);
43 void depthRange(gl::GLdouble nearVal, gl::GLdouble farVal);
44 void depthRange(gl::GLfloat nearVal, gl::GLfloat farVal);
45 void depthRange(const std::array<gl::GLfloat, 2> & range);
46 void frontFace(gl::GLenum winding);
47 void logicOp(gl::GLenum opcode);
48 void pixelStore(gl::GLenum pname, gl::GLboolean param);
49 void pixelStore(gl::GLenum pname, gl::GLint param);
50 void pixelStore(gl::GLenum pname, gl::GLfloat param);
51 void pointParameter(gl::GLenum pname, gl::GLenum param);
52 void pointSize(gl::GLfloat size);
53 void polygonMode(gl::GLenum face, gl::GLenum mode);
54 void polygonOffset(gl::GLfloat factor, gl::GLfloat units);
55 void primitiveRestartIndex(gl::GLuint index);
56 void provokingVertex(gl::GLenum provokeMode);
57 void sampleCoverage(gl::GLfloat value, gl::GLboolean invert);
58 void scissor(gl::GLint x, gl::GLint y, gl::GLsizei width, gl::GLsizei height);
59 void scissor(const std::array<gl::GLint, 4> & scissorBox);
60 void stencilFunc(gl::GLenum func, gl::GLint ref, gl::GLuint mask);
61 void stencilMask(gl::GLuint mask);
62 void stencilOp(gl::GLenum stencilFail, gl::GLenum depthFail, gl::GLenum depthPass);
63 void stencilFuncSeparate(gl::GLenum face, gl::GLenum func, gl::GLint ref, gl::GLuint mask);
64 void stencilMaskSeparate(gl::GLenum face, gl::GLuint mask);
65 void stencilOpSeparate(gl::GLenum face, gl::GLenum stencilFail, gl::GLenum depthFail, gl::GLenum depthPass);
66
67 virtual void add(StateSetting * setting) = 0;
68
69 template <typename... Arguments>
70 void set(void (*function)(Arguments...), Arguments... arguments);
71};
72
73
74} // namespace globjects
75
76
77#include <globjects/AbstractState.inl>
Definition: AbstractState.h:18
void depthRange(gl::GLdouble nearVal, gl::GLdouble farVal)
void blendFuncSeparate(gl::GLenum srcRGB, gl::GLenum dstRGB, gl::GLenum srcAlpha, gl::GLenum dstAlpha)
void stencilFunc(gl::GLenum func, gl::GLint ref, gl::GLuint mask)
void provokingVertex(gl::GLenum provokeMode)
void scissor(const std::array< gl::GLint, 4 > &scissorBox)
virtual void disable(gl::GLenum capability)=0
void logicOp(gl::GLenum opcode)
void clearStencil(gl::GLint s)
void set(void(*function)(Arguments...), Arguments... arguments)
void pixelStore(gl::GLenum pname, gl::GLboolean param)
virtual bool isEnabled(gl::GLenum capability) const =0
void depthFunc(gl::GLenum func)
void clearColor(const std::array< gl::GLfloat, 4 > &color)
void polygonOffset(gl::GLfloat factor, gl::GLfloat units)
void stencilOp(gl::GLenum stencilFail, gl::GLenum depthFail, gl::GLenum depthPass)
void pointParameter(gl::GLenum pname, gl::GLenum param)
void depthRange(gl::GLfloat nearVal, gl::GLfloat farVal)
void primitiveRestartIndex(gl::GLuint index)
void stencilFuncSeparate(gl::GLenum face, gl::GLenum func, gl::GLint ref, gl::GLuint mask)
void blendColor(const std::array< gl::GLfloat, 4 > &color)
void depthRange(const std::array< gl::GLfloat, 2 > &range)
virtual void disable(gl::GLenum capability, int index)=0
void clearDepth(gl::GLfloat depth)
void frontFace(gl::GLenum winding)
void pointSize(gl::GLfloat size)
void scissor(gl::GLint x, gl::GLint y, gl::GLsizei width, gl::GLsizei height)
void stencilMaskSeparate(gl::GLenum face, gl::GLuint mask)
void pixelStore(gl::GLenum pname, gl::GLint param)
virtual void enable(gl::GLenum capability)=0
void stencilOpSeparate(gl::GLenum face, gl::GLenum stencilFail, gl::GLenum depthFail, gl::GLenum depthPass)
void pixelStore(gl::GLenum pname, gl::GLfloat param)
void stencilMask(gl::GLuint mask)
void depthMask(gl::GLboolean flag)
virtual void add(StateSetting *setting)=0
virtual bool isEnabled(gl::GLenum capability, int index) const =0
void setEnabled(gl::GLenum capability, int index, bool enabled)
void sampleCoverage(gl::GLfloat value, gl::GLboolean invert)
void cullFace(gl::GLenum mode)
void colorMask(const std::array< gl::GLboolean, 4 > &mask)
virtual void enable(gl::GLenum capability, int index)=0
void blendFunc(gl::GLenum sFactor, gl::GLenum dFactor)
void clearColor(gl::GLfloat red, gl::GLfloat green, gl::GLfloat blue, gl::GLfloat alpha)
void colorMask(gl::GLboolean red, gl::GLboolean green, gl::GLboolean blue, gl::GLboolean alpha)
void polygonMode(gl::GLenum face, gl::GLenum mode)
void blendColor(gl::GLfloat red, gl::GLfloat green, gl::GLfloat blue, gl::GLfloat alpha)
void setEnabled(gl::GLenum capability, bool enabled)
Definition: StateSetting.h:37
Contains all the classes that wrap OpenGL functionality.