GL Studio API
gls_mimic_group.h
Go to the documentation of this file.
1 /*! \file
2  \brief
3 
4  \par Copyright Information
5 
6  Copyright (c) 2015 by The DiSTI Corporation.<br>
7  11301 Corporate Blvd; Suite 100<br>
8  Orlando, Florida 32817<br>
9  USA<br>
10  <br>
11  All rights reserved.<br>
12 
13  This Software contains proprietary trade secrets of DiSTI and may not be
14 reproduced, in whole or part, in any form, or by any means of electronic,
15 mechanical, or otherwise, without the written permission of DiSTI. Said
16 permission may be derived through the purchase of applicable DiSTI product
17 licenses which detail the distribution rights of this content and any
18 Derivative Works based on this or other copyrighted DiSTI Software.
19 
20  NO WARRANTY. THE SOFTWARE IS PROVIDED "AS-IS," WITHOUT WARRANTY OF ANY KIND,
21 AND ANY USE OF THIS SOFTWARE PRODUCT IS AT YOUR OWN RISK. TO THE MAXIMUM EXTENT
22 PERMITTED BY APPLICABLE LAW, DISTI AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES
23 AND CONDITIONS, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
24 IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY AND/OR FITNESS FOR A
25 PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT, WITH REGARD TO THE SOFTWARE.
26 
27  LIMITATION OF LIABILITY. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW,
28 IN NO EVENT SHALL DISTI OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
29 INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION,
30 DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
31 INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR
32 INABILITY TO USE THE SOFTWARE, EVEN IF DISTI HAS BEEN ADVISED OF THE POSSIBILITY
33 OF SUCH DAMAGES. DISTI'S ENTIRE LIABILITY AND YOUR EXCLUSIVE REMEDY SHALL NOT
34 EXCEED FIVE DOLLARS (US$5.00).
35 
36  The aforementioned terms and restrictions are governed by the laws of the
37 State of Florida and the United States of America.
38 
39 */
40 
41 #ifndef INCLUDED_GLS_MIMIC_GROUP_H
42 #define INCLUDED_GLS_MIMIC_GROUP_H
43 
44 #include "frame_buffer_utility.h"
45 
46 #include "group.h"
47 #include "image.h"
48 #include "gls_cpp_lang_support.h"
49 
50 //////////////////// Provides support for creating DLLs ////////////////////////
51 #if (defined(GLSGEN_EXPORT_GLSMIMICGROUP) || \
52  defined(GLSGEN_IMPORT_GLSMIMICGROUP) || \
53  defined(GLS_EXPORT_GENERATED) || \
54  defined(GLS_IMPORT_GENERATED)) \
55  && defined(_MSC_VER)
56 # if defined(GLSGEN_EXPORT_GLSMIMICGROUP) || defined(GLS_EXPORT_GENERATED)
57 # define GLSGEN_GLSMIMICGROUP_EXPORT __declspec(dllexport)
58 # else
59 # define GLSGEN_GLSMIMICGROUP_EXPORT __declspec(dllimport)
60 # endif
61 #else
62 # define GLSGEN_GLSMIMICGROUP_EXPORT
63 #endif
64 ///////////////////////////////////////////////////////////////////////////////
65 
66 #define LIB_BASE_NAME "gls_mimic_group"
67 #include "gls_auto_lib.h"
68 #undef LIB_BASE_NAME
69 
70 namespace disti
71 {
72 
73 #ifdef GLES
74 class GlsGloFile;
75 #endif
76 
77 // SetValue enumerations
78 enum {
79  GLS_MIMIC_GROUP_STATE = GLS_LAST_INITIALIZER+1,
80  GLS_MIMIC_GROUP_MIMIC_ACTIVE,
81  GLS_MIMIC_GROUP_BOTTOM_LEFT_CORNER,
82  GLS_MIMIC_GROUP_TOP_RIGHT_CORNER,
83  GLS_MIMIC_GROUP_SHOW_OUTLINE,
84  GLS_MIMIC_GROUP_TEXTURE_HEIGHT,
85  GLS_MIMIC_GROUP_TEXTURE_WIDTH,
86  GLS_MIMIC_GROUP_HAS_DEPTH_BUFFER,
87  GLS_MIMIC_GROUP_DEPTH_TEST,
88  GLS_MIMIC_GROUP_GENERATE_MIPMAPS,
89  GLS_MIMIC_GROUP_DRAW_MIMIC_POLYGON,
90  GLS_MIMIC_GROUP_ATTACHED_TEXTURE_INDEX,
91  GLS_MIMIC_GROUP_CLEAR_COLOR,
92  GLS_MIMIC_GROUP_USE_OPAQUE_TEXTURE
93 };
94 
95 
96 /**
97 * The GlsMimicGroup class provides a way to group objects that change
98 * infrequently into a single textured polygon such that performance is increased due
99 * to not having to render the objects every frame. Instead, since all of the objects
100 * in the group are replaced with a single texture, performance is saved by updating the texture
101 * ONLY through handling a display event of name "MimicGroupUpdate". Whenever an object
102 * placed in this group is modified, you must write code to emit a "MimicGroupUpdate" ObjectEvent
103 * so that any changes made to its appearance will be reflected in the rendered texture.
104 *
105 * For example:
106 * EmitObjectEvent( objectThatChanged, "MimicGroupUpdate" );
107 *
108 * Picking and event handling for objects within the GlsMimicGroup work the same as
109 * for a regular Group, so it can contain interactive objects such as buttons, switches, etc.
110 * The GlsMimicGroup will only redraw the texture when it receives a "MimicGroupUpdate"
111 * ObjectEvent so you must write code to emit these events whenever a
112 * press, toggle, etc. affect the appearance of the object.
113 *
114 * The GlsMimicGroup can contain 2D or 3D objects. All of these objects will be replaced
115 * with a 2D texture polygon so the GlsMimicGroup is best suited for use with panels that are mostly 2D.
116 * The GlsMimicGroup can also be useful with a collection of 3D objects as long as the
117 * GlsMimicGroup remains screen-aligned.
118 *
119 * On older hardware that does not support the render-to-texture capabilities required by the
120 * GlsMimicGroup, the GlsMimicGroup will fall-back to rendering like a regular Group.
121 */
122 class GlsMimicGroup : public Group
123 {
124 private:
125  GlsMimicGroup& operator=( const GlsMimicGroup& ) DISTI_SPECIAL_MEM_FUN_DELETE;
126  GlsMimicGroup( const GlsMimicGroup& ) DISTI_SPECIAL_MEM_FUN_DELETE;
127 
128 public:
129 
130  friend class GlsMimicGroupEditor;
131  typedef Group _BaseClass;
132 
133  /**
134  * Constructor.
135  *
136  * \param generateInstance Whether or not to generate an instance name
137  * for this mimic group
138  */
139  GLSGEN_GLSMIMICGROUP_EXPORT GlsMimicGroup(bool generateInstance=false);
140 
141  GLSGEN_GLSMIMICGROUP_EXPORT GlsMimicGroup( const GlsMimicGroup& that, const bool generateNames );
142 
143  /**
144  * Destructs a GlsMimicGroup object
145  */
146  virtual GLSGEN_GLSMIMICGROUP_EXPORT ~GlsMimicGroup();
147 
148  /**
149  * Provides a way to statically create an instance of the GlsMimicGroup
150  *
151  * \return an instance of a GlsMimicGroup
152  */
153  static GLSGEN_GLSMIMICGROUP_EXPORT DisplayObject* CreateInstance();
154 
155  /**
156  * \see DisplayObject
157  */
158  virtual GLSGEN_GLSMIMICGROUP_EXPORT void SetAvailableAttributes(unsigned int value);
159 
160  /**
161  * \see DisplayObject
162  */
163  virtual GLSGEN_GLSMIMICGROUP_EXPORT DisplayObject* CloneObject(bool generateNames = false);
164 
165  /**
166  * \see DisplayObject
167  */
168  virtual GLSGEN_GLSMIMICGROUP_EXPORT void CopyProperties(DisplayObject *src);
169 
170 #ifndef GLES
171  /**
172  * \see DisplayObject
173  */
174  virtual GLSGEN_GLSMIMICGROUP_EXPORT InterfaceListType* GetCppInterfaceDescription(InterfaceListType* addToThisList= NULL );
175 
176  /**
177  * \see DisplayObject
178  */
179  virtual GLSGEN_GLSMIMICGROUP_EXPORT void GetCppInterfaceDescriptionFree(InterfaceListType* array);
180 #endif
181 
182  /**
183  * \see DisplayObject
184  */
185  virtual GLSGEN_GLSMIMICGROUP_EXPORT void Draw(void);
186 
187  /**
188  * \see DisplayObject
189  */
190  virtual GLSGEN_GLSMIMICGROUP_EXPORT void SetValue(int spec,va_list &args);
191 
192  //////////////////////////////////////////////////
193  // GlsMimicGroup specific operations
194  //////////////////////////////////////////////////
195 
196  /**
197  * Accessor for the mimic texture width.
198  *
199  * \return the width, in pixels, of the mimic texture.
200  */
201  virtual GLSGEN_GLSMIMICGROUP_EXPORT unsigned int TextureWidth() const { return _textureWidth; }
202 
203  /**
204  * Set the mimic texture width.
205  *
206  * \param textureWidth the width, in pixels, of the mimic texture.
207  */
208  virtual GLSGEN_GLSMIMICGROUP_EXPORT void TextureWidth(unsigned int textureWidth);
209 
210  /**
211  * Accessor for the mimic texture height.
212  *
213  * \return the height, in pixels, of the mimic texture.
214  */
215  virtual GLSGEN_GLSMIMICGROUP_EXPORT unsigned int TextureHeight() const { return _textureHeight; }
216 
217  /**
218  * Set the mimic texture height.
219  *
220  * \param textureHeight the height, in pixels, of the mimic texture.
221  */
222  virtual GLSGEN_GLSMIMICGROUP_EXPORT void TextureHeight(unsigned int textureHeight);
223 
224  /**
225  * Whether or not the mimic will render a depth buffer.
226  *
227  * \return true if the mimic will render a depth buffer.
228  */
229  virtual GLSGEN_GLSMIMICGROUP_EXPORT bool HasDepthBuffer() const { return _hasDepthBuffer; }
230 
231  /**
232  * Set whether or not the mimic will render a depth buffer.
233  *
234  * \param true if the mimic will render a depth buffer.
235  */
236  virtual GLSGEN_GLSMIMICGROUP_EXPORT void HasDepthBuffer(bool hasDepthBuffer);
237 
238  /**
239  * Whether or not the mimic will generate mip maps.
240  *
241  * \return true if the mimic will generate mip maps.
242  */
243  virtual GLSGEN_GLSMIMICGROUP_EXPORT bool GenerateMipMaps() const { return _generateMipMaps; }
244 
245  /**
246  * Set whether or not the mimic will generate mip maps.
247  *
248  * \param generate true if the mimic will generate mip maps.
249  */
250  virtual GLSGEN_GLSMIMICGROUP_EXPORT void GenerateMipMaps(bool generate);
251 
252  /**
253  * Whether or not a mimic polygon will be drawn.
254  *
255  * \return true if a mimic polygon will be drawn.
256  */
257  virtual GLSGEN_GLSMIMICGROUP_EXPORT bool DrawMimicGroupPolygon() const { return _drawMimicGroupPolygon ; }
258 
259  /**
260  * Set whether or not a mimic polygon will be drawn.
261  *
262  * \param draw true if a mimic polygon will be drawn.
263  */
264  virtual GLSGEN_GLSMIMICGROUP_EXPORT void DrawMimicGroupPolygon(bool draw);
265 
266  /**
267  * Accessor for the mimic depth test settings.
268  *
269  * \return the depth settings
270  */
271  virtual GLSGEN_GLSMIMICGROUP_EXPORT unsigned char MimicGroupDepthTest() const { return _mimicGroupDepthTest; }
272 
273  /**
274  * Set the mimic depth test settings.
275  *
276  * \param depthSettings the depth settings
277  */
278  virtual GLSGEN_GLSMIMICGROUP_EXPORT void MimicGroupDepthTest(unsigned char depthSettings);
279 
280  /**
281  * Accessor for the mimic scene background clear color.
282  *
283  * \return the RGBA color that the mimic will use to clear mimic scene background with
284  */
285  virtual GLSGEN_GLSMIMICGROUP_EXPORT glsColor ClearColor() const { return _clearColor; }
286 
287  /**
288  * Set the mimic scene background clear color.
289  *
290  * \param the RGBA color that the mimic will use to clear mimic scene background with
291  */
292  virtual GLSGEN_GLSMIMICGROUP_EXPORT void ClearColor( const glsColor& color );
293 
294  /**
295  * Accessor for the GL Studio texture index the mimic will generate into.
296  *
297  * \return the GL Studio texture index the mimic will generate into. If -1, then mimic will generate its own texture.
298  */
299  virtual GLSGEN_GLSMIMICGROUP_EXPORT int AttachedTextureIndex() const { return _attachedTextureIndex; }
300 
301  /**
302  * Set the GL Studio texture index the mimic will generate into.
303  *
304  * \param textureIndex the GL Studio texture index to generate mimic into. If -1, then mimic will generate its own texture.
305  */
306  virtual GLSGEN_GLSMIMICGROUP_EXPORT void AttachedTextureIndex(int textureIndex);
307 
308  /**
309  * Whether or not the mimic is active for this group.
310  * If not active, mimic group behaves as a normal group
311  *
312  * \return true if mimic is active for this group
313  */
314  GLSGEN_GLSMIMICGROUP_EXPORT bool MimicGroupActive(void) { return _mimicGroupActive; }
315 
316  /**
317  * Sets if mimic is active for this group
318  * If not active, mimic group behaves as a normal group
319  *
320  * \param activate whether or not to activate the mimic
321  */
322  GLSGEN_GLSMIMICGROUP_EXPORT void MimicGroupActive(bool activate);
323 
324  /**
325  * Set the bottom left corner of mimic scene region
326  *
327  * \param bottomLeftCorner (in object coordinates)
328  */
329  GLSGEN_GLSMIMICGROUP_EXPORT void BottomLeftCorner(const Vector &bottomLeftCorner);
330 
331  /**
332  * Accessor for the bottom left corner coordinate of the mimic scene region.
333  *
334  * \return the bottom left corner of mimic scene region (in object coordinates)
335  */
336  GLSGEN_GLSMIMICGROUP_EXPORT Vector BottomLeftCorner(void) { return _bottomLeftCorner; }
337 
338  /**
339  * Set the top right corner of mimic scene region
340  *
341  * \param topRightCorner (in object coordinates)
342  */
343  GLSGEN_GLSMIMICGROUP_EXPORT void TopRightCorner(const Vector &topRightCorner);
344 
345  /**
346  * Accessor for the top right corner coordinate of the mimic scene region.
347  *
348  * \return the top right corner of mimic scene region (in object coordinates)
349  */
350  GLSGEN_GLSMIMICGROUP_EXPORT Vector TopRightCorner(void) const { return _topRightCorner; }
351 
352  /**
353  * Whether or not the outline of the mimic polygon region should be shown in the editor.
354  *
355  * \return true if region should always be drawn in the editor
356  */
357  GLSGEN_GLSMIMICGROUP_EXPORT bool ShowOutline(void) const { return _showOutline; }
358 
359  /**
360  * Set whether or not the mimic polygon region should always be drawn in the editor.
361  *
362  * \param showOutline true if outline should always be drawn in editor
363  */
364  GLSGEN_GLSMIMICGROUP_EXPORT void ShowOutline(bool showOutline);
365 
366  /**
367  * Whether or not the mimic group needs to redraw.
368  *
369  * \return true if the mimic group needs to redraw.
370  */
371  GLSGEN_GLSMIMICGROUP_EXPORT bool Redraw(void) const { return _redraw; }
372 
373  /**
374  * Set whether or not the mimic group needs to redraw
375  *
376  * \param redraw the new redraw value
377  */
378  GLSGEN_GLSMIMICGROUP_EXPORT void Redraw(bool redraw);
379 
380  /**
381  * Whether or not the mimic group texture is RGB.
382  *
383  * \return true if the mimic group texture is RGB.
384  */
385  GLSGEN_GLSMIMICGROUP_EXPORT bool UseOpaqueTexture(void) const { return _useOpaqueTexture; }
386 
387  /**
388  * Set whether the mimic group texture is RGB or RGBA
389  *
390  * \param true for RGB, false for RGBA
391  */
392  GLSGEN_GLSMIMICGROUP_EXPORT void UseOpaqueTexture(bool opaque);
393 
394 protected:
395  /**
396  * Set up the matrices for the root of the mimic scene. The mimic scene is drawn without regard to any
397  * parent matrices of the mimic group.
398  */
399  virtual GLSGEN_GLSMIMICGROUP_EXPORT void SetMatrices();
400 
401  /**
402  * Predraw case for when the mimic scene redraws
403  */
404  virtual GLSGEN_GLSMIMICGROUP_EXPORT void PreDrawMimicGroupChildren( const OpenGLMatrices& parentMatrices, Culler &culler );
405 
406  /**
407  * Set depth buffer settings when rendering the mimic polygon
408  */
409  GLSGEN_GLSMIMICGROUP_EXPORT void SetupMimicGroupDepthTest();
410 
411  /**
412  * Get the four corners of the region transformed by the current DCS and offset by the group's location
413  *
414  * \param topLeftCorner [out] receives top left corner
415  * \param topRightCorner [out] receives top right corner
416  * \param bottomRightCorner [out] receives bottom right corner
417  * \param bottomeLeftCorner [out] receives bottom left corner
418  */
419  GLSGEN_GLSMIMICGROUP_EXPORT void GetRegionCorners( Vector &topLeftCorner, Vector &topRightCorner, Vector &bottomeRightCorner, Vector &bottomLeftCorner );
420 
421  /**
422  * Apply texture settings for mimic polygon
423  */
424  GLSGEN_GLSMIMICGROUP_EXPORT void ApplyMimicGroupTextureSettings();
425 
426  /**
427  * Allocate and create the diffuse texture map
428  */
429  GLSGEN_GLSMIMICGROUP_EXPORT void CreateDiffuseTexture();
430 
431  /**
432  * Allocate and create the depth texture map
433  */
434  GLSGEN_GLSMIMICGROUP_EXPORT void CreateDepthTexture();
435 
436  /**
437  * Allocate and create the mimic quad
438  */
439  GLSGEN_GLSMIMICGROUP_EXPORT void CreateMimicGroupQuad();
440 
441  /**
442  * Allocate and create the frame buffer
443  */
444  GLSGEN_GLSMIMICGROUP_EXPORT void CreateFrameBuffer();
445 
446  /**
447  * Cause the frame buffer to be regenerated and the scene to be redrawn
448  */
449  GLSGEN_GLSMIMICGROUP_EXPORT void Invalidate();
450 
451  /**
452  * Delete the frame buffer (if it has been bound)
453  */
454  GLSGEN_GLSMIMICGROUP_EXPORT void DeleteFrameBuffer();
455 
456  /**
457  * Redraw the scene
458  */
459  GLSGEN_GLSMIMICGROUP_EXPORT void RedrawScene();
460 
461  /**
462  * Draw the polygon for the mimic
463  */
464  GLSGEN_GLSMIMICGROUP_EXPORT void DrawPolygon();
465 
466  /**
467  * Regenerate the mip maps
468  */
469  GLSGEN_GLSMIMICGROUP_EXPORT void RegenerateMipMaps();
470 
471  /**
472  * \see DisplayObject
473  */
474  GLSGEN_GLSMIMICGROUP_EXPORT DisplayObject* handle(DisplayEvent *displayEvent);
475 
476  /**
477  * The GlsMimicGroup requres specific extensions of OpenGL which are not required
478  * elsewhere in GL Studio. This method will check that those features are supported.
479  *
480  * \return True if the required features are supported.
481  */
482  GLSGEN_GLSMIMICGROUP_EXPORT bool RequiredGlFeaturesSupported();
483 
484  /**
485  * Logs the unsupported features that the GlsMimicGroup class requires to function properly.
486  */
487  GLSGEN_GLSMIMICGROUP_EXPORT void LogUnsupportedFeatures();
488 
489  /**
490  * Determines if vertex buffer objects are supported on this platform.
491  *
492  * \return True if vertex buffer objects are supported on this platform.
493  */
494  GLSGEN_GLSMIMICGROUP_EXPORT bool VertexBuffersAreSupported();
495 
496  /**
497  * Draw the mimic group. Care should be taken to call this method only when it is safe to draw
498  * the mimic group. The Draw() has the conditional structure necessary to
499  * make this decision.
500  *
501  */
502  GLSGEN_GLSMIMICGROUP_EXPORT void DrawMimicGroup();
503 
504 
505 #ifdef GLES
506  /**
507  * Set a single attribute from the GLO file.
508  *
509  * \param data The attribute to set and its associated data.
510  */
511  virtual void SetFromGloData(GlsGloFileAttribute &data);
512 #endif
513 
514  bool _mimicGroupActive; /*< Whether or not the mimic is active. If not active, mimic group behaves as a normal group */
515  bool _redraw; /*< Whether or not the mimic scene needs to redraw */
516  bool _hasDepthBuffer; /*< Whether or not the mimic will render a depth buffer */
517  bool _generateMipMaps; /*< Whether or not the mimic will generate mip maps */
518  bool _showOutline; /*< Outline is only visible in editor */
519  bool _drawMimicGroupPolygon; /*< Whether or not a mimic polygon will be drawn. */
520  unsigned char _mimicGroupDepthTest; /*< Mimic depth test settings (affects whether or not the mimic polygon is depth tested) */
521  bool _textureIndexChanged;
522  glsColor _clearColor; /*< RGBA color to clear mimic scene background with */
523  Vector _bottomLeftCorner; /*< Bottom Left Corner of the mimic scene region */
524  Vector _topRightCorner; /*< Top Right Corner of the mimic scene region */
525  int _attachedTextureIndex; /*< GL Studio texture index to generate mimic into. If -1, then mimic will generate its own texture. */
526  unsigned int _textureWidth; /*< Width of the mimic texture in pixels (MUST BE power of two) */
527  unsigned int _textureHeight; /*< Height of the mimic texture in pixels (MUST BE power of two) */
528  unsigned int _frameBufferHandle; /*< Handle for frame buffer object */
529  unsigned int _depthBufferHandle; /*< Handle for depth buffer object */
530  Image* _mimicGroupTexture; /*< Image object for texture */
531  unsigned int _vertexBufferHandle; /*< Vertex buffer handle for mimic quad */
532  bool _frameBuffersEnabledAndAttached; /**< True when frame buffer support is detected and frame buffers were attached successfully */
533  bool _overrideMimicGroupActive; /**< True if the mimic group is not allowed to be activated due to platform restrictions. */
534  bool _useOpaqueTexture; /*< True if the atached frame buffer texture should be crated as GL_RGB, False will create the texture as GL_RGBA */
535 
536  static bool _unsupportedLogged; /**< True if a warning has been logged to users that the mimic group feature is not supported. This keeps us from spamming the user about not being supported. */
537 };
538 
539 } // namespace disti
540 
541 #endif
542 
Definition: cull.h:50
Definition: image.h:160
virtual ~GlsMimicGroup()
static DisplayObject * CreateInstance()
bool ShowOutline(void) const
Definition: gls_mimic_group.h:357
Definition: dynamic_array.h:63
virtual unsigned char MimicGroupDepthTest() const
Definition: gls_mimic_group.h:271
The disti::Group class. Implements groups of objects.
Class to contain current OpenGL view, projection and draw matrices.
Definition: util.h:289
void ApplyMimicGroupTextureSettings()
DisplayObject * handle(DisplayEvent *displayEvent)
Definition: display.h:98
virtual void PreDrawMimicGroupChildren(const OpenGLMatrices &parentMatrices, Culler &culler)
virtual bool GenerateMipMaps() const
Definition: gls_mimic_group.h:243
Definition: gls_mimic_group.h:122
virtual void SetAvailableAttributes(unsigned int value)
The Image class. All textures are converted internally into Images.
bool _overrideMimicGroupActive
Definition: gls_mimic_group.h:533
virtual bool DrawMimicGroupPolygon() const
Definition: gls_mimic_group.h:257
void SetupMimicGroupDepthTest()
virtual bool HasDepthBuffer() const
Definition: gls_mimic_group.h:229
virtual void SetMatrices()
virtual void CopyProperties(DisplayObject *src)
virtual void GetCppInterfaceDescriptionFree(InterfaceListType *array)
virtual unsigned int TextureWidth() const
Definition: gls_mimic_group.h:201
Utility for common frame buffer support.
virtual void Draw(void)
Definition: events.h:111
bool Redraw(void) const
Definition: gls_mimic_group.h:371
bool MimicGroupActive(void)
Definition: gls_mimic_group.h:314
Vector TopRightCorner(void) const
Definition: gls_mimic_group.h:350
The gls_auto_lib.
Definition: gls_color.h:54
bool _frameBuffersEnabledAndAttached
Definition: gls_mimic_group.h:532
virtual unsigned int TextureHeight() const
Definition: gls_mimic_group.h:215
void GetRegionCorners(Vector &topLeftCorner, Vector &topRightCorner, Vector &bottomeRightCorner, Vector &bottomLeftCorner)
virtual void SetValue(int spec, va_list &args)
Definition: group.h:53
Definition: vertex.h:84
virtual InterfaceListType * GetCppInterfaceDescription(InterfaceListType *addToThisList=NULL)
bool RequiredGlFeaturesSupported()
Vector BottomLeftCorner(void)
Definition: gls_mimic_group.h:336
virtual DisplayObject * CloneObject(bool generateNames=false)
Macros and helper code to determine what subset of C++11/14/17 is available.
bool VertexBuffersAreSupported()
Definition: bmpimage.h:46
bool UseOpaqueTexture(void) const
Definition: gls_mimic_group.h:385
virtual int AttachedTextureIndex() const
Definition: gls_mimic_group.h:299
virtual glsColor ClearColor() const
Definition: gls_mimic_group.h:285
static bool _unsupportedLogged
Definition: gls_mimic_group.h:536