É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.
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 <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<