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