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