4 Prefix: glc - OpenGL Core
5 Beschreibung: diese Unit definiert Enum-Typen die OpenGL Konstanten wrappen und stellt zusätzlich
6 Funktions-Wrapper zur verfügung die diese Enum-Typen als Parameter entgegen nehmen }
21 faBoth = GL_FRONT_AND_BACK);
32 dfLessEqual = GL_LEQUAL,
33 dfGreater = GL_GREATER,
34 dfNotEqual = GL_NOTEQUAL,
35 dfGreaterEqual = GL_GEQUAL,
36 dfAlways = GL_ALWAYS);
39 cbDepthBuffer = GL_DEPTH_BUFFER_BIT,
40 cbAccumBuffer = GL_ACCUM_BUFFER_BIT,
41 cbStencilBuffer = GL_STENCIL_BUFFER_BIT,
42 cbColorBuffer = GL_COLOR_BUFFER_BIT);
44 TglcTextureMinFilter = (
45 mfNearest = GL_NEAREST,
47 mfNearestMipmapNearest = GL_NEAREST_MIPMAP_NEAREST,
48 mfLinearMipmapNearest = GL_LINEAR_MIPMAP_NEAREST,
49 mfNearestMipmapLinear = GL_NEAREST_MIPMAP_LINEAR,
50 mfLinearMipmapLinear = GL_LINEAR_MIPMAP_LINEAR);
52 TglcTextureMagFilter = (
53 mfNearest = GL_NEAREST,
54 mfLinear = GL_LINEAR);
59 twClampToBorder = GL_CLAMP_TO_BORDER,
60 twClampToEdge = GL_CLAMP_TO_EDGE,
61 twMirroredRepeat = GL_MIRRORED_REPEAT);
66 bfSrcColor = GL_SRC_COLOR,
67 bfOneMinusSrcColor = GL_ONE_MINUS_SRC_COLOR,
68 bfSrcAlpha = GL_SRC_ALPHA,
69 bfOneMinusSrcAlpha = GL_ONE_MINUS_SRC_ALPHA,
70 bfDstAlpha = GL_DST_ALPHA,
71 bfOneMinusDstAlpha = GL_ONE_MINUS_DST_ALPHA,
72 bfDstColor = GL_DST_COLOR,
73 bfOneMinusDstColor = GL_ONE_MINUS_DST_COLOR,
74 bfSrcAlphaSaturate = GL_SRC_ALPHA_SATURATE,
75 bgConstColor = GL_CONSTANT_COLOR,
76 bfOneMinusConstColor = GL_ONE_MINUS_CONSTANT_COLOR,
77 bfConstAlpha = GL_CONSTANT_ALPHA,
78 bfOneMinusConstAlpha = GL_ONE_MINUS_CONSTANT_ALPHA);
88 fmColorIndex = GL_COLOR_INDEX,
89 fmDepthComponent = GL_DEPTH_COMPONENT,
96 fmLuminance = GL_LUMINANCE,
97 fmLuminanceAlpha = GL_LUMINANCE_ALPHA,
100 fmDepthStencil = GL_DEPTH_STENCIL);
102 TglcInternalFormat = (
104 ifDepthComponent = GL_DEPTH_COMPONENT,
108 ifLuminance = GL_LUMINANCE,
109 ifLuminanceAlpha = GL_LUMINANCE_ALPHA,
110 ifR3G3B2 = GL_R3_G3_B2,
111 ifAlpha4 = GL_ALPHA4,
112 ifAlpha8 = GL_ALPHA8,
113 ifAlpha12 = GL_ALPHA12,
114 ifAlpha16 = GL_ALPHA16,
115 ifLuminance4 = GL_LUMINANCE4,
116 ifLuminance8 = GL_LUMINANCE8,
117 ifLuminance12 = GL_LUMINANCE12,
118 ifLuminance16 = GL_LUMINANCE16,
119 ifLuminance4Alpha4 = GL_LUMINANCE4_ALPHA4,
120 ifLuminance6Alpha2 = GL_LUMINANCE6_ALPHA2,
121 ifLuminance8Alpha8 = GL_LUMINANCE8_ALPHA8,
122 ifLuminance12Alpha4 = GL_LUMINANCE12_ALPHA4,
123 ifLuminance12Alpha12 = GL_LUMINANCE12_ALPHA12,
124 ifLuminance16Alpha16 = GL_LUMINANCE16_ALPHA16,
125 ifIntensity = GL_INTENSITY,
126 ifIntensity4 = GL_INTENSITY4,
127 ifIntensity8 = GL_INTENSITY8,
128 ifIntensity12 = GL_INTENSITY12,
129 ifIntensity16 = GL_INTENSITY16,
138 ifRGB5A1 = GL_RGB5_A1,
140 ifRGB10A2 = GL_RGB10_A2,
141 ifRGBA12 = GL_RGBA12,
142 ifRGBA16 = GL_RGBA16,
143 ifDepthComponent16 = GL_DEPTH_COMPONENT16,
144 ifDepthComponent24 = GL_DEPTH_COMPONENT24,
145 ifDepthComponent32 = GL_DEPTH_COMPONENT32,
146 ifCompressedAlpha = GL_COMPRESSED_ALPHA,
147 ifCompressedLuminance = GL_COMPRESSED_LUMINANCE,
148 ifCompressedLuminanceAlpha = GL_COMPRESSED_LUMINANCE_ALPHA,
149 ifCompressedIntensity = GL_COMPRESSED_INTENSITY,
150 ifCompressedRGB = GL_COMPRESSED_RGB,
151 ifCompressedRGBA = GL_COMPRESSED_RGBA,
152 ifRGBA32f = GL_RGBA32F,
153 ifRGB32f = GL_RGB32F,
154 ifRGBA16F = GL_RGBA16F,
155 ifRGB16F = GL_RGB16F,
156 ifDepth24Stencil8 = GL_DEPTH24_STENCIL8,
159 ifSRGBA = GL_SRGB_ALPHA,
160 ifSRGBA8 = GL_SRGB8_ALPHA8,
161 ifSLuminanceAlpha = GL_SLUMINANCE_ALPHA,
162 ifSLuminance8Alpha8 = GL_SLUMINANCE8_ALPHA8,
163 ifSLuminance = GL_SLUMINANCE,
164 ifSLuminance8 = GL_SLUMINANCE8,
165 ifDepth32fStencil8 = GL_DEPTH32F_STENCIL8,
166 ifStencil1 = GL_STENCIL_INDEX1,
167 ifStencil4 = GL_STENCIL_INDEX4,
168 ifStencil8 = GL_STENCIL_INDEX8,
169 ifStencil16 = GL_STENCIL_INDEX16);
172 atDepthStencil = GL_DEPTH_STENCIL_ATTACHMENT,
173 atColor0 = GL_COLOR_ATTACHMENT0,
174 atColor1 = GL_COLOR_ATTACHMENT1,
175 atColor2 = GL_COLOR_ATTACHMENT2,
176 atColor3 = GL_COLOR_ATTACHMENT3,
177 atColor4 = GL_COLOR_ATTACHMENT4,
178 atColor5 = GL_COLOR_ATTACHMENT5,
179 atColor6 = GL_COLOR_ATTACHMENT6,
180 atColor7 = GL_COLOR_ATTACHMENT7,
181 atColor8 = GL_COLOR_ATTACHMENT8,
182 atColor9 = GL_COLOR_ATTACHMENT9,
183 atColor10 = GL_COLOR_ATTACHMENT10,
184 atColor11 = GL_COLOR_ATTACHMENT11,
185 atColor12 = GL_COLOR_ATTACHMENT12,
186 atColor13 = GL_COLOR_ATTACHMENT13,
187 atColor14 = GL_COLOR_ATTACHMENT14,
188 atColor15 = GL_COLOR_ATTACHMENT15,
189 atDepth = GL_DEPTH_ATTACHMENT,
190 atStencil = GL_STENCIL_ATTACHMENT);
193 stFragment = GL_FRAGMENT_SHADER,
194 stVertex = GL_VERTEX_SHADER,
195 stGeometry = GL_GEOMETRY_SHADER,
196 stTessEvaluation = GL_TESS_EVALUATION_SHADER,
197 stTessControl = GL_TESS_CONTROL_SHADER);
200 btArrayBuffer = GL_ARRAY_BUFFER,
201 btElementArrayBuffer = GL_ELEMENT_ARRAY_BUFFER);
204 buStreamDraw = GL_STREAM_DRAW,
205 buStreamRead = GL_STREAM_READ,
206 buStreamCopy = GL_STREAM_COPY,
207 buStaticDraw = GL_STATIC_DRAW,
208 buStaticRead = GL_STATIC_READ,
209 buStaticCopy = GL_STATIC_COPY,
210 buDynamicDraw = GL_DYNAMIC_DRAW,
211 buDynamicRead = GL_DYNAMIC_READ,
212 buDynamicCopy = GL_DYNAMIC_COPY);
215 baReadOnly = GL_READ_ONLY,
216 baWriteOnly = GL_WRITE_ONLY,
217 baReadWrite = GL_READ_WRITE);
219 EOpenGL = class(Exception)
223 property ErrorCode: GLenum read fErrorCode;
224 constructor Create(const aErrorCode: GLenum);
225 constructor Create(const aMsg: String; const aErrorCode: GLenum);
228 procedure glcRenderFace(const aValue: TglcFace); inline;
229 procedure glcPolygonMode(const aFace: TglcFace; const aValue: TglcPolygonMode); inline;
230 procedure glcDepthFunc(const aValue: TglcDepthFunc); inline;
231 procedure glcBlendFunc(const aSource, aDest: TglcBlendFactor); inline; overload;
232 procedure glcBlendFunc(const aMode: TglcBlendMode); inline; overload;
233 procedure glcCheckAndRaiseError;
238 TglcBlendModeValue = packed record
239 src, dst: TglcBlendFactor;
243 BLEND_MODE_VALUES: array[TglcBlendMode] of TglcBlendModeValue = (
244 (src: TglcBlendFactor.bfOne; dst: TglcBlendFactor.bfZero), //bmNone
245 (src: TglcBlendFactor.bfSrcAlpha; dst: TglcBlendFactor.bfOneMinusSrcAlpha), //bmAlphaBlend
246 (src: TglcBlendFactor.bfSrcAlpha; dst: TglcBlendFactor.bfOne), //bmAdditiveAlphaBlend
247 (src: TglcBlendFactor.bfOne; dst: TglcBlendFactor.bfOne)); //bmAdditiveBlend
249 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
250 procedure glcRenderFace(const aValue: TglcFace);
253 TglcFace.faBoth: begin
254 glDisable(GL_CULL_FACE);
256 TglcFace.faFront: begin
257 glEnable(GL_CULL_FACE);
260 TglcFace.faBack: begin
261 glEnable(GL_CULL_FACE);
262 glCullFace(GL_FRONT);
267 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
268 procedure glcPolygonMode(const aFace: TglcFace; const aValue: TglcPolygonMode);
270 glPolygonMode(GLenum(aFace), GLenum(aValue));
273 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
274 procedure glcDepthFunc(const aValue: TglcDepthFunc);
276 glDepthFunc(GLenum(aValue));
279 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
280 procedure glcBlendFunc(const aSource, aDest: TglcBlendFactor);
282 glBlendFunc(GLenum(aSource), GLenum(aDest));
285 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
286 procedure glcBlendFunc(const aMode: TglcBlendMode); overload;
288 glBlendFunc(GLenum(BLEND_MODE_VALUES[aMode].src), GLenum(BLEND_MODE_VALUES[aMode].dst));
291 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
292 procedure glcCheckAndRaiseError;
297 if (e <> GL_NO_ERROR) then
298 raise EOpenGL.Create(e);
301 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
302 //EOpenGL///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
303 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
304 constructor EOpenGL.Create(const aErrorCode: GLenum);
306 fErrorCode := aErrorCode;
307 inherited Create(gluErrorString(fErrorCode));
310 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
311 constructor EOpenGL.Create(const aMsg: String; const aErrorCode: GLenum);
313 fErrorCode := aErrorCode;
314 inherited Create(aMsg + ': ' + gluErrorString(fErrorCode))