Gtk GL Extension

Codes specifiques à Linux
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Gtk GL Extension

Message par Guimauve »

Bonjour à tous,

Voilà en faisant une recherche pour comprendre comment créer un Canvas Gadget capable d'afficher un rendu avec OpenGL, je suis tombé sur Gtk GL Extension (Désolé, c'est en anglais seulement)

Les questions quiz sont donc :
  • 1. Le CanvasGadget(), c'est quoi exactement du point de vu de GTK+, un Gtk Drawing Area ?
  • 2. Est-il possible de pirater le CanvasGadget() actuel et utiliser sa surface de dessin pour effectuer un Rendu avec OpenGL ?
  • 3. Si non, comment réutiliser les commandes de la librairie Gtk GL Extension pour créer un GLCanvasGadget() compatible avec les commandes ResizeGadget(), les utiliser avec des SplitterGadget() pour créer plusieurs vues (Haut, Gauche, Avant, Perspective, etc.), les placer sur des PanelGadget() / ContainerGadget(), envoyer des signaux au système EventGadget(), etc.
Quelqu'un a des idées, des exemples, un tutoriel compréhensible sur comment implémenter un Widget GTK + dans PureBasic ?

Merci à l'avance.
Guimauve
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Gtk GL Extension

Message par Guimauve »

Bonjour à tous,

Édit : Bravo à Idle du forum anglais, il a réussi à passer au travers et faire fonctionner le GLAreaGadget() correctement. Bien entendu il reste encore beaucoup à faire, notamment la position de la souris sur le gadget et les événements de type Molette de souris (utile pour contrôler la fonction zoom in / zoom out) mais au moins l'affichage fonctionne. Le seul point négatif est l'incompatibilité avec la compilation en mode Unicode.

A+
Guimauve

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; Project name : GLAreaGadget 
; File Name : GLAreaGadget.pb 
; File version: 0.0.1 
; Programmation : In progress 
; Programmed by : Guimauve and Idle 
; Date : 09-01-2012 
; Last Update : 09-01-2012 
; PureBasic code : 4.60 
; Platform : Linux 
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

;* <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
;* Source : http://developer.gnome.org/gtkglext/stable/gtkglext-gdkgltokens.html 
;* <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

#GDK_GL_DONT_CARE = 0 
#GDK_GL_NONE      = 0 
#GDK_GL_ATTRIB_LIST_NONE = 0 
#GDK_GL_SUCCESS = 0 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; GDK_GL_CONFIGS 

#GDK_GL_USE_GL           = 1 
#GDK_GL_BUFFER_SIZE      = 2 
#GDK_GL_LEVEL            = 3 
#GDK_GL_RGBA             = 4 
#GDK_GL_DOUBLEBUFFER     = 5 
#GDK_GL_STEREO           = 6 
#GDK_GL_AUX_BUFFERS      = 7 
#GDK_GL_RED_SIZE         = 8 
#GDK_GL_GREEN_SIZE       = 9 
#GDK_GL_BLUE_SIZE        = 10 
#GDK_GL_ALPHA_SIZE       = 11 
#GDK_GL_DEPTH_SIZE       = 12 
#GDK_GL_STENCIL_SIZE     = 13 
#GDK_GL_ACCUM_RED_SIZE   = 14 
#GDK_GL_ACCUM_GREEN_SIZE = 15 
#GDK_GL_ACCUM_BLUE_SIZE  = 16 
#GDK_GL_ACCUM_ALPHA_SIZE = 17 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; FBConfig-specific attributes. [ GLX 1.3 And later ] 

#GDK_GL_CONFIG_CAVEAT                    = $20 
#GDK_GL_X_VISUAL_TYPE_EXT                = $22 
#GDK_GL_TRANSPARENT_TYPE_EXT             = $23 
#GDK_GL_TRANSPARENT_INDEX_VALUE_EXT      = $24 
#GDK_GL_TRANSPARENT_RED_VALUE_EXT        = $25 
#GDK_GL_TRANSPARENT_GREEN_VALUE_EXT      = $26 
#GDK_GL_TRANSPARENT_BLUE_VALUE_EXT       = $27 
#GDK_GL_TRANSPARENT_ALPHA_VALUE_EXT      = $28 

#GDK_GL_DRAWABLE_TYPE              = $8010 
#GDK_GL_RENDER_TYPE                = $8011 
#GDK_GL_X_RENDERABLE               = $8012 
#GDK_GL_FBCONFIG_ID                = $8013 
#GDK_GL_MAX_PBUFFER_WIDTH          = $8016 
#GDK_GL_MAX_PBUFFER_HEIGHT         = $8017 
#GDK_GL_MAX_PBUFFER_PIXELS         = $8018 
#GDK_GL_VISUAL_ID                  = $800B 
#GDK_GL_SCREEN                     = $800C 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; Multisampling configuration attributes. [ GLX 1.4 And later ] 

#GDK_GL_SAMPLE_BUFFERS             = 100000 
#GDK_GL_SAMPLES                    = 100001 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; GdkGLConfigCaveat 

#GDK_GL_CONFIG_CAVEAT_DONT_CARE    = $FFFFFFFF ;/* GDK_GL_DONT_CARE */ 
#GDK_GL_CONFIG_CAVEAT_NONE         = $8000     ;/* GDK_GL_NONE */ 
#GDK_GL_SLOW_CONFIG                = $8001 
#GDK_GL_NON_CONFORMANT_CONFIG      = $800D 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; GdkGLVisualType 

#GDK_GL_VISUAL_TYPE_DONT_CARE      = $FFFFFFFF ; /* GDK_GL_DONT_CARE */ 
#GDK_GL_TRUE_COLOR                 = $8002 
#GDK_GL_DIRECT_COLOR               = $8003 
#GDK_GL_PSEUDO_COLOR               = $8004 
#GDK_GL_STATIC_COLOR               = $8005 
#GDK_GL_GRAY_SCALE                 = $8006 
#GDK_GL_STATIC_GRAY                = $8007 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; GdkGLTransparentType 

#GDK_GL_TRANSPARENT_NONE           = $8000 ;/* GDK_GL_NONE */ 
#GDK_GL_TRANSPARENT_RGB            = $8008 
#GDK_GL_TRANSPARENT_INDEX          = $8009 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; GdkGLDrawableTypeMask 

#GDK_GL_WINDOW_BIT                 = 1 << 0 ;/* 0x00000001 */ 
#GDK_GL_PIXMAP_BIT                 = 1 << 1 ;/* 0x00000002 */ 
#GDK_GL_PBUFFER_BIT                = 1 << 2 ;/* 0x00000004 */ 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; GdkGLRenderTypeMask 

#GDK_GL_RGBA_BIT                   = 1 << 0 ;/* 0x00000001 */ 
#GDK_GL_COLOR_INDEX_BIT            = 1 << 1 ;/* 0x00000002 */ 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; GdkGLBufferMask 

#GDK_GL_FRONT_LEFT_BUFFER_BIT      = 1 << 0 ;/* 0x00000001 */ 
#GDK_GL_FRONT_RIGHT_BUFFER_BIT     = 1 << 1 ;/* 0x00000002 */ 
#GDK_GL_BACK_LEFT_BUFFER_BIT       = 1 << 2 ;/* 0x00000004 */ 
#GDK_GL_BACK_RIGHT_BUFFER_BIT      = 1 << 3 ;/* 0x00000008 */ 
#GDK_GL_AUX_BUFFERS_BIT            = 1 << 4 ;/* 0x00000010 */ 
#GDK_GL_DEPTH_BUFFER_BIT           = 1 << 5 ;/* 0x00000020 */ 
#GDK_GL_STENCIL_BUFFER_BIT         = 1 << 6 ;/* 0x00000040 */ 
#GDK_GL_ACCUM_BUFFER_BIT           = 1 << 7 ;/* 0x00000080 */ 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; GdkGLConfigError 

#GDK_GL_BAD_SCREEN                 = 1 ;/* screen # is bad */ 
#GDK_GL_BAD_ATTRIBUTE              = 2 ;/* attribute To get is bad */ 
#GDK_GL_NO_EXTENSION               = 3 ;/* no glx extension on server */ 
#GDK_GL_BAD_VISUAL                 = 4 ;/* visual # Not known by GLX */ 
#GDK_GL_BAD_CONTEXT                = 5 ;/* returned only by import_context EXT? */ 
#GDK_GL_BAD_VALUE                  = 6 ;/* returned only by glXSwapIntervalSGI? */ 
#GDK_GL_BAD_ENUM                   = 7 ;/* unused? */ 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; GdkGLRenderType 

#GDK_GL_RGBA_TYPE                  = $8014 
#GDK_GL_COLOR_INDEX_TYPE           = $8015 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; GdkGLDrawableAttrib 

#GDK_GL_PRESERVED_CONTENTS         = $801B 
#GDK_GL_LARGEST_PBUFFER            = $801C 
#GDK_GL_WIDTH                      = $801D 
#GDK_GL_HEIGHT                     = $801E 
#GDK_GL_EVENT_MASK                 = $801F 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; GdkGLPbufferAttrib 

#GDK_GL_PBUFFER_PRESERVED_CONTENTS = $801B ;/* GDK_GL_PRESERVED_CONTENTS */ 
#GDK_GL_PBUFFER_LARGEST_PBUFFER    = $801C ;/* GDK_GL_LARGEST_PBUFFER */ 
#GDK_GL_PBUFFER_HEIGHT             = $8040 
#GDK_GL_PBUFFER_WIDTH              = $8041 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; GdkGLEventMask 

#GDK_GL_PBUFFER_CLOBBER_MASK       = 1 << 27 ;/* 0x08000000 */ 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; GdkGLEventType 

#GDK_GL_DAMAGED                    = $8020 
#GDK_GL_SAVED                      = $8021 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; GdkGLDrawableType 

#GDK_GL_WINDOW                     = $8022 
#GDK_GL_PBUFFER                    = $8023 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; GdkGLConfigMode 

#GDK_GL_MODE_RGB         = 0 
#GDK_GL_MODE_RGBA        = 0      ;/* same As RGB */ 
#GDK_GL_MODE_INDEX       = 1 << 0 
#GDK_GL_MODE_SINGLE      = 0 
#GDK_GL_MODE_DOUBLE      = 1 << 1 
#GDK_GL_MODE_STEREO      = 1 << 2 
#GDK_GL_MODE_ALPHA       = 1 << 3 
#GDK_GL_MODE_DEPTH       = 1 << 4 
#GDK_GL_MODE_STENCIL     = 1 << 5 
#GDK_GL_MODE_ACCUM       = 1 << 6 
#GDK_GL_MODE_MULTISAMPLE = 1 << 7  ;/* Not supported yet */ 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; GL.INC -- Part of the OpenGL32 API Includes for Purebasic  
; Portions copyright Silicon Graphics and Microsoft.  
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; Copyright 1996 Silicon Graphics, Inc.  
; All Rights Reserved.  
;  
; This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;  
; the contents of this file may not be disclosed to third parties, copied or  
; duplicated in any form, in whole or in part, without the prior written  
; permission of Silicon Graphics, Inc.  
;  
; RESTRICTED RIGHTS LEGEND  
; Use, duplication or disclosure by the Government is subject to restrictions  
; as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data  
; and Computer Software clause at DFARS 252.227-7013, and/or in similar or  
; successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -  
; rights reserved under the Copyright Laws of the United States.  
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

#GL_INC                             = 1  

#GL_VERSION_1_1                     = 1  

#GL_ACCUM                           = $0100  
#GL_LOAD                            = $0101  
#GL_RETURN                          = $0102  
#GL_MULT                            = $0103  
#GL_ADD                             = $0104  

#GL_NEVER                           = $0200  
#GL_LESS                            = $0201  
#GL_EQUAL                           = $0202  
#GL_LEQUAL                          = $0203  
#GL_GREATER                         = $0204  
#GL_NOTEQUAL                        = $0205  
#GL_GEQUAL                          = $0206  
#GL_ALWAYS                          = $0207  

#GL_CURRENT_BIT                     = $00000001  
#GL_POINT_BIT                       = $00000002  
#GL_LINE_BIT                        = $00000004  
#GL_POLYGON_BIT                     = $00000008  
#GL_POLYGON_STIPPLE_BIT             = $00000010  
#GL_PIXEL_MODE_BIT                  = $00000020  
#GL_LIGHTING_BIT                    = $00000040  
#GL_FOG_BIT                         = $00000080  
#GL_DEPTH_BUFFER_BIT                = $00000100  
#GL_ACCUM_BUFFER_BIT                = $00000200  
#GL_STENCIL_BUFFER_BIT              = $00000400  
#GL_VIEWPORT_BIT                    = $00000800  
#GL_TRANSFORM_BIT                   = $00001000  
#GL_ENABLE_BIT                      = $00002000  
#GL_COLOR_BUFFER_BIT                = $00004000  
#GL_HINT_BIT                        = $00008000  
#GL_EVAL_BIT                        = $00010000  
#GL_LIST_BIT                        = $00020000  
#GL_TEXTURE_BIT                     = $00040000  
#GL_SCISSOR_BIT                     = $00080000  
#GL_ALL_ATTRIB_BITS                 = $000FFFFF  

#GL_POINTS                          = $0000  
#GL_LINES                           = $0001  
#GL_LINE_LOOP                       = $0002  
#GL_LINE_STRIP                      = $0003  
#GL_TRIANGLES                       = $0004  
#GL_TRIANGLE_STRIP                  = $0005  
#GL_TRIANGLE_FAN                    = $0006  
#GL_QUADS                           = $0007  
#GL_QUAD_STRIP                      = $0008  
#GL_POLYGON                         = $0009  

#GL_ZERO                            = 0  
#GL_ONE                             = 1  
#GL_SRC_COLOR                       = $0300  
#GL_ONE_MINUS_SRC_COLOR             = $0301  
#GL_SRC_ALPHA                       = $0302  
#GL_ONE_MINUS_SRC_ALPHA             = $0303  
#GL_DST_ALPHA                       = $0304  
#GL_ONE_MINUS_DST_ALPHA             = $0305  

#GL_DST_COLOR                       = $0306  
#GL_ONE_MINUS_DST_COLOR             = $0307  
#GL_SRC_ALPHA_SATURATE              = $0308  

#GL_TRUE                            = 1  
#GL_FALSE                           = 0  

#GL_CLIP_PLANE0                     = $3000  
#GL_CLIP_PLANE1                     = $3001  
#GL_CLIP_PLANE2                     = $3002  
#GL_CLIP_PLANE3                     = $3003  
#GL_CLIP_PLANE4                     = $3004  
#GL_CLIP_PLANE5                     = $3005  

#GL_BYTE                            = $1400  
#GL_UBYTE                           = $1401  
#GL_UNSIGNED_BYTE                   = $1401  
#GL_SHORT                           = $1402  
#GL_USHORT                          = $1403  
#GL_UNSIGNED_SHORT                  = $1403  
#GL_INT                             = $1404  
#GL_LONG                            = $1404  
#GL_UINT                            = $1405  
#GL_UNSIGNED_INT                    = $1405  
#GL_FLOAT                           = $1406  
#GL_2_BYTES                         = $1407  
#GL_3_BYTES                         = $1408  
#GL_4_BYTES                         = $1409  
#GL_DOUBLE                          = $140A  

#GL_NONE                            = 0  
#GL_FRONT_LEFT                      = $0400  
#GL_FRONT_RIGHT                     = $0401  
#GL_BACK_LEFT                       = $0402  
#GL_BACK_RIGHT                      = $0403  
#GL_FRONT                           = $0404  
#GL_BACK                            = $0405  
#GL_LEFT                            = $0406  
#GL_RIGHT                           = $0407  
#GL_FRONT_AND_BACK                  = $0408  
#GL_AUX0                            = $0409  
#GL_AUX1                            = $040A  
#GL_AUX2                            = $040B  
#GL_AUX3                            = $040C  

#GL_NO_ERROR                        = 0  
#GL_INVALID_ENUM                    = $0500  
#GL_INVALID_VALUE                   = $0501  
#GL_INVALID_OPERATION               = $0502  
#GL_STACK_OVERFLOW                  = $0503  
#GL_STACK_UNDERFLOW                 = $0504  
#GL_OUT_OF_MEMORY                   = $0505  

#GL_2D                              = $0600  
#GL_3D                              = $0601  
#GL_3D_COLOR                        = $0602  
#GL_3D_COLOR_TEXTURE                = $0603  
#GL_4D_COLOR_TEXTURE                = $0604  

#GL_PASS_THROUGH_TOKEN              = $0700  
#GL_POINT_TOKEN                     = $0701  
#GL_LINE_TOKEN                      = $0702  
#GL_POLYGON_TOKEN                   = $0703  
#GL_BITMAP_TOKEN                    = $0704  
#GL_DRAW_PIXEL_TOKEN                = $0705  
#GL_COPY_PIXEL_TOKEN                = $0706  
#GL_LINE_RESET_TOKEN                = $0707  

#GL_EXP                             = $0800  
#GL_EXP2                            = $0801  

#GL_CW                              = $0900  
#GL_CCW                             = $0901  

#GL_COEFF                           = $0A00  
#GL_ORDER                           = $0A01  
#GL_DOMAIN                          = $0A02  

#GL_CURRENT_COLOR                   = $0B00  
#GL_CURRENT_INDEX                   = $0B01  
#GL_CURRENT_NORMAL                  = $0B02  
#GL_CURRENT_TEXTURE_COORDS          = $0B03  
#GL_CURRENT_RASTER_COLOR            = $0B04  
#GL_CURRENT_RASTER_INDEX            = $0B05  
#GL_CURRENT_RASTER_TEXTURE_COORDS   = $0B06  
#GL_CURRENT_RASTER_POSITION         = $0B07  
#GL_CURRENT_RASTER_POSITION_VALID   = $0B08  
#GL_CURRENT_RASTER_DISTANCE         = $0B09  
#GL_POINT_SMOOTH                    = $0B10  
#GL_POINT_SIZE                      = $0B11  
#GL_POINT_SIZE_RANGE                = $0B12  
#GL_POINT_SIZE_GRANULARITY          = $0B13  
#GL_LINE_SMOOTH                     = $0B20  
#GL_LINE_WIDTH                      = $0B21  
#GL_LINE_WIDTH_RANGE                = $0B22  
#GL_LINE_WIDTH_GRANULARITY          = $0B23  
#GL_LINE_STIPPLE                    = $0B24  
#GL_LINE_STIPPLE_PATTERN            = $0B25  
#GL_LINE_STIPPLE_REPEAT             = $0B26  
#GL_LIST_MODE                       = $0B30  
#GL_MAX_LIST_NESTING                = $0B31  
#GL_LIST_BASE                       = $0B32  
#GL_LIST_INDEX                      = $0B33  
#GL_POLYGON_MODE                    = $0B40  
#GL_POLYGON_SMOOTH                  = $0B41  
#GL_POLYGON_STIPPLE                 = $0B42  
#GL_EDGE_FLAG                       = $0B43  
#GL_CULL_FACE                       = $0B44  
#GL_CULL_FACE_MODE                  = $0B45  
#GL_FRONT_FACE                      = $0B46  
#GL_LIGHTING                        = $0B50  
#GL_LIGHT_MODEL_LOCAL_VIEWER        = $0B51  
#GL_LIGHT_MODEL_TWO_SIDE            = $0B52  
#GL_LIGHT_MODEL_AMBIENT             = $0B53  
#GL_SHADE_MODEL                     = $0B54  
#GL_COLOR_MATERIAL_FACE             = $0B55  
#GL_COLOR_MATERIAL_PARAMETER        = $0B56  
#GL_COLOR_MATERIAL                  = $0B57  
#GL_FOG                             = $0B60  
#GL_FOG_INDEX                       = $0B61  
#GL_FOG_DENSITY                     = $0B62  
#GL_FOG_START                       = $0B63  
#GL_FOG_END                         = $0B64  
#GL_FOG_MODE                        = $0B65  
#GL_FOG_COLOR                       = $0B66  
#GL_DEPTH_RANGE                     = $0B70  
#GL_DEPTH_TEST                      = $0B71  
#GL_DEPTH_WRITEMASK                 = $0B72  
#GL_DEPTH_CLEAR_VALUE               = $0B73  
#GL_DEPTH_FUNC                      = $0B74  
#GL_ACCUM_CLEAR_VALUE               = $0B80  
#GL_STENCIL_TEST                    = $0B90  
#GL_STENCIL_CLEAR_VALUE             = $0B91  
#GL_STENCIL_FUNC                    = $0B92  
#GL_STENCIL_VALUE_MASK              = $0B93  
#GL_STENCIL_FAIL                    = $0B94  
#GL_STENCIL_PASS_DEPTH_FAIL         = $0B95  
#GL_STENCIL_PASS_DEPTH_PASS         = $0B96  
#GL_STENCIL_REF                     = $0B97  
#GL_STENCIL_WRITEMASK               = $0B98  
#GL_MATRIX_MODE                     = $0BA0  
#GL_NORMALIZE                       = $0BA1  
#GL_VIEWPORT                        = $0BA2  
#GL_MODELVIEW_STACK_DEPTH           = $0BA3  
#GL_PROJECTION_STACK_DEPTH          = $0BA4  
#GL_TEXTURE_STACK_DEPTH             = $0BA5  
#GL_MODELVIEW_MATRIX                = $0BA6  
#GL_PROJECTION_MATRIX               = $0BA7  
#GL_TEXTURE_MATRIX                  = $0BA8  
#GL_ATTRIB_STACK_DEPTH              = $0BB0  
#GL_CLIENT_ATTRIB_STACK_DEPTH       = $0BB1  
#GL_ALPHA_TEST                      = $0BC0  
#GL_ALPHA_TEST_FUNC                 = $0BC1  
#GL_ALPHA_TEST_REF                  = $0BC2  
#GL_DITHER                          = $0BD0  
#GL_BLEND_DST                       = $0BE0  
#GL_BLEND_SRC                       = $0BE1  
#GL_BLEND                           = $0BE2  
#GL_LOGIC_OP_MODE                   = $0BF0  
#GL_INDEX_LOGIC_OP                  = $0BF1  
#GL_COLOR_LOGIC_OP                  = $0BF2  
#GL_AUX_BUFFERS                     = $0C00  
#GL_DRAW_BUFFER                     = $0C01  
#GL_READ_BUFFER                     = $0C02  
#GL_SCISSOR_BOX                     = $0C10  
#GL_SCISSOR_TEST                    = $0C11  
#GL_INDEX_CLEAR_VALUE               = $0C20  
#GL_INDEX_WRITEMASK                 = $0C21  
#GL_COLOR_CLEAR_VALUE               = $0C22  
#GL_COLOR_WRITEMASK                 = $0C23  
#GL_INDEX_MODE                      = $0C30  
#GL_RGBA_MODE                       = $0C31  
#GL_DOUBLEBUFFER                    = $0C32  
#GL_STEREO                          = $0C33  
#GL_RENDER_MODE                     = $0C40  
#GL_PERSPECTIVE_CORRECTION_HINT     = $0C50  
#GL_POINT_SMOOTH_HINT               = $0C51  
#GL_LINE_SMOOTH_HINT                = $0C52  
#GL_POLYGON_SMOOTH_HINT             = $0C53  
#GL_FOG_HINT                        = $0C54  
#GL_TEXTURE_GEN_S                   = $0C60  
#GL_TEXTURE_GEN_T                   = $0C61  
#GL_TEXTURE_GEN_R                   = $0C62  
#GL_TEXTURE_GEN_Q                   = $0C63  
#GL_PIXEL_MAP_I_TO_I                = $0C70  
#GL_PIXEL_MAP_S_TO_S                = $0C71  
#GL_PIXEL_MAP_I_TO_R                = $0C72  
#GL_PIXEL_MAP_I_TO_G                = $0C73  
#GL_PIXEL_MAP_I_TO_B                = $0C74  
#GL_PIXEL_MAP_I_TO_A                = $0C75  
#GL_PIXEL_MAP_R_TO_R                = $0C76  
#GL_PIXEL_MAP_G_TO_G                = $0C77  
#GL_PIXEL_MAP_B_TO_B                = $0C78  
#GL_PIXEL_MAP_A_TO_A                = $0C79  
#GL_PIXEL_MAP_I_TO_I_SIZE           = $0CB0  
#GL_PIXEL_MAP_S_TO_S_SIZE           = $0CB1  
#GL_PIXEL_MAP_I_TO_R_SIZE           = $0CB2  
#GL_PIXEL_MAP_I_TO_G_SIZE           = $0CB3  
#GL_PIXEL_MAP_I_TO_B_SIZE           = $0CB4  
#GL_PIXEL_MAP_I_TO_A_SIZE           = $0CB5  
#GL_PIXEL_MAP_R_TO_R_SIZE           = $0CB6  
#GL_PIXEL_MAP_G_TO_G_SIZE           = $0CB7  
#GL_PIXEL_MAP_B_TO_B_SIZE           = $0CB8  
#GL_PIXEL_MAP_A_TO_A_SIZE           = $0CB9  
#GL_UNPACK_SWAP_BYTES               = $0CF0  
#GL_UNPACK_LSB_FIRST                = $0CF1  
#GL_UNPACK_ROW_LENGTH               = $0CF2  
#GL_UNPACK_SKIP_ROWS                = $0CF3  
#GL_UNPACK_SKIP_PIXELS              = $0CF4  
#GL_UNPACK_ALIGNMENT                = $0CF5  
#GL_PACK_SWAP_BYTES                 = $0D00  
#GL_PACK_LSB_FIRST                  = $0D01  
#GL_PACK_ROW_LENGTH                 = $0D02  
#GL_PACK_SKIP_ROWS                  = $0D03  
#GL_PACK_SKIP_PIXELS                = $0D04  
#GL_PACK_ALIGNMENT                  = $0D05  
#GL_MAP_COLOR                       = $0D10  
#GL_MAP_STENCIL                     = $0D11  
#GL_INDEX_SHIFT                     = $0D12  
#GL_INDEX_OFFSET                    = $0D13  
#GL_RED_SCALE                       = $0D14  
#GL_RED_BIAS                        = $0D15  
#GL_ZOOM_X                          = $0D16  
#GL_ZOOM_Y                          = $0D17  
#GL_GREEN_SCALE                     = $0D18  
#GL_GREEN_BIAS                      = $0D19  
#GL_BLUE_SCALE                      = $0D1A  
#GL_BLUE_BIAS                       = $0D1B  
#GL_ALPHA_SCALE                     = $0D1C  
#GL_ALPHA_BIAS                      = $0D1D  
#GL_DEPTH_SCALE                     = $0D1E  
#GL_DEPTH_BIAS                      = $0D1F  
#GL_MAX_EVAL_ORDER                  = $0D30  
#GL_MAX_LIGHTS                      = $0D31  
#GL_MAX_CLIP_PLANES                 = $0D32  
#GL_MAX_TEXTURE_SIZE                = $0D33  
#GL_MAX_PIXEL_MAP_TABLE             = $0D34  
#GL_MAX_ATTRIB_STACK_DEPTH          = $0D35  
#GL_MAX_MODELVIEW_STACK_DEPTH       = $0D36  
#GL_MAX_NAME_STACK_DEPTH            = $0D37  
#GL_MAX_PROJECTION_STACK_DEPTH      = $0D38  
#GL_MAX_TEXTURE_STACK_DEPTH         = $0D39  
#GL_MAX_VIEWPORT_DIMS               = $0D3A  
#GL_MAX_CLIENT_ATTRIB_STACK_DEPTH   = $0D3B  
#GL_SUBPIXEL_BITS                   = $0D50  
#GL_INDEX_BITS                      = $0D51  
#GL_RED_BITS                        = $0D52  
#GL_GREEN_BITS                      = $0D53  
#GL_BLUE_BITS                       = $0D54  
#GL_ALPHA_BITS                      = $0D55  
#GL_DEPTH_BITS                      = $0D56  
#GL_STENCIL_BITS                    = $0D57  
#GL_ACCUM_RED_BITS                  = $0D58  
#GL_ACCUM_GREEN_BITS                = $0D59  
#GL_ACCUM_BLUE_BITS                 = $0D5A  
#GL_ACCUM_ALPHA_BITS                = $0D5B  
#GL_NAME_STACK_DEPTH                = $0D70  
#GL_AUTO_NORMAL                     = $0D80  
#GL_MAP1_COLOR_4                    = $0D90  
#GL_MAP1_INDEX                      = $0D91  
#GL_MAP1_NORMAL                     = $0D92  
#GL_MAP1_TEXTURE_COORD_1            = $0D93  
#GL_MAP1_TEXTURE_COORD_2            = $0D94  
#GL_MAP1_TEXTURE_COORD_3            = $0D95  
#GL_MAP1_TEXTURE_COORD_4            = $0D96  
#GL_MAP1_VERTEX_3                   = $0D97  
#GL_MAP1_VERTEX_4                   = $0D98  
#GL_MAP2_COLOR_4                    = $0DB0  
#GL_MAP2_INDEX                      = $0DB1  
#GL_MAP2_NORMAL                     = $0DB2  
#GL_MAP2_TEXTURE_COORD_1            = $0DB3  
#GL_MAP2_TEXTURE_COORD_2            = $0DB4  
#GL_MAP2_TEXTURE_COORD_3            = $0DB5  
#GL_MAP2_TEXTURE_COORD_4            = $0DB6  
#GL_MAP2_VERTEX_3                   = $0DB7  
#GL_MAP2_VERTEX_4                   = $0DB8  
#GL_MAP1_GRID_DOMAIN                = $0DD0  
#GL_MAP1_GRID_SEGMENTS              = $0DD1  
#GL_MAP2_GRID_DOMAIN                = $0DD2  
#GL_MAP2_GRID_SEGMENTS              = $0DD3  
#GL_TEXTURE_1D                      = $0DE0  
#GL_TEXTURE_2D                      = $0DE1  
#GL_FEEDBACK_BUFFER_POINTER         = $0DF0  
#GL_FEEDBACK_BUFFER_SIZE            = $0DF1  
#GL_FEEDBACK_BUFFER_TYPE            = $0DF2  
#GL_SELECTION_BUFFER_POINTER        = $0DF3  
#GL_SELECTION_BUFFER_SIZE           = $0DF4  

#GL_TEXTURE_WIDTH                   = $1000  
#GL_TEXTURE_HEIGHT                  = $1001  
#GL_TEXTURE_INTERNAL_FORMAT         = $1003  
#GL_TEXTURE_BORDER_COLOR            = $1004  
#GL_TEXTURE_BORDER                  = $1005  

#GL_DONT_CARE                       = $1100  
#GL_FASTEST                         = $1101  
#GL_NICEST                          = $1102  

#GL_LIGHT0                          = $4000  
#GL_LIGHT1                          = $4001  
#GL_LIGHT2                          = $4002  
#GL_LIGHT3                          = $4003  
#GL_LIGHT4                          = $4004  
#GL_LIGHT5                          = $4005  
#GL_LIGHT6                          = $4006  
#GL_LIGHT7                          = $4007  

#GL_AMBIENT                         = $1200  
#GL_DIFFUSE                         = $1201  
#GL_SPECULAR                        = $1202  
#GL_POSITION                        = $1203  
#GL_SPOT_DIRECTION                  = $1204  
#GL_SPOT_EXPONENT                   = $1205  
#GL_SPOT_CUTOFF                     = $1206  
#GL_CONSTANT_ATTENUATION            = $1207  
#GL_LINEAR_ATTENUATION              = $1208  
#GL_QUADRATIC_ATTENUATION           = $1209  

#GL_COMPILE                         = $1300  
#GL_COMPILE_AND_EXECUTE             = $1301  

#GL_CLEAR                           = $1500  
#GL_AND                             = $1501  
#GL_AND_REVERSE                     = $1502  
#GL_COPY                            = $1503  
#GL_AND_INVERTED                    = $1504  
#GL_NOOP                            = $1505  
#GL_XOR                             = $1506  
#GL_OR                              = $1507  
#GL_NOR                             = $1508  
#GL_EQUIV                           = $1509  
#GL_INVERT                          = $150A  
#GL_OR_REVERSE                      = $150B  
#GL_COPY_INVERTED                   = $150C  
#GL_OR_INVERTED                     = $150D  
#GL_NAND                            = $150E  
#GL_SET                             = $150F  

#GL_EMISSION                        = $1600  
#GL_SHININESS                       = $1601  
#GL_AMBIENT_AND_DIFFUSE             = $1602  
#GL_COLOR_INDEXES                   = $1603  

#GL_MODELVIEW                       = $1700  
#GL_PROJECTION                      = $1701  
#GL_TEXTURE                         = $1702  

#GL_COLOR                           = $1800  
#GL_DEPTH                           = $1801  
#GL_STENCIL                         = $1802  

#GL_COLOR_INDEX                     = $1900  
#GL_STENCIL_INDEX                   = $1901  
#GL_DEPTH_COMPONENT                 = $1902  
#GL_RED                             = $1903  
#GL_GREEN                           = $1904  
#GL_BLUE                            = $1905  
#GL_ALPHA                           = $1906  
#GL_RGB                             = $1907  
#GL_RGBA                            = $1908  
#GL_LUMINANCE                       = $1909  
#GL_LUMINANCE_ALPHA                 = $190A  

#GL_BITMAP                          = $1A00  

#GL_POINT                           = $1B00  
#GL_LINE                            = $1B01  
#GL_FILL                            = $1B02  

#GL_RENDER                          = $1C00  
#GL_FEEDBACK                        = $1C01  
#GL_SELECT                          = $1C02  

#GL_FLAT                            = $1D00  
#GL_SMOOTH                          = $1D01  

#GL_KEEP                            = $1E00  
#GL_REPLACE                         = $1E01  
#GL_INCR                            = $1E02  
#GL_DECR                            = $1E03  

#GL_VENDOR                          = $1F00  
#GL_RENDERER                        = $1F01  
#GL_VERSION                         = $1F02  
#GL_EXTENSIONS                      = $1F03  

#GL_S                               = $2000  
#GL_T                               = $2001  
#GL_R                               = $2002  
#GL_Q                               = $2003  

#GL_MODULATE                        = $2100  
#GL_DECAL                           = $2101  

#GL_TEXTURE_ENV_MODE                = $2200  
#GL_TEXTURE_ENV_COLOR               = $2201  

#GL_TEXTURE_ENV                     = $2300  

#GL_EYE_LINEAR                      = $2400  
#GL_OBJECT_LINEAR                   = $2401  
#GL_SPHERE_MAP                      = $2402  

#GL_TEXTURE_GEN_MODE                = $2500  
#GL_OBJECT_PLANE                    = $2501  
#GL_EYE_PLANE                       = $2502  

#GL_NEAREST                         = $2600  
#GL_LINEAR                          = $2601  

#GL_NEAREST_MIPMAP_NEAREST          = $2700  
#GL_LINEAR_MIPMAP_NEAREST           = $2701  
#GL_NEAREST_MIPMAP_LINEAR           = $2702  
#GL_LINEAR_MIPMAP_LINEAR            = $2703  

#GL_TEXTURE_MAG_FILTER              = $2800  
#GL_TEXTURE_MIN_FILTER              = $2801  
#GL_TEXTURE_WRAP_S                  = $2802  
#GL_TEXTURE_WRAP_T                  = $2803  

#GL_CLAMP                           = $2900  
#GL_REPEAT                          = $2901  

#GL_CLIENT_PIXEL_STORE_BIT          = $00000001  
#GL_CLIENT_VERTEX_ARRAY_BIT         = $00000002  
#GL_CLIENT_ALL_ATTRIB_BITS          = $FFFFFFFF  

#GL_POLYGON_OFFSET_FACTOR           = $8038  
#GL_POLYGON_OFFSET_UNITS            = $2A00  
#GL_POLYGON_OFFSET_POINT            = $2A01  
#GL_POLYGON_OFFSET_LINE             = $2A02  
#GL_POLYGON_OFFSET_FILL             = $8037  

#GL_ALPHA4                          = $803B  
#GL_ALPHA8                          = $803C  
#GL_ALPHA12                         = $803D  
#GL_ALPHA16                         = $803E  
#GL_LUMINANCE4                      = $803F  
#GL_LUMINANCE8                      = $8040  
#GL_LUMINANCE12                     = $8041  
#GL_LUMINANCE16                     = $8042  
#GL_LUMINANCE4_ALPHA4               = $8043  
#GL_LUMINANCE6_ALPHA2               = $8044  
#GL_LUMINANCE8_ALPHA8               = $8045  
#GL_LUMINANCE12_ALPHA4              = $8046  
#GL_LUMINANCE12_ALPHA12             = $8047  
#GL_LUMINANCE16_ALPHA16             = $8048  
#GL_INTENSITY                       = $8049  
#GL_INTENSITY4                      = $804A  
#GL_INTENSITY8                      = $804B  
#GL_INTENSITY12                     = $804C  
#GL_INTENSITY16                     = $804D  
#GL_R3_G3_B2                        = $2A10  
#GL_RGB4                            = $804F  
#GL_RGB5                            = $8050  
#GL_RGB8                            = $8051  
#GL_RGB10                           = $8052  
#GL_RGB12                           = $8053  
#GL_RGB16                           = $8054  
#GL_RGBA2                           = $8055  
#GL_RGBA4                           = $8056  
#GL_RGB5_A1                         = $8057  
#GL_RGBA8                           = $8058  
#GL_RGB10_A2                        = $8059  
#GL_RGBA12                          = $805A  
#GL_RGBA16                          = $805B  
#GL_TEXTURE_RED_SIZE                = $805C  
#GL_TEXTURE_GREEN_SIZE              = $805D  
#GL_TEXTURE_BLUE_SIZE               = $805E  
#GL_TEXTURE_ALPHA_SIZE              = $805F  
#GL_TEXTURE_LUMINANCE_SIZE          = $8060  
#GL_TEXTURE_INTENSITY_SIZE          = $8061  
#GL_PROXY_TEXTURE_1D                = $8063  
#GL_PROXY_TEXTURE_2D                = $8064  

#GL_TEXTURE_PRIORITY                = $8066  
#GL_TEXTURE_RESIDENT                = $8067  
#GL_TEXTURE_BINDING_1D              = $8068  
#GL_TEXTURE_BINDING_2D              = $8069  

#GL_VERTEX_ARRAY                    = $8074  
#GL_NORMAL_ARRAY                    = $8075  
#GL_COLOR_ARRAY                     = $8076  
#GL_INDEX_ARRAY                     = $8077  
#GL_TEXTURE_COORD_ARRAY             = $8078  
#GL_EDGE_FLAG_ARRAY                 = $8079  
#GL_VERTEX_ARRAY_SIZE               = $807A  
#GL_VERTEX_ARRAY_TYPE               = $807B  
#GL_VERTEX_ARRAY_STRIDE             = $807C  
#GL_NORMAL_ARRAY_TYPE               = $807E  
#GL_NORMAL_ARRAY_STRIDE             = $807F  
#GL_COLOR_ARRAY_SIZE                = $8081  
#GL_COLOR_ARRAY_TYPE                = $8082  
#GL_COLOR_ARRAY_STRIDE              = $8083  
#GL_INDEX_ARRAY_TYPE                = $8085  
#GL_INDEX_ARRAY_STRIDE              = $8086  
#GL_TEXTURE_COORD_ARRAY_SIZE        = $8088  
#GL_TEXTURE_COORD_ARRAY_TYPE        = $8089  
#GL_TEXTURE_COORD_ARRAY_STRIDE      = $808A  
#GL_EDGE_FLAG_ARRAY_STRIDE          = $808C  
#GL_VERTEX_ARRAY_POINTER            = $808E  
#GL_NORMAL_ARRAY_POINTER            = $808F  
#GL_COLOR_ARRAY_POINTER             = $8090  
#GL_INDEX_ARRAY_POINTER             = $8091  
#GL_TEXTURE_COORD_ARRAY_POINTER     = $8092  
#GL_EDGE_FLAG_ARRAY_POINTER         = $8093  
#GL_V2F                             = $2A20  
#GL_V3F                             = $2A21  
#GL_C4UB_V2F                        = $2A22  
#GL_C4UB_V3F                        = $2A23  
#GL_C3F_V3F                         = $2A24  
#GL_N3F_V3F                         = $2A25  
#GL_C4F_N3F_V3F                     = $2A26  
#GL_T2F_V3F                         = $2A27  
#GL_T4F_V4F                         = $2A28  
#GL_T2F_C4UB_V3F                    = $2A29  
#GL_T2F_C3F_V3F                     = $2A2A  
#GL_T2F_N3F_V3F                     = $2A2B  
#GL_T2F_C4F_N3F_V3F                 = $2A2C  
#GL_T4F_C4F_N3F_V4F                 = $2A2D  

#GL_EXT_vertex_array                = 1  
#GL_EXT_bgra                        = 1  
#GL_EXT_paletted_texture            = 1  
#GL_WIN_swap_hint                   = 1  
#GL_WIN_draw_range_elements         = 1  

#GL_VERTEX_ARRAY_EXT                = $8074  
#GL_NORMAL_ARRAY_EXT                = $8075  
#GL_COLOR_ARRAY_EXT                 = $8076  
#GL_INDEX_ARRAY_EXT                 = $8077  
#GL_TEXTURE_COORD_ARRAY_EXT         = $8078  
#GL_EDGE_FLAG_ARRAY_EXT             = $8079  
#GL_VERTEX_ARRAY_SIZE_EXT           = $807A  
#GL_VERTEX_ARRAY_TYPE_EXT           = $807B  
#GL_VERTEX_ARRAY_STRIDE_EXT         = $807C  
#GL_VERTEX_ARRAY_COUNT_EXT          = $807D  
#GL_NORMAL_ARRAY_TYPE_EXT           = $807E  
#GL_NORMAL_ARRAY_STRIDE_EXT         = $807F  
#GL_NORMAL_ARRAY_COUNT_EXT          = $8080  
#GL_COLOR_ARRAY_SIZE_EXT            = $8081  
#GL_COLOR_ARRAY_TYPE_EXT            = $8082  
#GL_COLOR_ARRAY_STRIDE_EXT          = $8083  
#GL_COLOR_ARRAY_COUNT_EXT           = $8084  
#GL_INDEX_ARRAY_TYPE_EXT            = $8085  
#GL_INDEX_ARRAY_STRIDE_EXT          = $8086  
#GL_INDEX_ARRAY_COUNT_EXT           = $8087  
#GL_TEXTURE_COORD_ARRAY_SIZE_EXT    = $8088  
#GL_TEXTURE_COORD_ARRAY_TYPE_EXT    = $8089  
#GL_TEXTURE_COORD_ARRAY_STRIDE_EXT  = $808A  
#GL_TEXTURE_COORD_ARRAY_COUNT_EXT   = $808B  
#GL_EDGE_FLAG_ARRAY_STRIDE_EXT      = $808C  
#GL_EDGE_FLAG_ARRAY_COUNT_EXT       = $808D  
#GL_VERTEX_ARRAY_POINTER_EXT        = $808E  
#GL_NORMAL_ARRAY_POINTER_EXT        = $808F  
#GL_COLOR_ARRAY_POINTER_EXT         = $8090  
#GL_INDEX_ARRAY_POINTER_EXT         = $8091  
#GL_TEXTURE_COORD_ARRAY_POINTER_EXT = $8092  
#GL_EDGE_FLAG_ARRAY_POINTER_EXT     = $8093  
#GL_DOUBLE_EXT                      = #GL_DOUBLE  

#GL_BGR_EXT                         = $80E0  
#GL_BGRA_EXT                        = $80E1  

#GL_COLOR_TABLE_FORMAT_EXT          = $80D8  
#GL_COLOR_TABLE_WIDTH_EXT           = $80D9  
#GL_COLOR_TABLE_RED_SIZE_EXT        = $80DA  
#GL_COLOR_TABLE_GREEN_SIZE_EXT      = $80DB  
#GL_COLOR_TABLE_BLUE_SIZE_EXT       = $80DC  
#GL_COLOR_TABLE_ALPHA_SIZE_EXT      = $80DD  
#GL_COLOR_TABLE_LUMINANCE_SIZE_EXT  = $80DE  
#GL_COLOR_TABLE_INTENSITY_SIZE_EXT  = $80DF  

#GL_COLOR_INDEX1_EXT                = $80E2  
#GL_COLOR_INDEX2_EXT                = $80E3  
#GL_COLOR_INDEX4_EXT                = $80E4  
#GL_COLOR_INDEX8_EXT                = $80E5  
#GL_COLOR_INDEX12_EXT               = $80E6  
#GL_COLOR_INDEX16_EXT               = $80E7  

#GL_MAX_ELEMENTS_VERTICES_WIN       = $80E8  
#GL_MAX_ELEMENTS_INDICES_WIN        = $80E9  

#GL_PHONG_WIN                       = $80EA  
#GL_PHONG_HINT_WIN                  = $80EB  

#GL_FOG_SPECULAR_TEXTURE_WIN        = $80EC  

#GL_LOGIC_OP                        = #GL_INDEX_LOGIC_OP  
#GL_TEXTURE_COMPONENTS              = #GL_TEXTURE_INTERNAL_FORMAT  

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; The OpenGL Architecture Review Board (ARB), was an independent consortium  
; formed in 1992, that governed the future of OpenGL, proposing And  
; approving changes To the specification, new releases, And conformance  
; testing.  
;  
; Constants definitions 
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  

#GL_TEXTURE_CUBE_MAP_ARB            = $8513 
#GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = $8515 
#GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = $8516 
#GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = $8517 
#GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = $8518 
#GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = $8519 
#GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = $851A 

#GL_ARRAY_BUFFER = $8892 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; Miscaleneous Structures 

Structure GdkGLContext 
EndStructure  

Structure GdkGLConfig 
EndStructure 
;  
Structure GdkGLDrawable 
EndStructure 

Structure GdkGLPixmap 
EndStructure  

Structure GdkGLWindow 
EndStructure  

Structure GdkPixmap 
EndStructure  

Structure GdkWindow 
EndStructure  

Structure VisualID 
EndStructure  

Structure PangoFontDescription 
EndStructure  

Structure GLXContext   
EndStructure 

Structure GtkGLAreaClass 
EndStructure  

Structure GtkGLArea 
  darea.GtkDrawingArea 
  *glcontext.GdkGLContext 
EndStructure 

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; Miscaleneous Library Import 

ImportC "/usr/lib/libgtkgl-2.0.so"  
  
  gtk_gl_area_get_type() 
  gtk_gl_area_new(*attrList) 
  gtk_gl_area_share_new(*attrList,*share.GtkGLArea) 
  gtk_gl_area_new_vargs(*share,*args) 
  gtk_gl_area_make_current(*glarea.GtkGLArea) 
  gtk_gl_area_swap_buffers(*glarea.GtkGLArea) 
  gtk_widget_set_size_request(*glarea.GtkGLArea,width,height)  
  
EndImport   

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
; <<<<< Importation des commandes depuis la lib OpenGL <<<<< 

ImportC "-lGL"  
  
  glBegin(Mode.l) 
  glClear(Mask.l)  
  glClearColor(Red.f, Green.f, Blue.f, Alpha.f) ; Values are clamped to the range [0,1]. 
  glColor3f(Red.f, Green.f, Blue.f) 
  glColorMaterial(Face.l, Mode.l) 
  glDisable(Capability.l) 
  glEnable(Capability.l) 
  glEnd() 
  glHint(Target.l, Mode.l)  
  glLightfv(Light.l, Pname.l, *params.i) 
  glLoadIdentity() 
  glMatrixMode(Mode.l)     
  glOrtho(Left.d, Right.d, Bottom.d, Top.d, Near.d, Far.d) 
  glPopMatrix() 
  glPopName() 
  glPushMatrix() 
  glRotatef(Angle.f, x.f, y.f, z.f) 
  glScalef(x.f, y.f, z.f) 
  glShadeModel(Mode.l)  
  glTranslatef(x.f, y.f, z.f) 
  glVertex3f(x.f, y.f, z.f) 
  glViewport(x.l, y.l, width.l, height.l)  
  
EndImport 

Import "-lGLU" 
  
  gluLookAt(EyeX.d,  EyeY.d, EyeZ.d, CenterX.d, CenterY.d, CenterZ.d, UpX.d, UpY.d,  UpZ.d) 
  gluOrtho2D(Left.d, Right.d, Bottom.d, Top.d) 
  gluPerspective(FovY.d, Aspect.d, zNear.d, zFar.d) 
  
EndImport 

Macro fillv(V,a,b,c,d)
  v(0) = a
  v(1) = b
  v(2) = c
  v(3) = d
EndMacro

Procedure glarea_init(*widget.GtkWidget)
  
  If gtk_gl_area_make_current(*widget) 
    
    Global Dim light0_pos.f(4) 
    Global Dim light0_color.f(4)
    Global Dim light1_pos.f(4)
    Global Dim light1_color.f(4) 
    
    fillv(light0_pos,-50.0, 50.0, 0.0, 0.0);
    fillv(light0_color, 0.1, 0.1, 0.1, 1.0); /* white light */
    fillv(light1_pos,50.0, 50.0, 0.0, 0.0);
    fillv(light1_color,0.4, 0.4, 1.0, 1.0);  /* cold blue light */
    
    glEnable(#GL_DEPTH_TEST);
    glEnable(#GL_CULL_FACE)
    ;/* speedups */
    glEnable(#GL_DITHER);
    glShadeModel(#GL_SMOOTH);
    glHint(#GL_PERSPECTIVE_CORRECTION_HINT, #GL_FASTEST);
    glHint(#GL_POLYGON_SMOOTH_HINT, #GL_FASTEST);
    
    ;/* light */
    glLightfv(#GL_LIGHT0, #GL_POSITION, @light0_pos);
    glLightfv(#GL_LIGHT0, #GL_DIFFUSE,  @light0_color);
    glLightfv(#GL_LIGHT1, #GL_POSITION, @light1_pos);
    glLightfv(#GL_LIGHT1, #GL_DIFFUSE,  @light1_color);
    glEnable(#GL_LIGHT0);
    glEnable(#GL_LIGHT1);
    glEnable(#GL_LIGHTING);
    
    glColorMaterial(#GL_FRONT_AND_BACK,#GL_AMBIENT_AND_DIFFUSE);
    glEnable(#GL_COLOR_MATERIAL)
    
    ginit = 1
    
  EndIf 
  
  ProcedureReturn 1
EndProcedure 

Procedure glarea_reshape(*widget.GtkWidget,*event.GdkEventConfigure)
  
  w = *widget\parent\allocation\width;
  h = *widget\parent\allocation\height;
  
  If gtk_gl_area_make_current(*widget)
    
    glViewport(0,0, w,h)
    glMatrixMode(#GL_PROJECTION)
    glLoadIdentity()
    gluPerspective(45.0, w/h, 0.1, 1000.0)
    glMatrixMode(#GL_MODELVIEW)
    
    
  EndIf 
  
  ProcedureReturn 1;
EndProcedure

Procedure glarea_draw(*widget.GtkWidget,*event.GdkEventExpose)
  
  Static rot.f
  
  If gtk_gl_area_make_current(*widget)
    
    rot+0.1  
    glClear(#GL_COLOR_BUFFER_BIT | #GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
    glClearColor(0,0,0,1);
    glLoadIdentity();                   // Reset The View
    glTranslatef(0,0,-5);             
    glRotatef(rot,0.0,1.0,1.0);             // Rotate The Pyramid On It's Y Axis
    
    glbegin(#GL_TRIANGLES)
    glColor3f(255,0.0,0.0);          // Red
    glVertex3f( 0.0,1.0,0.0);            // Top Of Triangle (Front)
    glColor3f(0.0,255,0.0);          // Green
    glVertex3f(-1.0,-1.0, 1.0);          // Left Of Triangle (Front)
    glColor3f(0.0,0.0,255);          // Blue
    glVertex3f( 1.0,-1.0, 1.0);          // Right Of Triangle (Front)
    
    glColor3f(255,0.0,0.0);          // Red
    glVertex3f( 0.0, 1.0, 0.0);          // Top Of Triangle (Right)
    glColor3f(0.0,0.0,255);          // Blue
    glVertex3f( 1.0,-1.0, 1.0);          // Left Of Triangle (Right)
    glColor3f(0.0,255,0.0);          // Green
    glVertex3f( 1.0,-1.0, -1.0);         // Right Of Triangle (Right)
    
    glColor3f(255,0.0,0.0);          // Red
    glVertex3f( 0.0, 1.0,0.0);          // Top Of Triangle (Back)
    glColor3f(0.0,255,0.0);          // Green
    glVertex3f( 1.0,-1.0, -1.0);         // Left Of Triangle (Back)
    glColor3f(0.0,0.0,255);          // Blue
    glVertex3f(-1.0,-1.0, -1.0);         // Right Of Triangle (Back)
    
    glColor3f(255,0.0,0.0);          // Red
    glVertex3f( 0.0, 1.0, 0.0);          // Top Of Triangle (Left)
    glColor3f(0.0,0.0,255);          // Blue
    glVertex3f(-1.0,-1.0,-1.0);          // Left Of Triangle (Left)
    glColor3f(0.0,255,0.0);          // Green
    glVertex3f(-1.0,-1.0, 1.0);          // Right Of Triangle (Left)
    glEnd();                        // Done Drawing The Pyramid
    
    gtk_gl_area_swap_buffers(*widget);
    
  EndIf 
  
  ProcedureReturn 1
EndProcedure 

Procedure Ireshape(*widget.GtkWidget,*allocation.GtkAllocation, *vData)
  
  gtk_widget_set_size_request_(*vdata,*allocation\width,*allocation\height)
  
EndProcedure  

Procedure GLAreaGadget(x,y,w,h)
  
  Protected tglarea,ctg
  
  Dim ats(4) : ats(0)=#GDK_GL_RGBA : ats(1)=#GDK_GL_DOUBLEBUFFER : ats(2) = #GDK_GL_DEPTH_SIZE 
  ats(3) = 1 : ats(4) = #GDK_NONE
  
  ctg = ContainerGadget(#PB_Any,x,y,w,h)
    
    tglarea = gtk_gl_area_new(@ats(0))
    
    SetGadgetData(ctg,tglarea)
    
    gtk_widget_set_events_(tglarea,#GDK_EXPOSURE_MASK|#GDK_BUTTON_PRESS_MASK|#GDK_BUTTON_RELEASE_MASK|#GDK_POINTER_MOTION_MASK|#GDK_POINTER_MOTION_HINT_MASK);
    g_signal_connect_(tglarea,"realize",@glarea_init(),0);
    g_signal_connect_(tglarea,"expose_event",@glarea_draw(),0);
    g_signal_connect_(tglarea, "configure_event",@glarea_reshape(),0)
    g_signal_connect_(GadgetID(ctg), "size-allocate", @Ireshape(), tglarea)
    gtk_widget_set_usize_(tglarea,w,h);
    gtk_container_add_(GadgetID(ctg), tglarea);  ;need to attach it to something 
    
  CloseGadgetList()
  
  gtk_widget_show_(tglarea);
  
  ProcedureReturn ctg  
EndProcedure   


If OpenWindow(0, 0, 0, 800, 600, "GLAreaGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget)  
  
  glarea1 = GLAreaGadget(0,0,0,0)
  glarea2 = GLAreaGadget(0,0,0,0)
  glarea3 = GLAreaGadget(0,0,0,0)
  glarea4 = GLAreaGadget(0,0,0,0)
  
  
  #Separateur1 = 4
  #Separateur2 = 5 
  #Separateur3 = 6 
  
  SplitterGadget(#Separateur1, 0, 0, 0, 0, glarea1, glarea2, #PB_Splitter_Separator)
  SplitterGadget(#Separateur2, 0, 0, 0, 0, glarea3, glarea4, #PB_Splitter_Separator)
  SplitterGadget(#Separateur3, 5, 5, 790, 590, #Separateur1, #Separateur2, #PB_Splitter_Separator|#PB_Splitter_Vertical)
  
  
  Repeat
    
    glarea_draw(GetGadgetData(glarea1), 0)  
    glarea_draw(GetGadgetData(glarea2), 0)
    glarea_draw(GetGadgetData(glarea3), 0)  
    glarea_draw(GetGadgetData(glarea4), 0)
    
    EventID = WaitWindowEvent(5)
    
    Select EventID
        
      Case #PB_Event_Menu
        
        Select EventMenu()
            
        EndSelect
        
      Case #PB_Event_Gadget
        
        Select EventGadget()
            
        EndSelect
        
      Case #PB_Event_SizeWindow
        ResizeGadget(#Separateur3, #PB_Ignore, #PB_Ignore, WindowWidth(0) - 10, WindowHeight(0) - 10)
        
    EndSelect
    
  Until EventID = #PB_Event_CloseWindow
  
EndIf

; <<<<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: Gtk GL Extension

Message par G-Rom »

c'est du super boulot guimauve , penses tu qu'il est possible d'avoir un rendu fullscreen ? quel est la version du contexte opengl , 4.1 ? 2.0 ?
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Gtk GL Extension

Message par Guimauve »

Bonjour G-Rom,

Je ne veux pas jouer le rabat-joie mais l'idée principale derrière ce gadget est justement de ne pas fonctionner en mode "FullScreen" mais bien comme un "Vrai" Gadget en mode fenêtre. Le besoin de départ est de créer un logiciel utilitaire d'édition de UV Mapping similaire à Ultimate Unwrap 3D qui puisse fonctionner nativement sous Linux. En effet, UU3D a un soucis avec le rendu des modèle 3D avec les textures or le but du programme est d'appliquer un UVMapping et l'ajuster au besoin. Mais en l'état actuelle des choses, on travaille en aveugle.

Pour la version OpenGL, voici un code source à inclure :

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; CODE GÉNÉRÉ AUTOMATIQUEMENT, NE PAS MODIFIER À
; MOINS D'AVOIR UNE RAISON TRÈS TRÈS VALABLE !!!
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Code généré par : Dev-Type V3.115.570
; Nom du projet : Le nom du projet ici
; Nom du fichier : Nom du fichier
; Version du fichier : 0.0.0
; Programmation : À vérifier
; Programmé par : Guimauve
; Date : 28-01-2011
; Mise à jour : 24-12-2011
; Codé pour PureBasic V4.60
; Plateforme : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Déclaration de la Structure <<<<<

Structure GLInfo
  
  Vendor.s
  Version.s
  Renderer.s
  List Extension.s()
  
EndStructure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les observateurs <<<<<

Macro GetGLInfoVendor(GLInfoA)
  
  GLInfoA\Vendor
  
EndMacro

Macro GetGLInfoVersion(GLInfoA)
  
  GLInfoA\Version
  
EndMacro

Macro GetGLInfoRenderer(GLInfoA)
  
  GLInfoA\Renderer
  
EndMacro

Macro GetGLInfoExtension(GLInfoA)
  
  GLInfoA\Extension()
  
EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les mutateurs <<<<<

Macro SetGLInfoVendor(GLInfoA, P_Vendor)
  
  GetGLInfoVendor(GLInfoA) = P_Vendor
  
EndMacro

Macro SetGLInfoVersion(GLInfoA, P_Version)
  
  GetGLInfoVersion(GLInfoA) = P_Version
  
EndMacro

Macro SetGLInfoRenderer(GLInfoA, P_Renderer)
  
  GetGLInfoRenderer(GLInfoA) = P_Renderer
  
EndMacro

Macro SetGLInfoExtension(GLInfoA, P_Extension)
  
  GetGLInfoExtension(GLInfoA) = P_Extension
  
EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les macros complémentaires pour les Listes chaînées <<<<<

Macro AddGLInfoExtensionElement(GLInfoA)
  
  AddElement(GetGLInfoExtension(GLInfoA))
  
EndMacro

Macro AddGLInfoExtensionElementEx(GLInfoA, P_Element)
  
  AddElement(GetGLInfoExtension(GLInfoA))
  SetGLInfoExtension(GLInfoA, P_Element)
  
EndMacro

Macro InsertGLInfoExtensionElement(GLInfoA)
  
  InsertElement(GetGLInfoExtension(GLInfoA))
  
EndMacro

Macro InsertGLInfoExtensionElementEx(GLInfoA, P_Element)
  
  InsertElement(GetGLInfoExtension(GLInfoA))
  SetGLInfoExtension(GLInfoA, P_Element)
  
EndMacro

Macro SelectGLInfoExtensionElement(GLInfoA, Position)
  
  SelectElement(GetGLInfoExtension(GLInfoA), Position)
  
EndMacro

Macro PreviousGLInfoExtensionElement(GLInfoA)
  
  PreviousElement(GetGLInfoExtension(GLInfoA))
  
EndMacro

Macro NextGLInfoExtensionElement(GLInfoA)
  
  NextElement(GetGLInfoExtension(GLInfoA))
  
EndMacro

Macro FirstGLInfoExtensionElement(GLInfoA)
  
  FirstElement(GetGLInfoExtension(GLInfoA))
  
EndMacro

Macro LastGLInfoExtensionElement(GLInfoA)
  
  LastElement(GetGLInfoExtension(GLInfoA))
  
EndMacro

Macro PopListGLInfoExtensionPosition(GLInfoA)
  
  PopListPosition(GetGLInfoExtension(GLInfoA))
  
EndMacro

Macro PushListGLInfoExtensionPosition(GLInfoA)
  
  PushListPosition(GetGLInfoExtension(GLInfoA))
  
EndMacro

Macro DeleteGLInfoExtensionElement(GLInfoA, Flag = 0)
  
  DeleteElement(GetGLInfoExtension(GLInfoA), Flag)
  
EndMacro

Macro ListGLInfoExtensionSize(GLInfoA)
  
  ListSize(GetGLInfoExtension(GLInfoA))
  
EndMacro

Macro ResetGLInfoExtension(GLInfoA)
  
  ResetList(GetGLInfoExtension(GLInfoA))
  
EndMacro

Macro ListGLInfoExtensionIndex(GLInfoA)
  
  ListIndex(GetGLInfoExtension(GLInfoA))
  
EndMacro

Macro ClearGLInfoExtension(GLInfoA)
  
  ClearList(GetGLInfoExtension(GLInfoA))
  
EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur Reset <<<<<

Macro ResetGLInfo(GLInfoA)
  
  SetGLInfoVendor(GLInfoA, "")
  SetGLInfoVersion(GLInfoA, "")
  SetGLInfoRenderer(GLInfoA, "")
  
  ForEach GetGLInfoExtension(GLInfoA)
    SetGLInfoExtension(GLInfoA, "")
  Next
  
  ClearGLInfoExtension(GLInfoA)
  
  ClearStructure(GLInfoA, GLInfo)
  
EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Ouverture d'un fichier de Préférences <<<<<

Procedure OpenGLInfoPreferences(FileName.s, *GLInfoA.GLInfo)
  
  If OpenPreferences(FileName)
    
    SetGLInfoVendor(*GLInfoA, ReadPreferenceString("Vendor", GetGLInfoVendor(*GLInfoA)))
    SetGLInfoVersion(*GLInfoA, ReadPreferenceString("Version", GetGLInfoVersion(*GLInfoA)))
    SetGLInfoRenderer(*GLInfoA, ReadPreferenceString("Renderer", GetGLInfoRenderer(*GLInfoA)))
    
    Extension_Max = ReadPreferenceLong("Extension_Max", 0)
    
    For ExtensionID = 0 To Extension_Max - 1
      AddGLInfoExtensionElement(*GLInfoA)
      SetGLInfoExtension(*GLInfoA, ReadPreferenceString("Extension_" + Str(ExtensionID), GetGLInfoExtension(*GLInfoA)))
    Next
    
    ClosePreferences()
    
  EndIf
  
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Création d'un fichier de Préférences <<<<<

Procedure CreateGLInfoPreferences(Filename.s, *GLInfoA.GLInfo)
  
  If CreatePreferences(FileName)
    
    WritePreferenceString("Vendor", GetGLInfoVendor(*GLInfoA))
    WritePreferenceString("Version", GetGLInfoVersion(*GLInfoA))
    WritePreferenceString("Renderer", GetGLInfoRenderer(*GLInfoA))
    
    WritePreferenceLong("Extension_Max", ListGLInfoExtensionSize(*GLInfoA))
    
    ForEach GetGLInfoExtension(*GLInfoA)
      WritePreferenceString("Extension_" + Str(ExtensionID), GetGLInfoExtension(*GLInfoA))
      ExtensionID + 1
    Next
    
    ClosePreferences()
    
  EndIf
  
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Macro de déboguage <<<<<

Macro DebugGLInfo(GLInfoA)
  
  Debug "Vendor : " + GetGLInfoVendor(GLInfoA)
  Debug "Version : " + GetGLInfoVersion(GLInfoA)
  Debug "Renderer : " + GetGLInfoRenderer(GLInfoA)
  
  ForEach GetGLInfoExtension(GLInfoA)
    Debug "Extension : " + GetGLInfoExtension(GLInfoA)
  Next
  
EndMacro

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Code généré en : 00.009 secondes (29777.78 lignes/seconde) <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Procedure InitializeGLInfo(*GLInfoA.GLInfo)
  
  GL_VENDOR.i = glGetString(#GL_VENDOR)
  GL_VERSION.i = glGetString(#GL_VERSION)
  GL_RENDERER.i = glGetString(#GL_RENDERER)
  GL_EXTENSIONS.i = glGetString(#GL_EXTENSIONS)
  
  If GL_VENDOR <> #Null
    SetGLInfoVendor(*GLInfoA, PeekS(GL_VENDOR, -1, #PB_Ascii))
  EndIf 
  
  If GL_VERSION <> #Null
    SetGLInfoVersion(*GLInfoA, PeekS(GL_VERSION, -1, #PB_Ascii))
  EndIf 
  
  If GL_RENDERER <> #Null
    SetGLInfoRenderer(*GLInfoA, PeekS(GL_RENDERER, -1, #PB_Ascii))
  EndIf 
  
  If GL_EXTENSIONS <> #Null
    
    Extension.s = PeekS(GL_EXTENSIONS, -1, #PB_Ascii)
    Max = CountString(Extension, " ") - 1
    
    For ExtensionID = 0 To Max
      AddGLInfoExtensionElement(*GLInfoA)
      SetGLInfoExtension(*GLInfoA, StringField(Extension, ExtensionID + 1, " "))
    Next
    
  EndIf 
  
EndProcedure

; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<
Et tout de suite après la création d'au moins 1 GLAreaGadget() mettre les deux commandes suivantes :

Code : Tout sélectionner

InitializeGLInfo(GLInfo.GLInfo)
DebugGLInfo(GLInfo)
Dans mon cas ça donne :
Vendor : NVIDIA Corporation
Version : 3.3.0 NVIDIA 280.13
Renderer : GeForce GTX 295/PCI/SSE2
Extension : GL_ARB_blend_func_extended
Extension : GL_ARB_color_buffer_float
Extension : GL_ARB_compatibility
Extension : GL_ARB_copy_buffer
Extension : GL_ARB_depth_buffer_float
Extension : GL_ARB_depth_clamp
Extension : GL_ARB_depth_texture
Extension : GL_ARB_draw_buffers
Extension : GL_ARB_draw_elements_base_vertex
Extension : GL_ARB_draw_instanced
Extension : GL_ARB_ES2_compatibility
Extension : GL_ARB_explicit_attrib_location
Extension : GL_ARB_fragment_coord_conventions
Extension : GL_ARB_fragment_program
Extension : GL_ARB_fragment_program_shadow
Extension : GL_ARB_fragment_shader
Extension : GL_ARB_framebuffer_object
Extension : GL_ARB_framebuffer_sRGB
Extension : GL_ARB_geometry_shader4
Extension : GL_ARB_get_program_binary
Extension : GL_ARB_half_float_pixel
Extension : GL_ARB_half_float_vertex
Extension : GL_ARB_imaging
Extension : GL_ARB_instanced_arrays
Extension : GL_ARB_map_buffer_range
Extension : GL_ARB_multisample
Extension : GL_ARB_multitexture
Extension : GL_ARB_occlusion_query
Extension : GL_ARB_occlusion_query2
Extension : GL_ARB_pixel_buffer_object
Extension : GL_ARB_point_parameters
Extension : GL_ARB_point_sprite
Extension : GL_ARB_provoking_vertex
Extension : GL_ARB_robustness
Extension : GL_ARB_sampler_objects
Extension : GL_ARB_seamless_cube_map
Extension : GL_ARB_separate_shader_objects
Extension : GL_ARB_shader_bit_encoding
Extension : GL_ARB_shader_objects
Extension : GL_ARB_shading_language_100
Extension : GL_ARB_shading_language_include
Extension : GL_ARB_shadow
Extension : GL_ARB_sync
Extension : GL_ARB_texture_border_clamp
Extension : GL_ARB_texture_buffer_object
Extension : GL_ARB_texture_compression
Extension : GL_ARB_texture_compression_rgtc
Extension : GL_ARB_texture_cube_map
Extension : GL_ARB_texture_env_add
Extension : GL_ARB_texture_env_combine
Extension : GL_ARB_texture_env_crossbar
Extension : GL_ARB_texture_env_dot3
Extension : GL_ARB_texture_float
Extension : GL_ARB_texture_mirrored_repeat
Extension : GL_ARB_texture_multisample
Extension : GL_ARB_texture_non_power_of_two
Extension : GL_ARB_texture_rectangle
Extension : GL_ARB_texture_rg
Extension : GL_ARB_texture_rgb10_a2ui
Extension : GL_ARB_texture_swizzle
Extension : GL_ARB_timer_query
Extension : GL_ARB_transform_feedback2
Extension : GL_ARB_transpose_matrix
Extension : GL_ARB_uniform_buffer_object
Extension : GL_ARB_vertex_array_bgra
Extension : GL_ARB_vertex_array_object
Extension : GL_ARB_vertex_buffer_object
Extension : GL_ARB_vertex_program
Extension : GL_ARB_vertex_shader
Extension : GL_ARB_vertex_type_2_10_10_10_rev
Extension : GL_ARB_viewport_array
Extension : GL_ARB_window_pos
Extension : GL_ATI_draw_buffers
Extension : GL_ATI_texture_float
Extension : GL_ATI_texture_mirror_once
Extension : GL_S3_s3tc
Extension : GL_EXT_texture_env_add
Extension : GL_EXT_abgr
Extension : GL_EXT_bgra
Extension : GL_EXT_bindable_uniform
Extension : GL_EXT_blend_color
Extension : GL_EXT_blend_equation_separate
Extension : GL_EXT_blend_func_separate
Extension : GL_EXT_blend_minmax
Extension : GL_EXT_blend_subtract
Extension : GL_EXT_compiled_vertex_array
Extension : GL_EXT_Cg_shader
Extension : GL_EXT_depth_bounds_test
Extension : GL_EXT_direct_state_access
Extension : GL_EXT_draw_buffers2
Extension : GL_EXT_draw_instanced
Extension : GL_EXT_draw_range_elements
Extension : GL_EXT_fog_coord
Extension : GL_EXT_framebuffer_blit
Extension : GL_EXT_framebuffer_multisample
Extension : GL_EXTX_framebuffer_mixed_formats
Extension : GL_EXT_framebuffer_object
Extension : GL_EXT_framebuffer_sRGB
Extension : GL_EXT_geometry_shader4
Extension : GL_EXT_gpu_program_parameters
Extension : GL_EXT_gpu_shader4
Extension : GL_EXT_multi_draw_arrays
Extension : GL_EXT_packed_depth_stencil
Extension : GL_EXT_packed_float
Extension : GL_EXT_packed_pixels
Extension : GL_EXT_pixel_buffer_object
Extension : GL_EXT_point_parameters
Extension : GL_EXT_provoking_vertex
Extension : GL_EXT_rescale_normal
Extension : GL_EXT_secondary_color
Extension : GL_EXT_separate_shader_objects
Extension : GL_EXT_separate_specular_color
Extension : GL_EXT_shadow_funcs
Extension : GL_EXT_stencil_two_side
Extension : GL_EXT_stencil_wrap
Extension : GL_EXT_texture3D
Extension : GL_EXT_texture_array
Extension : GL_EXT_texture_buffer_object
Extension : GL_EXT_texture_compression_dxt1
Extension : GL_EXT_texture_compression_latc
Extension : GL_EXT_texture_compression_rgtc
Extension : GL_EXT_texture_compression_s3tc
Extension : GL_EXT_texture_cube_map
Extension : GL_EXT_texture_edge_clamp
Extension : GL_EXT_texture_env_combine
Extension : GL_EXT_texture_env_dot3
Extension : GL_EXT_texture_filter_anisotropic
Extension : GL_EXT_texture_format_BGRA8888
Extension : GL_EXT_texture_integer
Extension : GL_EXT_texture_lod
Extension : GL_EXT_texture_lod_bias
Extension : GL_EXT_texture_mirror_clamp
Extension : GL_EXT_texture_object
Extension : GL_EXT_texture_shared_exponent
Extension : GL_EXT_texture_sRGB
Extension : GL_EXT_texture_swizzle
Extension : GL_EXT_texture_type_2_10_10_10_REV
Extension : GL_EXT_timer_query
Extension : GL_EXT_transform_feedback2
Extension : GL_EXT_vertex_array
Extension : GL_EXT_vertex_array_bgra
Extension : GL_EXT_x11_sync_object
Extension : GL_EXT_import_sync_object
Extension : GL_IBM_rasterpos_clip
Extension : GL_IBM_texture_mirrored_repeat
Extension : GL_KTX_buffer_region
Extension : GL_NV_alpha_test
Extension : GL_NV_blend_minmax
Extension : GL_NV_blend_square
Extension : GL_NV_complex_primitives
Extension : GL_NV_conditional_render
Extension : GL_NV_copy_depth_to_color
Extension : GL_NV_copy_image
Extension : GL_NV_depth_buffer_float
Extension : GL_NV_depth_clamp
Extension : GL_NV_explicit_multisample
Extension : GL_NV_fbo_color_attachments
Extension : GL_NV_fence
Extension : GL_NV_float_buffer
Extension : GL_NV_fog_distance
Extension : GL_NV_fragdepth
Extension : GL_NV_fragment_program
Extension : GL_NV_fragment_program_option
Extension : GL_NV_fragment_program2
Extension : GL_NV_framebuffer_multisample_coverage
Extension : GL_NV_geometry_shader4
Extension : GL_NV_gpu_program4
Extension : GL_NV_half_float
Extension : GL_NV_light_max_exponent
Extension : GL_NV_multisample_coverage
Extension : GL_NV_multisample_filter_hint
Extension : GL_NV_occlusion_query
Extension : GL_NV_packed_depth_stencil
Extension : GL_NV_parameter_buffer_object
Extension : GL_NV_parameter_buffer_object2
Extension : GL_NV_path_rendering
Extension : GL_NV_pixel_data_range
Extension : GL_NV_point_sprite
Extension : GL_NV_primitive_restart
Extension : GL_NV_register_combiners
Extension : GL_NV_register_combiners2
Extension : GL_NV_shader_buffer_load
Extension : GL_NV_texgen_reflection
Extension : GL_NV_texture_barrier
Extension : GL_NV_texture_compression_vtc
Extension : GL_NV_texture_env_combine4
Extension : GL_NV_texture_expand_normal
Extension : GL_NV_texture_lod_clamp
Extension : GL_NV_texture_multisample
Extension : GL_NV_texture_rectangle
Extension : GL_NV_texture_shader
Extension : GL_NV_texture_shader2
Extension : GL_NV_texture_shader3
Extension : GL_NV_transform_feedback
Extension : GL_NV_transform_feedback2
Extension : GL_NV_vdpau_interop
Extension : GL_NV_vertex_array_range
Extension : GL_NV_vertex_array_range2
Extension : GL_NV_vertex_buffer_unified_memory
Extension : GL_NV_vertex_program
Extension : GL_NV_vertex_program1_1
Extension : GL_NV_vertex_program2
Extension : GL_NV_vertex_program2_option
Extension : GL_NV_vertex_program3
Extension : GL_NVX_conditional_render
Extension : GL_NVX_gpu_memory_info
Extension : GL_OES_depth24
Extension : GL_OES_depth32
Extension : GL_OES_depth_texture
Extension : GL_OES_element_index_uint
Extension : GL_OES_fbo_render_mipmap
Extension : GL_OES_get_program_binary
Extension : GL_OES_mapbuffer
Extension : GL_OES_packed_depth_stencil
Extension : GL_OES_rgb8_rgba8
Extension : GL_OES_standard_derivatives
Extension : GL_OES_texture_3D
Extension : GL_OES_texture_float
Extension : GL_OES_texture_float_linear
Extension : GL_OES_texture_half_float
Extension : GL_OES_texture_half_float_linear
Extension : GL_OES_texture_npot
Extension : GL_OES_vertex_array_object
Extension : GL_OES_vertex_half_float
Extension : GL_SGIS_generate_mipmap
Extension : GL_SGIS_texture_lod
Extension : GL_SGIX_depth_texture
Extension : GL_SGIX_shadow
Extension : GL_SUN_slice_accum
Ce qui veut dire que sur ma machine seul l'OpenGL 3.3 est supporté, donc les commandes d'OpenGL 4.0 ou plus ne vont pas fonctionner.

Mais pour répondre à ta question plus spécifiquement il y a GDKScreen que j'ai vu passer pendant mes recherches mais je n'ai pas eu le temps de creuser de ce coté. Faut dire qu'avec l'éditeur sur lequel je travaille en ce moment, plus la découverte de certains bogues bloquant dans PB, j'ai pas beaucoup de temps libre.

En passant, la version présenté ci-haut est un peu obsolète. Une version téléchargeable est disponible à l'adresse suivante : http://pages.videotron.com/gsaumure/GLAreaGadget.zip. Mais il est important de comprendre que ce Gadget est toujours en développement. Présentement sur la version avec laquelle je travaille, j'ai ajouté un système de Focus ainsi que qu'un système de contrôle de zoom en lien avec la mollette de souris. Mais je n'ai pas encore terminé l'intégration propre. Mais dès que ce sera fait, je le rendrai disponible pour tout le monde.

A+
Guimauve
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: Gtk GL Extension

Message par G-Rom »

Merci Guimauve , si je te parle du fullscreen , c'est que gtk en est capable , mais comment , avec une constante peut être lors de la création du contexte , je regarderais les sources de la libgtk pour avoir la réponse , merci encore , ca ouvre pas mal de perspectives.

@+
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Gtk GL Extension

Message par Guimauve »

Bonjour G-Rom,

Effectivement les perspectives sont infinies plus particulièrement lorsque l'on a sous la main les livres suivant :
  • OpenGL SuperBible: Comprehensive Tutorial and Reference
  • OpenGL Programming Guide: The Official Guide to Learning OpenGL, Versions 3.0 and 3.1
  • OpenGL Shading Language
Tout ce qui est possible de faire avec OpenGL peut être réalisé sans problème. Pour ce qui est du mode "Fullscreen" ça pourrait être bien, l'utilisation de la librairie SDL pourrait devenir obsolète. Une dépendance de moins c'est toujours bon à prendre !

Pour un exemple d'un mode "FullScreen" voir ici : http://www.dreamincode.net/code/snippet4016.htm

A+
Guimauve
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: Gtk GL Extension

Message par G-Rom »

OpenGL & SDL n'ont rien à voir ^^^

OpenGL est bas niveau , SDL ne l'est pas. OpenGL ne sais pas chargé une image , ni joué un son.
complètement différent ;)
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Gtk GL Extension

Message par Guimauve »

Suis-je censé rire ou euh ?

Le lien entre SDL et OpenGL est le suivant :

Code : Tout sélectionner

SDL_SetVideoMode(Width, Height, Depth, #SDL_FULLSCREEN|#SDL_OPENGL)
En résumé, on utilise SDL pour la gestion du "Screen" et on dessine avec "OpenGL". Donc s'il est possible de passer par GTK pour ouvrir un "Screen" alors adios SDL pour le faire et on gère les événements directement avec les commandes GTK pour savoir ce que fait le joueur dans le cas d'un jeu.

Maintenant voici pourquoi je cherche une alternative à OpenScreen(), voici ce que ca donne avec SDL :

Image

Et là, la même chose avec OpenScreen():

Image

En résumé, les modèles 3D sont dégénérés, les textures ne sont pas appliquées, les textes sont invisibles et le SkyCube est HS.

A+
Guimauve
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: Gtk GL Extension

Message par G-Rom »

A aucun moment tu n'a parler de la sdl dans ton projet, alors je ne comprennais pas pourquoi tu parlais d'elle soudainement...
C'est déjà plus clair.

Ton projet a l'air bien avancé, a quand une demo ?
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Gtk GL Extension

Message par Guimauve »

G-Rom a écrit :Ton projet a l'air bien avancé, a quand une demo ?
Une démo ??? Je suis désolé, j'ai pas encore de date à donner à ce sujet. En fait, je fais tout le développement sous Linux et pour le moment je travaille au développement d'un logiciel de UVMapping. Ce logiciel avance bien malgré le fait que j'avance en mode expérimental puisque je n'ai plus accès à des ouvrages de référence pour programmer avec OpenGL depuis la fin des études universitaires. Bien sûr il y a des exemples disponible un peu partout sur le WEB à ce sujet mais parfois les exemples donnés ne sont pas très explicite et dans certain cas le code montré ne fonctionne tout simplement pas.

Hier soir, j'ai passé environ 3 heures déboguer une fonction de MeshSmoothing en me basant sur la méthode de Laplace. J'ai du faire plusieurs recherches et lire plusieurs documents avant de finalement arriver à quelque chose d'utilisable. (Je crois que je ne t'apprend rien ici) Aujourd'hui c'est une fonction de type ShapeJitter qui est au menu.

L'objectif est la programmation d'un générateur d’astéroïdes dans le même style que l'on peut voir ici : Procedural Asteroid

A+
Guimauve
Répondre