Changeset 44326 in vbox for trunk/src/VBox/GuestHost/OpenGL
- Timestamp:
- Jan 22, 2013 8:18:51 AM (12 years ago)
- Location:
- trunk/src/VBox/GuestHost/OpenGL
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/GuestHost/OpenGL/Makefile.kmk
r43888 r44326 448 448 $(VBOX_PATH_CROGL_GENFILES)/state_polygon_gen.c \ 449 449 $(VBOX_PATH_CROGL_GENFILES)/state_regcombiner_gen.c \ 450 $(VBOX_PATH_CROGL_GENFILES)/state_stencil_gen.c \451 450 $(VBOX_PATH_CROGL_GENFILES)/state_viewport_gen.c \ 452 451 $(VBOX_PATH_CROGL_GENFILES)/state_get.c \ … … 463 462 $(VBOX_PATH_CROGL_GENFILES)/state_polygon_gen.c \ 464 463 $(VBOX_PATH_CROGL_GENFILES)/state_regcombiner_gen.c \ 465 $(VBOX_PATH_CROGL_GENFILES)/state_stencil_gen.c \466 464 $(VBOX_PATH_CROGL_GENFILES)/state_viewport_gen.c \ 467 465 $(VBOX_PATH_CROGL_GENFILES)/state_get.c \ … … 548 546 $(call MSG_GENERATE,python,$@,$<) 549 547 $(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $(<D)/gendiffcode.py regcombiner RegCombiner $(<D) 550 551 $(VBOX_PATH_CROGL_GENFILES)/state_stencil_gen.c: $(addprefix $(PATH_SUB_CURRENT)/state_tracker/, state_stencil.txt gendiffcode.py) | $$(dir $$@)552 $(call MSG_GENERATE,python,$@,$<)553 $(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $(<D)/gendiffcode.py stencil Stencil $(<D)554 548 555 549 $(VBOX_PATH_CROGL_GENFILES)/state_viewport_gen.c: $(addprefix $(PATH_SUB_CURRENT)/state_tracker/, state_viewport.txt gendiffcode.py) | $$(dir $$@) -
trunk/src/VBox/GuestHost/OpenGL/glapi_parser/APIspec.txt
r43888 r44326 2580 2580 return void 2581 2581 param pname GLenum 2582 paramprop pname GL_ACCUM_ALPHA_BITS GL_ACCUM_BLUE_BITS GL_ACCUM_CLEAR_VALUE GL_ACCUM_GREEN_BITS GL_ACCUM_RED_BITS GL_ACTIVE_TEXTURE_ARB GL_ALIASED_LINE_WIDTH_RANGE GL_ALIASED_POINT_SIZE_RANGE GL_ALPHA_BIAS GL_ALPHA_BITS GL_ALPHA_SCALE GL_ALPHA_TEST GL_ALPHA_TEST_FUNC GL_ALPHA_TEST_REF GL_ATTRIB_STACK_DEPTH GL_AUTO_NORMAL GL_AUX_BUFFERS GL_BLEND GL_BLEND_COLOR GL_BLEND_DST GL_BLEND_EQUATION GL_BLEND_SRC GL_BLUE_BIAS GL_BLUE_BITS GL_BLUE_SCALE GL_CLIENT_ACTIVE_TEXTURE_ARB GL_CLIENT_ATTRIB_STACK_DEPTH GL_COLOR_ARRAY GL_COLOR_ARRAY_SIZE GL_COLOR_ARRAY_STRIDE GL_COLOR_ARRAY_TYPE GL_COLOR_CLEAR_VALUE GL_COLOR_LOGIC_OP GL_COLOR_MATERIAL GL_COLOR_MATERIAL_FACE GL_COLOR_MATERIAL_PARAMETER GL_COLOR_MATRIX_STACK_DEPTH GL_COLOR_WRITEMASK GL_CULL_FACE GL_CULL_FACE_MODE GL_CURRENT_COLOR GL_CURRENT_INDEX GL_CURRENT_NORMAL GL_CURRENT_RASTER_COLOR GL_CURRENT_RASTER_DISTANCE GL_CURRENT_RASTER_INDEX GL_CURRENT_RASTER_POSITION GL_CURRENT_RASTER_POSITION_VALID GL_CURRENT_RASTER_TEXTURE_COORDS GL_CURRENT_TEXTURE_COORDS GL_DEPTH_BIAS GL_DEPTH_BITS GL_DEPTH_CLEAR_VALUE GL_DEPTH_FUNC GL_DEPTH_RANGE GL_DEPTH_SCALE GL_DEPTH_TEST GL_DEPTH_WRITEMASK GL_DITHER GL_DOUBLEBUFFER GL_DRAW_BUFFER GL_EDGE_FLAG GL_EDGE_FLAG_ARRAY GL_EDGE_FLAG_ARRAY_STRIDE GL_FEEDBACK_BUFFER_SIZE GL_FEEDBACK_BUFFER_TYPE GL_FOG GL_FOG_COLOR GL_FOG_DENSITY GL_FOG_END GL_FOG_HINT GL_FOG_INDEX GL_FOG_MODE GL_FOG_START GL_FRONT_FACE GL_GREEN_BIAS GL_GREEN_BITS GL_GREEN_SCALE GL_INDEX_ARRAY GL_INDEX_ARRAY_STRIDE GL_INDEX_ARRAY_TYPE GL_INDEX_BITS GL_INDEX_CLEAR_VALUE GL_INDEX_LOGIC_OP GL_INDEX_MODE GL_INDEX_OFFSET GL_INDEX_SHIFT GL_INDEX_WRITEMASK GL_LIGHTING GL_LIGHT_MODEL_AMBIENT GL_LIGHT_MODEL_COLOR_CONTROL GL_LIGHT_MODEL_LOCAL_VIEWER GL_LIGHT_MODEL_TWO_SIDE GL_LINE_SMOOTH GL_LINE_SMOOTH_HINT GL_LINE_STIPPLE GL_LINE_STIPPLE_PATTERN GL_LINE_STIPPLE_REPEAT GL_LINE_WIDTH GL_LINE_WIDTH_GRANULARITY GL_LINE_WIDTH_RANGE GL_LIST_BASE GL_LIST_INDEX GL_LIST_MODE GL_LOGIC_OP_MODE GL_MAP1_COLOR_4 GL_MAP1_GRID_DOMAIN GL_MAP1_GRID_SEGMENTS GL_MAP1_INDEX GL_MAP1_NORMAL GL_MAP1_TEXTURE_COORD_1 GL_MAP1_TEXTURE_COORD_2 GL_MAP1_TEXTURE_COORD_3 GL_MAP1_TEXTURE_COORD_4 GL_MAP1_VERTEX_3 GL_MAP1_VERTEX_4 GL_MAP2_COLOR_4 GL_MAP2_GRID_DOMAIN GL_MAP2_GRID_SEGMENTS GL_MAP2_INDEX GL_MAP2_NORMAL GL_MAP2_TEXTURE_COORD_1 GL_MAP2_TEXTURE_COORD_2 GL_MAP2_TEXTURE_COORD_3 GL_MAP2_TEXTURE_COORD_4 GL_MAP2_VERTEX_3 GL_MAP2_VERTEX_4 GL_MAP_COLOR GL_MAP_STENCIL GL_MATRIX_MODE GL_MAX_3D_TEXTURE_SIZE GL_MAX_ATTRIB_STACK_DEPTH GL_MAX_CLIENT_ATTRIB_STACK_DEPTH GL_MAX_CLIP_PLANES GL_MAX_COLOR_MATRIX_STACK_DEPTH GL_MAX_ELEMENTS_INDICES GL_MAX_ELEMENTS_VERTICES GL_MAX_EVAL_ORDER GL_MAX_LIGHTS GL_MAX_LIST_NESTING GL_MAX_MODELVIEW_STACK_DEPTH GL_MAX_NAME_STACK_DEPTH GL_MAX_PIXEL_MAP_TABLE GL_MAX_PROJECTION_STACK_DEPTH GL_MAX_TEXTURE_SIZE GL_MAX_TEXTURE_STACK_DEPTH GL_MAX_TEXTURE_UNITS_ARB GL_MAX_VIEWPORT_DIMS GL_MODELVIEW_MATRIX GL_MODELVIEW_STACK_DEPTH GL_NAME_STACK_DEPTH GL_NORMAL_ARRAY GL_NORMAL_ARRAY_STRIDE GL_NORMAL_ARRAY_TYPE GL_NORMALIZE GL_PACK_ALIGNMENT GL_PACK_IMAGE_HEIGHT GL_PACK_LSB_FIRST GL_PACK_ROW_LENGTH GL_PACK_SKIP_IMAGES GL_PACK_SKIP_PIXELS GL_PACK_SKIP_ROWS GL_PACK_SWAP_BYTES GL_PERSPECTIVE_CORRECTION_HINT GL_PIXEL_MAP_A_TO_A_SIZE GL_PIXEL_MAP_B_TO_B_SIZE GL_PIXEL_MAP_G_TO_G_SIZE GL_PIXEL_MAP_I_TO_A_SIZE GL_PIXEL_MAP_I_TO_B_SIZE GL_PIXEL_MAP_I_TO_G_SIZE GL_PIXEL_MAP_I_TO_I_SIZE GL_PIXEL_MAP_I_TO_R_SIZE GL_PIXEL_MAP_R_TO_R_SIZE GL_PIXEL_MAP_S_TO_S_SIZE GL_POINT_SIZE GL_POINT_SIZE_GRANULARITY GL_POINT_SIZE_RANGE GL_POINT_SMOOTH GL_POINT_SMOOTH_HINT GL_POLYGON_MODE GL_POLYGON_OFFSET_FACTOR GL_POLYGON_OFFSET_FILL GL_POLYGON_OFFSET_LINE GL_POLYGON_OFFSET_POINT GL_POLYGON_OFFSET_UNITS GL_POLYGON_SMOOTH GL_POLYGON_SMOOTH_HINT GL_POLYGON_STIPPLE GL_PROJECTION_MATRIX GL_PROJECTION_STACK_DEPTH GL_READ_BUFFER GL_RED_BIAS GL_RED_BITS GL_RED_SCALE GL_RENDER_MODE GL_RESCALE_NORMAL GL_RGBA_MODE GL_SCISSOR_BOX GL_SCISSOR_TEST GL_SELECTION_BUFFER_SIZE GL_SHADE_MODEL GL_SMOOTH_LINE_WIDTH_GRANULARITY GL_SMOOTH_LINE_WIDTH_RANGE GL_SMOOTH_POINT_SIZE_GRANULARITY GL_SMOOTH_POINT_SIZE_RANGE GL_STENCIL_BITS GL_STENCIL_CLEAR_VALUE GL_STENCIL_FAIL GL_STENCIL_FUNC GL_STENCIL_PASS_DEPTH_FAIL GL_STENCIL_PASS_DEPTH_PASS GL_STENCIL_REF GL_STENCIL_TEST GL_STENCIL_VALUE_MASK GL_STENCIL_WRITEMASK GL_STEREO GL_SUBPIXEL_BITS GL_TEXTURE_1D GL_TEXTURE_2D GL_TEXTURE_3D GL_TEXTURE_BINDING_1D GL_TEXTURE_BINDING_2D GL_TEXTURE_BINDING_3D GL_TEXTURE_COORD_ARRAY GL_TEXTURE_COORD_ARRAY_SIZE GL_TEXTURE_COORD_ARRAY_STRIDE GL_TEXTURE_COORD_ARRAY_TYPE GL_TEXTURE_GEN_Q GL_TEXTURE_GEN_R GL_TEXTURE_GEN_S GL_TEXTURE_GEN_T GL_TEXTURE_MATRIX GL_TEXTURE_STACK_DEPTH GL_UNPACK_ALIGNMENT GL_UNPACK_IMAGE_HEIGHT GL_UNPACK_LSB_FIRST GL_UNPACK_ROW_LENGTH GL_UNPACK_SKIP_IMAGES GL_UNPACK_SKIP_PIXELS GL_UNPACK_SKIP_ROWS GL_UNPACK_SWAP_BYTES GL_VERTEX_ARRAY GL_VERTEX_ARRAY_SIZE GL_VERTEX_ARRAY_STRIDE GL_VERTEX_ARRAY_TYPE GL_VIEWPORT GL_ZOOM_X GL_ZOOM_Y GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 GL_MULTISAMPLE_ARB GL_SAMPLE_ALPHA_TO_COVERAGE_ARB GL_SAMPLE_ALPHA_TO_ONE_ARB GL_SAMPLE_COVERAGE_ARB GL_SAMPLE_BUFFERS_ARB GL_SAMPLES_ARB GL_SAMPLE_COVERAGE_VALUE_ARB GL_SAMPLE_COVERAGE_INVERT_ARB GL_POINT_SPRITE_ARB GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB GL_CLIP_VOLUME_CLIPPING_HINT_EXT GL_RASTER_POSITION_UNCLIPPED_IBM GL_GENERATE_MIPMAP_HINT_SGIS GL_FOG_DISTANCE_MODE_NV GL_TRANSPOSE_MODELVIEW_MATRIX_ARB GL_TRANSPOSE_PROJECTION_MATRIX_ARB GL_TRANSPOSE_TEXTURE_MATRIX_ARB GL_TRANSPOSE_COLOR_MATRIX_ARB GL_MAX_TEXTURE_LOD_BIAS_EXT GL_PER_STAGE_CONSTANTS_NV GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT GL_CURRENT_FOG_COORDINATE_EXT GL_FOG_COORDINATE_ARRAY_TYPE_EXT GL_FOG_COORDINATE_ARRAY_STRIDE_EXT GL_COLOR_SUM_EXT GL_CURRENT_SECONDARY_COLOR_EXT GL_SECONDARY_COLOR_ARRAY_SIZE_EXT GL_SECONDARY_COLOR_ARRAY_TYPE_EXT GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT GL_ARRAY_BUFFER_BINDING_ARB GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB GL_VERTEX_ARRAY_BUFFER_BINDING_ARB GL_NORMAL_ARRAY_BUFFER_BINDING_ARB GL_COLOR_ARRAY_BUFFER_BINDING_ARB GL_INDEX_ARRAY_BUFFER_BINDING_ARB GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB GL_TEXTURE_RECTANGLE_NV GL_TEXTURE_BINDING_RECTANGLE_NV GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 2582 paramprop pname GL_ACCUM_ALPHA_BITS GL_ACCUM_BLUE_BITS GL_ACCUM_CLEAR_VALUE GL_ACCUM_GREEN_BITS GL_ACCUM_RED_BITS GL_ACTIVE_TEXTURE_ARB GL_ALIASED_LINE_WIDTH_RANGE GL_ALIASED_POINT_SIZE_RANGE GL_ALPHA_BIAS GL_ALPHA_BITS GL_ALPHA_SCALE GL_ALPHA_TEST GL_ALPHA_TEST_FUNC GL_ALPHA_TEST_REF GL_ATTRIB_STACK_DEPTH GL_AUTO_NORMAL GL_AUX_BUFFERS GL_BLEND GL_BLEND_COLOR GL_BLEND_DST GL_BLEND_EQUATION GL_BLEND_SRC GL_BLUE_BIAS GL_BLUE_BITS GL_BLUE_SCALE GL_CLIENT_ACTIVE_TEXTURE_ARB GL_CLIENT_ATTRIB_STACK_DEPTH GL_COLOR_ARRAY GL_COLOR_ARRAY_SIZE GL_COLOR_ARRAY_STRIDE GL_COLOR_ARRAY_TYPE GL_COLOR_CLEAR_VALUE GL_COLOR_LOGIC_OP GL_COLOR_MATERIAL GL_COLOR_MATERIAL_FACE GL_COLOR_MATERIAL_PARAMETER GL_COLOR_MATRIX_STACK_DEPTH GL_COLOR_WRITEMASK GL_CULL_FACE GL_CULL_FACE_MODE GL_CURRENT_COLOR GL_CURRENT_INDEX GL_CURRENT_NORMAL GL_CURRENT_RASTER_COLOR GL_CURRENT_RASTER_DISTANCE GL_CURRENT_RASTER_INDEX GL_CURRENT_RASTER_POSITION GL_CURRENT_RASTER_POSITION_VALID GL_CURRENT_RASTER_TEXTURE_COORDS GL_CURRENT_TEXTURE_COORDS GL_DEPTH_BIAS GL_DEPTH_BITS GL_DEPTH_CLEAR_VALUE GL_DEPTH_FUNC GL_DEPTH_RANGE GL_DEPTH_SCALE GL_DEPTH_TEST GL_DEPTH_WRITEMASK GL_DITHER GL_DOUBLEBUFFER GL_DRAW_BUFFER GL_EDGE_FLAG GL_EDGE_FLAG_ARRAY GL_EDGE_FLAG_ARRAY_STRIDE GL_FEEDBACK_BUFFER_SIZE GL_FEEDBACK_BUFFER_TYPE GL_FOG GL_FOG_COLOR GL_FOG_DENSITY GL_FOG_END GL_FOG_HINT GL_FOG_INDEX GL_FOG_MODE GL_FOG_START GL_FRONT_FACE GL_GREEN_BIAS GL_GREEN_BITS GL_GREEN_SCALE GL_INDEX_ARRAY GL_INDEX_ARRAY_STRIDE GL_INDEX_ARRAY_TYPE GL_INDEX_BITS GL_INDEX_CLEAR_VALUE GL_INDEX_LOGIC_OP GL_INDEX_MODE GL_INDEX_OFFSET GL_INDEX_SHIFT GL_INDEX_WRITEMASK GL_LIGHTING GL_LIGHT_MODEL_AMBIENT GL_LIGHT_MODEL_COLOR_CONTROL GL_LIGHT_MODEL_LOCAL_VIEWER GL_LIGHT_MODEL_TWO_SIDE GL_LINE_SMOOTH GL_LINE_SMOOTH_HINT GL_LINE_STIPPLE GL_LINE_STIPPLE_PATTERN GL_LINE_STIPPLE_REPEAT GL_LINE_WIDTH GL_LINE_WIDTH_GRANULARITY GL_LINE_WIDTH_RANGE GL_LIST_BASE GL_LIST_INDEX GL_LIST_MODE GL_LOGIC_OP_MODE GL_MAP1_COLOR_4 GL_MAP1_GRID_DOMAIN GL_MAP1_GRID_SEGMENTS GL_MAP1_INDEX GL_MAP1_NORMAL GL_MAP1_TEXTURE_COORD_1 GL_MAP1_TEXTURE_COORD_2 GL_MAP1_TEXTURE_COORD_3 GL_MAP1_TEXTURE_COORD_4 GL_MAP1_VERTEX_3 GL_MAP1_VERTEX_4 GL_MAP2_COLOR_4 GL_MAP2_GRID_DOMAIN GL_MAP2_GRID_SEGMENTS GL_MAP2_INDEX GL_MAP2_NORMAL GL_MAP2_TEXTURE_COORD_1 GL_MAP2_TEXTURE_COORD_2 GL_MAP2_TEXTURE_COORD_3 GL_MAP2_TEXTURE_COORD_4 GL_MAP2_VERTEX_3 GL_MAP2_VERTEX_4 GL_MAP_COLOR GL_MAP_STENCIL GL_MATRIX_MODE GL_MAX_3D_TEXTURE_SIZE GL_MAX_ATTRIB_STACK_DEPTH GL_MAX_CLIENT_ATTRIB_STACK_DEPTH GL_MAX_CLIP_PLANES GL_MAX_COLOR_MATRIX_STACK_DEPTH GL_MAX_ELEMENTS_INDICES GL_MAX_ELEMENTS_VERTICES GL_MAX_EVAL_ORDER GL_MAX_LIGHTS GL_MAX_LIST_NESTING GL_MAX_MODELVIEW_STACK_DEPTH GL_MAX_NAME_STACK_DEPTH GL_MAX_PIXEL_MAP_TABLE GL_MAX_PROJECTION_STACK_DEPTH GL_MAX_TEXTURE_SIZE GL_MAX_TEXTURE_STACK_DEPTH GL_MAX_TEXTURE_UNITS_ARB GL_MAX_VIEWPORT_DIMS GL_MODELVIEW_MATRIX GL_MODELVIEW_STACK_DEPTH GL_NAME_STACK_DEPTH GL_NORMAL_ARRAY GL_NORMAL_ARRAY_STRIDE GL_NORMAL_ARRAY_TYPE GL_NORMALIZE GL_PACK_ALIGNMENT GL_PACK_IMAGE_HEIGHT GL_PACK_LSB_FIRST GL_PACK_ROW_LENGTH GL_PACK_SKIP_IMAGES GL_PACK_SKIP_PIXELS GL_PACK_SKIP_ROWS GL_PACK_SWAP_BYTES GL_PERSPECTIVE_CORRECTION_HINT GL_PIXEL_MAP_A_TO_A_SIZE GL_PIXEL_MAP_B_TO_B_SIZE GL_PIXEL_MAP_G_TO_G_SIZE GL_PIXEL_MAP_I_TO_A_SIZE GL_PIXEL_MAP_I_TO_B_SIZE GL_PIXEL_MAP_I_TO_G_SIZE GL_PIXEL_MAP_I_TO_I_SIZE GL_PIXEL_MAP_I_TO_R_SIZE GL_PIXEL_MAP_R_TO_R_SIZE GL_PIXEL_MAP_S_TO_S_SIZE GL_POINT_SIZE GL_POINT_SIZE_GRANULARITY GL_POINT_SIZE_RANGE GL_POINT_SMOOTH GL_POINT_SMOOTH_HINT GL_POLYGON_MODE GL_POLYGON_OFFSET_FACTOR GL_POLYGON_OFFSET_FILL GL_POLYGON_OFFSET_LINE GL_POLYGON_OFFSET_POINT GL_POLYGON_OFFSET_UNITS GL_POLYGON_SMOOTH GL_POLYGON_SMOOTH_HINT GL_POLYGON_STIPPLE GL_PROJECTION_MATRIX GL_PROJECTION_STACK_DEPTH GL_READ_BUFFER GL_RED_BIAS GL_RED_BITS GL_RED_SCALE GL_RENDER_MODE GL_RESCALE_NORMAL GL_RGBA_MODE GL_SCISSOR_BOX GL_SCISSOR_TEST GL_SELECTION_BUFFER_SIZE GL_SHADE_MODEL GL_SMOOTH_LINE_WIDTH_GRANULARITY GL_SMOOTH_LINE_WIDTH_RANGE GL_SMOOTH_POINT_SIZE_GRANULARITY GL_SMOOTH_POINT_SIZE_RANGE GL_STENCIL_BITS GL_STENCIL_CLEAR_VALUE GL_STENCIL_FAIL GL_STENCIL_FUNC GL_STENCIL_PASS_DEPTH_FAIL GL_STENCIL_PASS_DEPTH_PASS GL_STENCIL_REF GL_STENCIL_TEST GL_STENCIL_VALUE_MASK GL_STENCIL_WRITEMASK GL_STEREO GL_SUBPIXEL_BITS GL_TEXTURE_1D GL_TEXTURE_2D GL_TEXTURE_3D GL_TEXTURE_BINDING_1D GL_TEXTURE_BINDING_2D GL_TEXTURE_BINDING_3D GL_TEXTURE_COORD_ARRAY GL_TEXTURE_COORD_ARRAY_SIZE GL_TEXTURE_COORD_ARRAY_STRIDE GL_TEXTURE_COORD_ARRAY_TYPE GL_TEXTURE_GEN_Q GL_TEXTURE_GEN_R GL_TEXTURE_GEN_S GL_TEXTURE_GEN_T GL_TEXTURE_MATRIX GL_TEXTURE_STACK_DEPTH GL_UNPACK_ALIGNMENT GL_UNPACK_IMAGE_HEIGHT GL_UNPACK_LSB_FIRST GL_UNPACK_ROW_LENGTH GL_UNPACK_SKIP_IMAGES GL_UNPACK_SKIP_PIXELS GL_UNPACK_SKIP_ROWS GL_UNPACK_SWAP_BYTES GL_VERTEX_ARRAY GL_VERTEX_ARRAY_SIZE GL_VERTEX_ARRAY_STRIDE GL_VERTEX_ARRAY_TYPE GL_VIEWPORT GL_ZOOM_X GL_ZOOM_Y GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 GL_MULTISAMPLE_ARB GL_SAMPLE_ALPHA_TO_COVERAGE_ARB GL_SAMPLE_ALPHA_TO_ONE_ARB GL_SAMPLE_COVERAGE_ARB GL_SAMPLE_BUFFERS_ARB GL_SAMPLES_ARB GL_SAMPLE_COVERAGE_VALUE_ARB GL_SAMPLE_COVERAGE_INVERT_ARB GL_POINT_SPRITE_ARB GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB GL_CLIP_VOLUME_CLIPPING_HINT_EXT GL_RASTER_POSITION_UNCLIPPED_IBM GL_GENERATE_MIPMAP_HINT_SGIS GL_FOG_DISTANCE_MODE_NV GL_TRANSPOSE_MODELVIEW_MATRIX_ARB GL_TRANSPOSE_PROJECTION_MATRIX_ARB GL_TRANSPOSE_TEXTURE_MATRIX_ARB GL_TRANSPOSE_COLOR_MATRIX_ARB GL_MAX_TEXTURE_LOD_BIAS_EXT GL_PER_STAGE_CONSTANTS_NV GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT GL_CURRENT_FOG_COORDINATE_EXT GL_FOG_COORDINATE_ARRAY_TYPE_EXT GL_FOG_COORDINATE_ARRAY_STRIDE_EXT GL_COLOR_SUM_EXT GL_CURRENT_SECONDARY_COLOR_EXT GL_SECONDARY_COLOR_ARRAY_SIZE_EXT GL_SECONDARY_COLOR_ARRAY_TYPE_EXT GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT GL_ARRAY_BUFFER_BINDING_ARB GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB GL_VERTEX_ARRAY_BUFFER_BINDING_ARB GL_NORMAL_ARRAY_BUFFER_BINDING_ARB GL_COLOR_ARRAY_BUFFER_BINDING_ARB GL_INDEX_ARRAY_BUFFER_BINDING_ARB GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB GL_TEXTURE_RECTANGLE_NV GL_TEXTURE_BINDING_RECTANGLE_NV GL_MAX_RECTANGLE_TEXTURE_SIZE_NV GL_READ_FRAMEBUFFER_BINDING_EXT GL_DRAW_FRAMEBUFFER_BINDING_EXT GL_ACTIVE_STENCIL_FACE_EXT 2583 2583 param params GLboolean * 2584 2584 category 1.0 … … 2600 2600 return void 2601 2601 param pname GLenum 2602 paramprop pname GL_ACCUM_ALPHA_BITS GL_ACCUM_BLUE_BITS GL_ACCUM_CLEAR_VALUE GL_ACCUM_GREEN_BITS GL_ACCUM_RED_BITS GL_ACTIVE_TEXTURE_ARB GL_ALIASED_LINE_WIDTH_RANGE GL_ALIASED_POINT_SIZE_RANGE GL_ALPHA_BIAS GL_ALPHA_BITS GL_ALPHA_SCALE GL_ALPHA_TEST GL_ALPHA_TEST_FUNC GL_ALPHA_TEST_REF GL_ATTRIB_STACK_DEPTH GL_AUTO_NORMAL GL_AUX_BUFFERS GL_BLEND GL_BLEND_COLOR GL_BLEND_DST GL_BLEND_EQUATION GL_BLEND_SRC GL_BLUE_BIAS GL_BLUE_BITS GL_BLUE_SCALE GL_CLIENT_ACTIVE_TEXTURE_ARB GL_CLIENT_ATTRIB_STACK_DEPTH GL_COLOR_ARRAY GL_COLOR_ARRAY_SIZE GL_COLOR_ARRAY_STRIDE GL_COLOR_ARRAY_TYPE GL_COLOR_CLEAR_VALUE GL_COLOR_LOGIC_OP GL_COLOR_MATERIAL GL_COLOR_MATERIAL_FACE GL_COLOR_MATERIAL_PARAMETER GL_COLOR_MATRIX_STACK_DEPTH GL_COLOR_WRITEMASK GL_CULL_FACE GL_CULL_FACE_MODE GL_CURRENT_COLOR GL_CURRENT_INDEX GL_CURRENT_NORMAL GL_CURRENT_RASTER_COLOR GL_CURRENT_RASTER_DISTANCE GL_CURRENT_RASTER_INDEX GL_CURRENT_RASTER_POSITION GL_CURRENT_RASTER_POSITION_VALID GL_CURRENT_RASTER_TEXTURE_COORDS GL_CURRENT_TEXTURE_COORDS GL_DEPTH_BIAS GL_DEPTH_BITS GL_DEPTH_CLEAR_VALUE GL_DEPTH_FUNC GL_DEPTH_RANGE GL_DEPTH_SCALE GL_DEPTH_TEST GL_DEPTH_WRITEMASK GL_DITHER GL_DOUBLEBUFFER GL_DRAW_BUFFER GL_EDGE_FLAG GL_EDGE_FLAG_ARRAY GL_EDGE_FLAG_ARRAY_STRIDE GL_FEEDBACK_BUFFER_SIZE GL_FEEDBACK_BUFFER_TYPE GL_FOG GL_FOG_COLOR GL_FOG_DENSITY GL_FOG_END GL_FOG_HINT GL_FOG_INDEX GL_FOG_MODE GL_FOG_START GL_FRONT_FACE GL_GREEN_BIAS GL_GREEN_BITS GL_GREEN_SCALE GL_INDEX_ARRAY GL_INDEX_ARRAY_STRIDE GL_INDEX_ARRAY_TYPE GL_INDEX_BITS GL_INDEX_CLEAR_VALUE GL_INDEX_LOGIC_OP GL_INDEX_MODE GL_INDEX_OFFSET GL_INDEX_SHIFT GL_INDEX_WRITEMASK GL_LIGHTING GL_LIGHT_MODEL_AMBIENT GL_LIGHT_MODEL_COLOR_CONTROL GL_LIGHT_MODEL_LOCAL_VIEWER GL_LIGHT_MODEL_TWO_SIDE GL_LINE_SMOOTH GL_LINE_SMOOTH_HINT GL_LINE_STIPPLE GL_LINE_STIPPLE_PATTERN GL_LINE_STIPPLE_REPEAT GL_LINE_WIDTH GL_LINE_WIDTH_GRANULARITY GL_LINE_WIDTH_RANGE GL_LIST_BASE GL_LIST_INDEX GL_LIST_MODE GL_LOGIC_OP_MODE GL_MAP1_COLOR_4 GL_MAP1_GRID_DOMAIN GL_MAP1_GRID_SEGMENTS GL_MAP1_INDEX GL_MAP1_NORMAL GL_MAP1_TEXTURE_COORD_1 GL_MAP1_TEXTURE_COORD_2 GL_MAP1_TEXTURE_COORD_3 GL_MAP1_TEXTURE_COORD_4 GL_MAP1_VERTEX_3 GL_MAP1_VERTEX_4 GL_MAP2_COLOR_4 GL_MAP2_GRID_DOMAIN GL_MAP2_GRID_SEGMENTS GL_MAP2_INDEX GL_MAP2_NORMAL GL_MAP2_TEXTURE_COORD_1 GL_MAP2_TEXTURE_COORD_2 GL_MAP2_TEXTURE_COORD_3 GL_MAP2_TEXTURE_COORD_4 GL_MAP2_VERTEX_3 GL_MAP2_VERTEX_4 GL_MAP_COLOR GL_MAP_STENCIL GL_MATRIX_MODE GL_MAX_3D_TEXTURE_SIZE GL_MAX_ATTRIB_STACK_DEPTH GL_MAX_CLIENT_ATTRIB_STACK_DEPTH GL_MAX_CLIP_PLANES GL_MAX_COLOR_MATRIX_STACK_DEPTH GL_MAX_ELEMENTS_INDICES GL_MAX_ELEMENTS_VERTICES GL_MAX_EVAL_ORDER GL_MAX_LIGHTS GL_MAX_LIST_NESTING GL_MAX_MODELVIEW_STACK_DEPTH GL_MAX_NAME_STACK_DEPTH GL_MAX_PIXEL_MAP_TABLE GL_MAX_PROJECTION_STACK_DEPTH GL_MAX_TEXTURE_SIZE GL_MAX_TEXTURE_STACK_DEPTH GL_MAX_TEXTURE_UNITS_ARB GL_MAX_VIEWPORT_DIMS GL_MODELVIEW_MATRIX GL_MODELVIEW_STACK_DEPTH GL_NAME_STACK_DEPTH GL_NORMAL_ARRAY GL_NORMAL_ARRAY_STRIDE GL_NORMAL_ARRAY_TYPE GL_NORMALIZE GL_PACK_ALIGNMENT GL_PACK_IMAGE_HEIGHT GL_PACK_LSB_FIRST GL_PACK_ROW_LENGTH GL_PACK_SKIP_IMAGES GL_PACK_SKIP_PIXELS GL_PACK_SKIP_ROWS GL_PACK_SWAP_BYTES GL_PERSPECTIVE_CORRECTION_HINT GL_PIXEL_MAP_A_TO_A_SIZE GL_PIXEL_MAP_B_TO_B_SIZE GL_PIXEL_MAP_G_TO_G_SIZE GL_PIXEL_MAP_I_TO_A_SIZE GL_PIXEL_MAP_I_TO_B_SIZE GL_PIXEL_MAP_I_TO_G_SIZE GL_PIXEL_MAP_I_TO_I_SIZE GL_PIXEL_MAP_I_TO_R_SIZE GL_PIXEL_MAP_R_TO_R_SIZE GL_PIXEL_MAP_S_TO_S_SIZE GL_POINT_SIZE GL_POINT_SIZE_GRANULARITY GL_POINT_SIZE_RANGE GL_POINT_SMOOTH GL_POINT_SMOOTH_HINT GL_POLYGON_MODE GL_POLYGON_OFFSET_FACTOR GL_POLYGON_OFFSET_FILL GL_POLYGON_OFFSET_LINE GL_POLYGON_OFFSET_POINT GL_POLYGON_OFFSET_UNITS GL_POLYGON_SMOOTH GL_POLYGON_SMOOTH_HINT GL_POLYGON_STIPPLE GL_PROJECTION_MATRIX GL_PROJECTION_STACK_DEPTH GL_READ_BUFFER GL_RED_BIAS GL_RED_BITS GL_RED_SCALE GL_RENDER_MODE GL_RESCALE_NORMAL GL_RGBA_MODE GL_SCISSOR_BOX GL_SCISSOR_TEST GL_SELECTION_BUFFER_SIZE GL_SHADE_MODEL GL_SMOOTH_LINE_WIDTH_GRANULARITY GL_SMOOTH_LINE_WIDTH_RANGE GL_SMOOTH_POINT_SIZE_GRANULARITY GL_SMOOTH_POINT_SIZE_RANGE GL_STENCIL_BITS GL_STENCIL_CLEAR_VALUE GL_STENCIL_FAIL GL_STENCIL_FUNC GL_STENCIL_PASS_DEPTH_FAIL GL_STENCIL_PASS_DEPTH_PASS GL_STENCIL_REF GL_STENCIL_TEST GL_STENCIL_VALUE_MASK GL_STENCIL_WRITEMASK GL_STEREO GL_SUBPIXEL_BITS GL_TEXTURE_1D GL_TEXTURE_2D GL_TEXTURE_3D GL_TEXTURE_BINDING_1D GL_TEXTURE_BINDING_2D GL_TEXTURE_BINDING_3D GL_TEXTURE_COORD_ARRAY GL_TEXTURE_COORD_ARRAY_SIZE GL_TEXTURE_COORD_ARRAY_STRIDE GL_TEXTURE_COORD_ARRAY_TYPE GL_TEXTURE_GEN_Q GL_TEXTURE_GEN_R GL_TEXTURE_GEN_S GL_TEXTURE_GEN_T GL_TEXTURE_MATRIX GL_TEXTURE_STACK_DEPTH GL_UNPACK_ALIGNMENT GL_UNPACK_IMAGE_HEIGHT GL_UNPACK_LSB_FIRST GL_UNPACK_ROW_LENGTH GL_UNPACK_SKIP_IMAGES GL_UNPACK_SKIP_PIXELS GL_UNPACK_SKIP_ROWS GL_UNPACK_SWAP_BYTES GL_VERTEX_ARRAY GL_VERTEX_ARRAY_SIZE GL_VERTEX_ARRAY_STRIDE GL_VERTEX_ARRAY_TYPE GL_VIEWPORT GL_ZOOM_X GL_ZOOM_Y GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 GL_MULTISAMPLE_ARB GL_SAMPLE_ALPHA_TO_COVERAGE_ARB GL_SAMPLE_ALPHA_TO_ONE_ARB GL_SAMPLE_COVERAGE_ARB GL_SAMPLE_BUFFERS_ARB GL_SAMPLES_ARB GL_SAMPLE_COVERAGE_VALUE_ARB GL_SAMPLE_COVERAGE_INVERT_ARB GL_POINT_SPRITE_ARB GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB GL_CLIP_VOLUME_CLIPPING_HINT_EXT GL_RASTER_POSITION_UNCLIPPED_IBM GL_GENERATE_MIPMAP_HINT_SGIS GL_FOG_DISTANCE_MODE_NV GL_TRANSPOSE_MODELVIEW_MATRIX_ARB GL_TRANSPOSE_PROJECTION_MATRIX_ARB GL_TRANSPOSE_TEXTURE_MATRIX_ARB GL_TRANSPOSE_COLOR_MATRIX_ARB GL_TRANSPOSE_MODELVIEW_MATRIX_ARB GL_TRANSPOSE_PROJECTION_MATRIX_ARB GL_TRANSPOSE_TEXTURE_MATRIX_ARB GL_TRANSPOSE_COLOR_MATRIX_ARB GL_MAX_TEXTURE_LOD_BIAS_EXT GL_PER_STAGE_CONSTANTS_NV GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT GL_CURRENT_FOG_COORDINATE_EXT GL_FOG_COORDINATE_ARRAY_TYPE_EXT GL_FOG_COORDINATE_ARRAY_STRIDE_EXT GL_COLOR_SUM_EXT GL_CURRENT_SECONDARY_COLOR_EXT GL_SECONDARY_COLOR_ARRAY_SIZE_EXT GL_SECONDARY_COLOR_ARRAY_TYPE_EXT GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT GL_ARRAY_BUFFER_BINDING_ARB GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB GL_VERTEX_ARRAY_BUFFER_BINDING_ARB GL_NORMAL_ARRAY_BUFFER_BINDING_ARB GL_COLOR_ARRAY_BUFFER_BINDING_ARB GL_INDEX_ARRAY_BUFFER_BINDING_ARB GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB GL_TEXTURE_RECTANGLE_NV GL_TEXTURE_BINDING_RECTANGLE_NV GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 2602 paramprop pname GL_ACCUM_ALPHA_BITS GL_ACCUM_BLUE_BITS GL_ACCUM_CLEAR_VALUE GL_ACCUM_GREEN_BITS GL_ACCUM_RED_BITS GL_ACTIVE_TEXTURE_ARB GL_ALIASED_LINE_WIDTH_RANGE GL_ALIASED_POINT_SIZE_RANGE GL_ALPHA_BIAS GL_ALPHA_BITS GL_ALPHA_SCALE GL_ALPHA_TEST GL_ALPHA_TEST_FUNC GL_ALPHA_TEST_REF GL_ATTRIB_STACK_DEPTH GL_AUTO_NORMAL GL_AUX_BUFFERS GL_BLEND GL_BLEND_COLOR GL_BLEND_DST GL_BLEND_EQUATION GL_BLEND_SRC GL_BLUE_BIAS GL_BLUE_BITS GL_BLUE_SCALE GL_CLIENT_ACTIVE_TEXTURE_ARB GL_CLIENT_ATTRIB_STACK_DEPTH GL_COLOR_ARRAY GL_COLOR_ARRAY_SIZE GL_COLOR_ARRAY_STRIDE GL_COLOR_ARRAY_TYPE GL_COLOR_CLEAR_VALUE GL_COLOR_LOGIC_OP GL_COLOR_MATERIAL GL_COLOR_MATERIAL_FACE GL_COLOR_MATERIAL_PARAMETER GL_COLOR_MATRIX_STACK_DEPTH GL_COLOR_WRITEMASK GL_CULL_FACE GL_CULL_FACE_MODE GL_CURRENT_COLOR GL_CURRENT_INDEX GL_CURRENT_NORMAL GL_CURRENT_RASTER_COLOR GL_CURRENT_RASTER_DISTANCE GL_CURRENT_RASTER_INDEX GL_CURRENT_RASTER_POSITION GL_CURRENT_RASTER_POSITION_VALID GL_CURRENT_RASTER_TEXTURE_COORDS GL_CURRENT_TEXTURE_COORDS GL_DEPTH_BIAS GL_DEPTH_BITS GL_DEPTH_CLEAR_VALUE GL_DEPTH_FUNC GL_DEPTH_RANGE GL_DEPTH_SCALE GL_DEPTH_TEST GL_DEPTH_WRITEMASK GL_DITHER GL_DOUBLEBUFFER GL_DRAW_BUFFER GL_EDGE_FLAG GL_EDGE_FLAG_ARRAY GL_EDGE_FLAG_ARRAY_STRIDE GL_FEEDBACK_BUFFER_SIZE GL_FEEDBACK_BUFFER_TYPE GL_FOG GL_FOG_COLOR GL_FOG_DENSITY GL_FOG_END GL_FOG_HINT GL_FOG_INDEX GL_FOG_MODE GL_FOG_START GL_FRONT_FACE GL_GREEN_BIAS GL_GREEN_BITS GL_GREEN_SCALE GL_INDEX_ARRAY GL_INDEX_ARRAY_STRIDE GL_INDEX_ARRAY_TYPE GL_INDEX_BITS GL_INDEX_CLEAR_VALUE GL_INDEX_LOGIC_OP GL_INDEX_MODE GL_INDEX_OFFSET GL_INDEX_SHIFT GL_INDEX_WRITEMASK GL_LIGHTING GL_LIGHT_MODEL_AMBIENT GL_LIGHT_MODEL_COLOR_CONTROL GL_LIGHT_MODEL_LOCAL_VIEWER GL_LIGHT_MODEL_TWO_SIDE GL_LINE_SMOOTH GL_LINE_SMOOTH_HINT GL_LINE_STIPPLE GL_LINE_STIPPLE_PATTERN GL_LINE_STIPPLE_REPEAT GL_LINE_WIDTH GL_LINE_WIDTH_GRANULARITY GL_LINE_WIDTH_RANGE GL_LIST_BASE GL_LIST_INDEX GL_LIST_MODE GL_LOGIC_OP_MODE GL_MAP1_COLOR_4 GL_MAP1_GRID_DOMAIN GL_MAP1_GRID_SEGMENTS GL_MAP1_INDEX GL_MAP1_NORMAL GL_MAP1_TEXTURE_COORD_1 GL_MAP1_TEXTURE_COORD_2 GL_MAP1_TEXTURE_COORD_3 GL_MAP1_TEXTURE_COORD_4 GL_MAP1_VERTEX_3 GL_MAP1_VERTEX_4 GL_MAP2_COLOR_4 GL_MAP2_GRID_DOMAIN GL_MAP2_GRID_SEGMENTS GL_MAP2_INDEX GL_MAP2_NORMAL GL_MAP2_TEXTURE_COORD_1 GL_MAP2_TEXTURE_COORD_2 GL_MAP2_TEXTURE_COORD_3 GL_MAP2_TEXTURE_COORD_4 GL_MAP2_VERTEX_3 GL_MAP2_VERTEX_4 GL_MAP_COLOR GL_MAP_STENCIL GL_MATRIX_MODE GL_MAX_3D_TEXTURE_SIZE GL_MAX_ATTRIB_STACK_DEPTH GL_MAX_CLIENT_ATTRIB_STACK_DEPTH GL_MAX_CLIP_PLANES GL_MAX_COLOR_MATRIX_STACK_DEPTH GL_MAX_ELEMENTS_INDICES GL_MAX_ELEMENTS_VERTICES GL_MAX_EVAL_ORDER GL_MAX_LIGHTS GL_MAX_LIST_NESTING GL_MAX_MODELVIEW_STACK_DEPTH GL_MAX_NAME_STACK_DEPTH GL_MAX_PIXEL_MAP_TABLE GL_MAX_PROJECTION_STACK_DEPTH GL_MAX_TEXTURE_SIZE GL_MAX_TEXTURE_STACK_DEPTH GL_MAX_TEXTURE_UNITS_ARB GL_MAX_VIEWPORT_DIMS GL_MODELVIEW_MATRIX GL_MODELVIEW_STACK_DEPTH GL_NAME_STACK_DEPTH GL_NORMAL_ARRAY GL_NORMAL_ARRAY_STRIDE GL_NORMAL_ARRAY_TYPE GL_NORMALIZE GL_PACK_ALIGNMENT GL_PACK_IMAGE_HEIGHT GL_PACK_LSB_FIRST GL_PACK_ROW_LENGTH GL_PACK_SKIP_IMAGES GL_PACK_SKIP_PIXELS GL_PACK_SKIP_ROWS GL_PACK_SWAP_BYTES GL_PERSPECTIVE_CORRECTION_HINT GL_PIXEL_MAP_A_TO_A_SIZE GL_PIXEL_MAP_B_TO_B_SIZE GL_PIXEL_MAP_G_TO_G_SIZE GL_PIXEL_MAP_I_TO_A_SIZE GL_PIXEL_MAP_I_TO_B_SIZE GL_PIXEL_MAP_I_TO_G_SIZE GL_PIXEL_MAP_I_TO_I_SIZE GL_PIXEL_MAP_I_TO_R_SIZE GL_PIXEL_MAP_R_TO_R_SIZE GL_PIXEL_MAP_S_TO_S_SIZE GL_POINT_SIZE GL_POINT_SIZE_GRANULARITY GL_POINT_SIZE_RANGE GL_POINT_SMOOTH GL_POINT_SMOOTH_HINT GL_POLYGON_MODE GL_POLYGON_OFFSET_FACTOR GL_POLYGON_OFFSET_FILL GL_POLYGON_OFFSET_LINE GL_POLYGON_OFFSET_POINT GL_POLYGON_OFFSET_UNITS GL_POLYGON_SMOOTH GL_POLYGON_SMOOTH_HINT GL_POLYGON_STIPPLE GL_PROJECTION_MATRIX GL_PROJECTION_STACK_DEPTH GL_READ_BUFFER GL_RED_BIAS GL_RED_BITS GL_RED_SCALE GL_RENDER_MODE GL_RESCALE_NORMAL GL_RGBA_MODE GL_SCISSOR_BOX GL_SCISSOR_TEST GL_SELECTION_BUFFER_SIZE GL_SHADE_MODEL GL_SMOOTH_LINE_WIDTH_GRANULARITY GL_SMOOTH_LINE_WIDTH_RANGE GL_SMOOTH_POINT_SIZE_GRANULARITY GL_SMOOTH_POINT_SIZE_RANGE GL_STENCIL_BITS GL_STENCIL_CLEAR_VALUE GL_STENCIL_FAIL GL_STENCIL_FUNC GL_STENCIL_PASS_DEPTH_FAIL GL_STENCIL_PASS_DEPTH_PASS GL_STENCIL_REF GL_STENCIL_TEST GL_STENCIL_VALUE_MASK GL_STENCIL_WRITEMASK GL_STEREO GL_SUBPIXEL_BITS GL_TEXTURE_1D GL_TEXTURE_2D GL_TEXTURE_3D GL_TEXTURE_BINDING_1D GL_TEXTURE_BINDING_2D GL_TEXTURE_BINDING_3D GL_TEXTURE_COORD_ARRAY GL_TEXTURE_COORD_ARRAY_SIZE GL_TEXTURE_COORD_ARRAY_STRIDE GL_TEXTURE_COORD_ARRAY_TYPE GL_TEXTURE_GEN_Q GL_TEXTURE_GEN_R GL_TEXTURE_GEN_S GL_TEXTURE_GEN_T GL_TEXTURE_MATRIX GL_TEXTURE_STACK_DEPTH GL_UNPACK_ALIGNMENT GL_UNPACK_IMAGE_HEIGHT GL_UNPACK_LSB_FIRST GL_UNPACK_ROW_LENGTH GL_UNPACK_SKIP_IMAGES GL_UNPACK_SKIP_PIXELS GL_UNPACK_SKIP_ROWS GL_UNPACK_SWAP_BYTES GL_VERTEX_ARRAY GL_VERTEX_ARRAY_SIZE GL_VERTEX_ARRAY_STRIDE GL_VERTEX_ARRAY_TYPE GL_VIEWPORT GL_ZOOM_X GL_ZOOM_Y GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 GL_MULTISAMPLE_ARB GL_SAMPLE_ALPHA_TO_COVERAGE_ARB GL_SAMPLE_ALPHA_TO_ONE_ARB GL_SAMPLE_COVERAGE_ARB GL_SAMPLE_BUFFERS_ARB GL_SAMPLES_ARB GL_SAMPLE_COVERAGE_VALUE_ARB GL_SAMPLE_COVERAGE_INVERT_ARB GL_POINT_SPRITE_ARB GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB GL_CLIP_VOLUME_CLIPPING_HINT_EXT GL_RASTER_POSITION_UNCLIPPED_IBM GL_GENERATE_MIPMAP_HINT_SGIS GL_FOG_DISTANCE_MODE_NV GL_TRANSPOSE_MODELVIEW_MATRIX_ARB GL_TRANSPOSE_PROJECTION_MATRIX_ARB GL_TRANSPOSE_TEXTURE_MATRIX_ARB GL_TRANSPOSE_COLOR_MATRIX_ARB GL_TRANSPOSE_MODELVIEW_MATRIX_ARB GL_TRANSPOSE_PROJECTION_MATRIX_ARB GL_TRANSPOSE_TEXTURE_MATRIX_ARB GL_TRANSPOSE_COLOR_MATRIX_ARB GL_MAX_TEXTURE_LOD_BIAS_EXT GL_PER_STAGE_CONSTANTS_NV GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT GL_CURRENT_FOG_COORDINATE_EXT GL_FOG_COORDINATE_ARRAY_TYPE_EXT GL_FOG_COORDINATE_ARRAY_STRIDE_EXT GL_COLOR_SUM_EXT GL_CURRENT_SECONDARY_COLOR_EXT GL_SECONDARY_COLOR_ARRAY_SIZE_EXT GL_SECONDARY_COLOR_ARRAY_TYPE_EXT GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT GL_ARRAY_BUFFER_BINDING_ARB GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB GL_VERTEX_ARRAY_BUFFER_BINDING_ARB GL_NORMAL_ARRAY_BUFFER_BINDING_ARB GL_COLOR_ARRAY_BUFFER_BINDING_ARB GL_INDEX_ARRAY_BUFFER_BINDING_ARB GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB GL_TEXTURE_RECTANGLE_NV GL_TEXTURE_BINDING_RECTANGLE_NV GL_MAX_RECTANGLE_TEXTURE_SIZE_NV GL_READ_FRAMEBUFFER_BINDING_EXT GL_DRAW_FRAMEBUFFER_BINDING_EXT GL_READ_FRAMEBUFFER_BINDING_EXT GL_DRAW_FRAMEBUFFER_BINDING_EXT GL_ACTIVE_STENCIL_FACE_EXT 2603 2603 param params GLdouble * 2604 2604 category 1.0 … … 2615 2615 return void 2616 2616 param pname GLenum 2617 paramprop pname GL_ACCUM_ALPHA_BITS GL_ACCUM_BLUE_BITS GL_ACCUM_CLEAR_VALUE GL_ACCUM_GREEN_BITS GL_ACCUM_RED_BITS GL_ACTIVE_TEXTURE_ARB GL_ALIASED_LINE_WIDTH_RANGE GL_ALIASED_POINT_SIZE_RANGE GL_ALPHA_BIAS GL_ALPHA_BITS GL_ALPHA_SCALE GL_ALPHA_TEST GL_ALPHA_TEST_FUNC GL_ALPHA_TEST_REF GL_ATTRIB_STACK_DEPTH GL_AUTO_NORMAL GL_AUX_BUFFERS GL_BLEND GL_BLEND_COLOR GL_BLEND_DST GL_BLEND_EQUATION GL_BLEND_SRC GL_BLUE_BIAS GL_BLUE_BITS GL_BLUE_SCALE GL_CLIENT_ACTIVE_TEXTURE_ARB GL_CLIENT_ATTRIB_STACK_DEPTH GL_COLOR_ARRAY GL_COLOR_ARRAY_SIZE GL_COLOR_ARRAY_STRIDE GL_COLOR_ARRAY_TYPE GL_COLOR_CLEAR_VALUE GL_COLOR_LOGIC_OP GL_COLOR_MATERIAL GL_COLOR_MATERIAL_FACE GL_COLOR_MATERIAL_PARAMETER GL_COLOR_MATRIX_STACK_DEPTH GL_COLOR_WRITEMASK GL_CULL_FACE GL_CULL_FACE_MODE GL_CURRENT_COLOR GL_CURRENT_INDEX GL_CURRENT_NORMAL GL_CURRENT_RASTER_COLOR GL_CURRENT_RASTER_DISTANCE GL_CURRENT_RASTER_INDEX GL_CURRENT_RASTER_POSITION GL_CURRENT_RASTER_POSITION_VALID GL_CURRENT_RASTER_TEXTURE_COORDS GL_CURRENT_TEXTURE_COORDS GL_DEPTH_BIAS GL_DEPTH_BITS GL_DEPTH_CLEAR_VALUE GL_DEPTH_FUNC GL_DEPTH_RANGE GL_DEPTH_SCALE GL_DEPTH_TEST GL_DEPTH_WRITEMASK GL_DITHER GL_DOUBLEBUFFER GL_DRAW_BUFFER GL_EDGE_FLAG GL_EDGE_FLAG_ARRAY GL_EDGE_FLAG_ARRAY_STRIDE GL_FEEDBACK_BUFFER_SIZE GL_FEEDBACK_BUFFER_TYPE GL_FOG GL_FOG_COLOR GL_FOG_DENSITY GL_FOG_END GL_FOG_HINT GL_FOG_INDEX GL_FOG_MODE GL_FOG_START GL_FRONT_FACE GL_GREEN_BIAS GL_GREEN_BITS GL_GREEN_SCALE GL_INDEX_ARRAY GL_INDEX_ARRAY_STRIDE GL_INDEX_ARRAY_TYPE GL_INDEX_BITS GL_INDEX_CLEAR_VALUE GL_INDEX_LOGIC_OP GL_INDEX_MODE GL_INDEX_OFFSET GL_INDEX_SHIFT GL_INDEX_WRITEMASK GL_LIGHTING GL_LIGHT_MODEL_AMBIENT GL_LIGHT_MODEL_COLOR_CONTROL GL_LIGHT_MODEL_LOCAL_VIEWER GL_LIGHT_MODEL_TWO_SIDE GL_LINE_SMOOTH GL_LINE_SMOOTH_HINT GL_LINE_STIPPLE GL_LINE_STIPPLE_PATTERN GL_LINE_STIPPLE_REPEAT GL_LINE_WIDTH GL_LINE_WIDTH_GRANULARITY GL_LINE_WIDTH_RANGE GL_LIST_BASE GL_LIST_INDEX GL_LIST_MODE GL_LOGIC_OP_MODE GL_MAP1_COLOR_4 GL_MAP1_GRID_DOMAIN GL_MAP1_GRID_SEGMENTS GL_MAP1_INDEX GL_MAP1_NORMAL GL_MAP1_TEXTURE_COORD_1 GL_MAP1_TEXTURE_COORD_2 GL_MAP1_TEXTURE_COORD_3 GL_MAP1_TEXTURE_COORD_4 GL_MAP1_VERTEX_3 GL_MAP1_VERTEX_4 GL_MAP2_COLOR_4 GL_MAP2_GRID_DOMAIN GL_MAP2_GRID_SEGMENTS GL_MAP2_INDEX GL_MAP2_NORMAL GL_MAP2_TEXTURE_COORD_1 GL_MAP2_TEXTURE_COORD_2 GL_MAP2_TEXTURE_COORD_3 GL_MAP2_TEXTURE_COORD_4 GL_MAP2_VERTEX_3 GL_MAP2_VERTEX_4 GL_MAP_COLOR GL_MAP_STENCIL GL_MATRIX_MODE GL_MAX_3D_TEXTURE_SIZE GL_MAX_ATTRIB_STACK_DEPTH GL_MAX_CLIENT_ATTRIB_STACK_DEPTH GL_MAX_CLIP_PLANES GL_MAX_COLOR_MATRIX_STACK_DEPTH GL_MAX_ELEMENTS_INDICES GL_MAX_ELEMENTS_VERTICES GL_MAX_EVAL_ORDER GL_MAX_LIGHTS GL_MAX_LIST_NESTING GL_MAX_MODELVIEW_STACK_DEPTH GL_MAX_NAME_STACK_DEPTH GL_MAX_PIXEL_MAP_TABLE GL_MAX_PROJECTION_STACK_DEPTH GL_MAX_TEXTURE_SIZE GL_MAX_TEXTURE_STACK_DEPTH GL_MAX_TEXTURE_UNITS_ARB GL_MAX_VIEWPORT_DIMS GL_MODELVIEW_MATRIX GL_MODELVIEW_STACK_DEPTH GL_NAME_STACK_DEPTH GL_NORMAL_ARRAY GL_NORMAL_ARRAY_STRIDE GL_NORMAL_ARRAY_TYPE GL_NORMALIZE GL_PACK_ALIGNMENT GL_PACK_IMAGE_HEIGHT GL_PACK_LSB_FIRST GL_PACK_ROW_LENGTH GL_PACK_SKIP_IMAGES GL_PACK_SKIP_PIXELS GL_PACK_SKIP_ROWS GL_PACK_SWAP_BYTES GL_PERSPECTIVE_CORRECTION_HINT GL_PIXEL_MAP_A_TO_A_SIZE GL_PIXEL_MAP_B_TO_B_SIZE GL_PIXEL_MAP_G_TO_G_SIZE GL_PIXEL_MAP_I_TO_A_SIZE GL_PIXEL_MAP_I_TO_B_SIZE GL_PIXEL_MAP_I_TO_G_SIZE GL_PIXEL_MAP_I_TO_I_SIZE GL_PIXEL_MAP_I_TO_R_SIZE GL_PIXEL_MAP_R_TO_R_SIZE GL_PIXEL_MAP_S_TO_S_SIZE GL_POINT_SIZE GL_POINT_SIZE_GRANULARITY GL_POINT_SIZE_RANGE GL_POINT_SMOOTH GL_POINT_SMOOTH_HINT GL_POLYGON_MODE GL_POLYGON_OFFSET_FACTOR GL_POLYGON_OFFSET_FILL GL_POLYGON_OFFSET_LINE GL_POLYGON_OFFSET_POINT GL_POLYGON_OFFSET_UNITS GL_POLYGON_SMOOTH GL_POLYGON_SMOOTH_HINT GL_POLYGON_STIPPLE GL_PROJECTION_MATRIX GL_PROJECTION_STACK_DEPTH GL_READ_BUFFER GL_RED_BIAS GL_RED_BITS GL_RED_SCALE GL_RENDER_MODE GL_RESCALE_NORMAL GL_RGBA_MODE GL_SCISSOR_BOX GL_SCISSOR_TEST GL_SELECTION_BUFFER_SIZE GL_SHADE_MODEL GL_SMOOTH_LINE_WIDTH_GRANULARITY GL_SMOOTH_LINE_WIDTH_RANGE GL_SMOOTH_POINT_SIZE_GRANULARITY GL_SMOOTH_POINT_SIZE_RANGE GL_STENCIL_BITS GL_STENCIL_CLEAR_VALUE GL_STENCIL_FAIL GL_STENCIL_FUNC GL_STENCIL_PASS_DEPTH_FAIL GL_STENCIL_PASS_DEPTH_PASS GL_STENCIL_REF GL_STENCIL_TEST GL_STENCIL_VALUE_MASK GL_STENCIL_WRITEMASK GL_STEREO GL_SUBPIXEL_BITS GL_TEXTURE_1D GL_TEXTURE_2D GL_TEXTURE_3D GL_TEXTURE_BINDING_1D GL_TEXTURE_BINDING_2D GL_TEXTURE_BINDING_3D GL_TEXTURE_COORD_ARRAY GL_TEXTURE_COORD_ARRAY_SIZE GL_TEXTURE_COORD_ARRAY_STRIDE GL_TEXTURE_COORD_ARRAY_TYPE GL_TEXTURE_GEN_Q GL_TEXTURE_GEN_R GL_TEXTURE_GEN_S GL_TEXTURE_GEN_T GL_TEXTURE_MATRIX GL_TEXTURE_STACK_DEPTH GL_UNPACK_ALIGNMENT GL_UNPACK_IMAGE_HEIGHT GL_UNPACK_LSB_FIRST GL_UNPACK_ROW_LENGTH GL_UNPACK_SKIP_IMAGES GL_UNPACK_SKIP_PIXELS GL_UNPACK_SKIP_ROWS GL_UNPACK_SWAP_BYTES GL_VERTEX_ARRAY GL_VERTEX_ARRAY_SIZE GL_VERTEX_ARRAY_STRIDE GL_VERTEX_ARRAY_TYPE GL_VIEWPORT GL_ZOOM_X GL_ZOOM_Y GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 GL_MULTISAMPLE_ARB GL_SAMPLE_ALPHA_TO_COVERAGE_ARB GL_SAMPLE_ALPHA_TO_ONE_ARB GL_SAMPLE_COVERAGE_ARB GL_SAMPLE_BUFFERS_ARB GL_SAMPLES_ARB GL_SAMPLE_COVERAGE_VALUE_ARB GL_SAMPLE_COVERAGE_INVERT_ARB GL_POINT_SPRITE_ARB GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB GL_CLIP_VOLUME_CLIPPING_HINT_EXT GL_RASTER_POSITION_UNCLIPPED_IBM GL_GENERATE_MIPMAP_HINT_SGIS GL_FOG_DISTANCE_MODE_NV GL_TRANSPOSE_MODELVIEW_MATRIX_ARB GL_TRANSPOSE_PROJECTION_MATRIX_ARB GL_TRANSPOSE_TEXTURE_MATRIX_ARB GL_TRANSPOSE_COLOR_MATRIX_ARB GL_MAX_TEXTURE_LOD_BIAS_EXT GL_PER_STAGE_CONSTANTS_NV GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT GL_CURRENT_FOG_COORDINATE_EXT GL_FOG_COORDINATE_ARRAY_TYPE_EXT GL_FOG_COORDINATE_ARRAY_STRIDE_EXT GL_COLOR_SUM_EXT GL_CURRENT_SECONDARY_COLOR_EXT GL_SECONDARY_COLOR_ARRAY_SIZE_EXT GL_SECONDARY_COLOR_ARRAY_TYPE_EXT GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT GL_ARRAY_BUFFER_BINDING_ARB GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB GL_VERTEX_ARRAY_BUFFER_BINDING_ARB GL_NORMAL_ARRAY_BUFFER_BINDING_ARB GL_COLOR_ARRAY_BUFFER_BINDING_ARB GL_INDEX_ARRAY_BUFFER_BINDING_ARB GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB GL_TEXTURE_RECTANGLE_NV GL_TEXTURE_BINDING_RECTANGLE_NV GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 2617 paramprop pname GL_ACCUM_ALPHA_BITS GL_ACCUM_BLUE_BITS GL_ACCUM_CLEAR_VALUE GL_ACCUM_GREEN_BITS GL_ACCUM_RED_BITS GL_ACTIVE_TEXTURE_ARB GL_ALIASED_LINE_WIDTH_RANGE GL_ALIASED_POINT_SIZE_RANGE GL_ALPHA_BIAS GL_ALPHA_BITS GL_ALPHA_SCALE GL_ALPHA_TEST GL_ALPHA_TEST_FUNC GL_ALPHA_TEST_REF GL_ATTRIB_STACK_DEPTH GL_AUTO_NORMAL GL_AUX_BUFFERS GL_BLEND GL_BLEND_COLOR GL_BLEND_DST GL_BLEND_EQUATION GL_BLEND_SRC GL_BLUE_BIAS GL_BLUE_BITS GL_BLUE_SCALE GL_CLIENT_ACTIVE_TEXTURE_ARB GL_CLIENT_ATTRIB_STACK_DEPTH GL_COLOR_ARRAY GL_COLOR_ARRAY_SIZE GL_COLOR_ARRAY_STRIDE GL_COLOR_ARRAY_TYPE GL_COLOR_CLEAR_VALUE GL_COLOR_LOGIC_OP GL_COLOR_MATERIAL GL_COLOR_MATERIAL_FACE GL_COLOR_MATERIAL_PARAMETER GL_COLOR_MATRIX_STACK_DEPTH GL_COLOR_WRITEMASK GL_CULL_FACE GL_CULL_FACE_MODE GL_CURRENT_COLOR GL_CURRENT_INDEX GL_CURRENT_NORMAL GL_CURRENT_RASTER_COLOR GL_CURRENT_RASTER_DISTANCE GL_CURRENT_RASTER_INDEX GL_CURRENT_RASTER_POSITION GL_CURRENT_RASTER_POSITION_VALID GL_CURRENT_RASTER_TEXTURE_COORDS GL_CURRENT_TEXTURE_COORDS GL_DEPTH_BIAS GL_DEPTH_BITS GL_DEPTH_CLEAR_VALUE GL_DEPTH_FUNC GL_DEPTH_RANGE GL_DEPTH_SCALE GL_DEPTH_TEST GL_DEPTH_WRITEMASK GL_DITHER GL_DOUBLEBUFFER GL_DRAW_BUFFER GL_EDGE_FLAG GL_EDGE_FLAG_ARRAY GL_EDGE_FLAG_ARRAY_STRIDE GL_FEEDBACK_BUFFER_SIZE GL_FEEDBACK_BUFFER_TYPE GL_FOG GL_FOG_COLOR GL_FOG_DENSITY GL_FOG_END GL_FOG_HINT GL_FOG_INDEX GL_FOG_MODE GL_FOG_START GL_FRONT_FACE GL_GREEN_BIAS GL_GREEN_BITS GL_GREEN_SCALE GL_INDEX_ARRAY GL_INDEX_ARRAY_STRIDE GL_INDEX_ARRAY_TYPE GL_INDEX_BITS GL_INDEX_CLEAR_VALUE GL_INDEX_LOGIC_OP GL_INDEX_MODE GL_INDEX_OFFSET GL_INDEX_SHIFT GL_INDEX_WRITEMASK GL_LIGHTING GL_LIGHT_MODEL_AMBIENT GL_LIGHT_MODEL_COLOR_CONTROL GL_LIGHT_MODEL_LOCAL_VIEWER GL_LIGHT_MODEL_TWO_SIDE GL_LINE_SMOOTH GL_LINE_SMOOTH_HINT GL_LINE_STIPPLE GL_LINE_STIPPLE_PATTERN GL_LINE_STIPPLE_REPEAT GL_LINE_WIDTH GL_LINE_WIDTH_GRANULARITY GL_LINE_WIDTH_RANGE GL_LIST_BASE GL_LIST_INDEX GL_LIST_MODE GL_LOGIC_OP_MODE GL_MAP1_COLOR_4 GL_MAP1_GRID_DOMAIN GL_MAP1_GRID_SEGMENTS GL_MAP1_INDEX GL_MAP1_NORMAL GL_MAP1_TEXTURE_COORD_1 GL_MAP1_TEXTURE_COORD_2 GL_MAP1_TEXTURE_COORD_3 GL_MAP1_TEXTURE_COORD_4 GL_MAP1_VERTEX_3 GL_MAP1_VERTEX_4 GL_MAP2_COLOR_4 GL_MAP2_GRID_DOMAIN GL_MAP2_GRID_SEGMENTS GL_MAP2_INDEX GL_MAP2_NORMAL GL_MAP2_TEXTURE_COORD_1 GL_MAP2_TEXTURE_COORD_2 GL_MAP2_TEXTURE_COORD_3 GL_MAP2_TEXTURE_COORD_4 GL_MAP2_VERTEX_3 GL_MAP2_VERTEX_4 GL_MAP_COLOR GL_MAP_STENCIL GL_MATRIX_MODE GL_MAX_3D_TEXTURE_SIZE GL_MAX_ATTRIB_STACK_DEPTH GL_MAX_CLIENT_ATTRIB_STACK_DEPTH GL_MAX_CLIP_PLANES GL_MAX_COLOR_MATRIX_STACK_DEPTH GL_MAX_ELEMENTS_INDICES GL_MAX_ELEMENTS_VERTICES GL_MAX_EVAL_ORDER GL_MAX_LIGHTS GL_MAX_LIST_NESTING GL_MAX_MODELVIEW_STACK_DEPTH GL_MAX_NAME_STACK_DEPTH GL_MAX_PIXEL_MAP_TABLE GL_MAX_PROJECTION_STACK_DEPTH GL_MAX_TEXTURE_SIZE GL_MAX_TEXTURE_STACK_DEPTH GL_MAX_TEXTURE_UNITS_ARB GL_MAX_VIEWPORT_DIMS GL_MODELVIEW_MATRIX GL_MODELVIEW_STACK_DEPTH GL_NAME_STACK_DEPTH GL_NORMAL_ARRAY GL_NORMAL_ARRAY_STRIDE GL_NORMAL_ARRAY_TYPE GL_NORMALIZE GL_PACK_ALIGNMENT GL_PACK_IMAGE_HEIGHT GL_PACK_LSB_FIRST GL_PACK_ROW_LENGTH GL_PACK_SKIP_IMAGES GL_PACK_SKIP_PIXELS GL_PACK_SKIP_ROWS GL_PACK_SWAP_BYTES GL_PERSPECTIVE_CORRECTION_HINT GL_PIXEL_MAP_A_TO_A_SIZE GL_PIXEL_MAP_B_TO_B_SIZE GL_PIXEL_MAP_G_TO_G_SIZE GL_PIXEL_MAP_I_TO_A_SIZE GL_PIXEL_MAP_I_TO_B_SIZE GL_PIXEL_MAP_I_TO_G_SIZE GL_PIXEL_MAP_I_TO_I_SIZE GL_PIXEL_MAP_I_TO_R_SIZE GL_PIXEL_MAP_R_TO_R_SIZE GL_PIXEL_MAP_S_TO_S_SIZE GL_POINT_SIZE GL_POINT_SIZE_GRANULARITY GL_POINT_SIZE_RANGE GL_POINT_SMOOTH GL_POINT_SMOOTH_HINT GL_POLYGON_MODE GL_POLYGON_OFFSET_FACTOR GL_POLYGON_OFFSET_FILL GL_POLYGON_OFFSET_LINE GL_POLYGON_OFFSET_POINT GL_POLYGON_OFFSET_UNITS GL_POLYGON_SMOOTH GL_POLYGON_SMOOTH_HINT GL_POLYGON_STIPPLE GL_PROJECTION_MATRIX GL_PROJECTION_STACK_DEPTH GL_READ_BUFFER GL_RED_BIAS GL_RED_BITS GL_RED_SCALE GL_RENDER_MODE GL_RESCALE_NORMAL GL_RGBA_MODE GL_SCISSOR_BOX GL_SCISSOR_TEST GL_SELECTION_BUFFER_SIZE GL_SHADE_MODEL GL_SMOOTH_LINE_WIDTH_GRANULARITY GL_SMOOTH_LINE_WIDTH_RANGE GL_SMOOTH_POINT_SIZE_GRANULARITY GL_SMOOTH_POINT_SIZE_RANGE GL_STENCIL_BITS GL_STENCIL_CLEAR_VALUE GL_STENCIL_FAIL GL_STENCIL_FUNC GL_STENCIL_PASS_DEPTH_FAIL GL_STENCIL_PASS_DEPTH_PASS GL_STENCIL_REF GL_STENCIL_TEST GL_STENCIL_VALUE_MASK GL_STENCIL_WRITEMASK GL_STEREO GL_SUBPIXEL_BITS GL_TEXTURE_1D GL_TEXTURE_2D GL_TEXTURE_3D GL_TEXTURE_BINDING_1D GL_TEXTURE_BINDING_2D GL_TEXTURE_BINDING_3D GL_TEXTURE_COORD_ARRAY GL_TEXTURE_COORD_ARRAY_SIZE GL_TEXTURE_COORD_ARRAY_STRIDE GL_TEXTURE_COORD_ARRAY_TYPE GL_TEXTURE_GEN_Q GL_TEXTURE_GEN_R GL_TEXTURE_GEN_S GL_TEXTURE_GEN_T GL_TEXTURE_MATRIX GL_TEXTURE_STACK_DEPTH GL_UNPACK_ALIGNMENT GL_UNPACK_IMAGE_HEIGHT GL_UNPACK_LSB_FIRST GL_UNPACK_ROW_LENGTH GL_UNPACK_SKIP_IMAGES GL_UNPACK_SKIP_PIXELS GL_UNPACK_SKIP_ROWS GL_UNPACK_SWAP_BYTES GL_VERTEX_ARRAY GL_VERTEX_ARRAY_SIZE GL_VERTEX_ARRAY_STRIDE GL_VERTEX_ARRAY_TYPE GL_VIEWPORT GL_ZOOM_X GL_ZOOM_Y GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 GL_MULTISAMPLE_ARB GL_SAMPLE_ALPHA_TO_COVERAGE_ARB GL_SAMPLE_ALPHA_TO_ONE_ARB GL_SAMPLE_COVERAGE_ARB GL_SAMPLE_BUFFERS_ARB GL_SAMPLES_ARB GL_SAMPLE_COVERAGE_VALUE_ARB GL_SAMPLE_COVERAGE_INVERT_ARB GL_POINT_SPRITE_ARB GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB GL_CLIP_VOLUME_CLIPPING_HINT_EXT GL_RASTER_POSITION_UNCLIPPED_IBM GL_GENERATE_MIPMAP_HINT_SGIS GL_FOG_DISTANCE_MODE_NV GL_TRANSPOSE_MODELVIEW_MATRIX_ARB GL_TRANSPOSE_PROJECTION_MATRIX_ARB GL_TRANSPOSE_TEXTURE_MATRIX_ARB GL_TRANSPOSE_COLOR_MATRIX_ARB GL_MAX_TEXTURE_LOD_BIAS_EXT GL_PER_STAGE_CONSTANTS_NV GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT GL_CURRENT_FOG_COORDINATE_EXT GL_FOG_COORDINATE_ARRAY_TYPE_EXT GL_FOG_COORDINATE_ARRAY_STRIDE_EXT GL_COLOR_SUM_EXT GL_CURRENT_SECONDARY_COLOR_EXT GL_SECONDARY_COLOR_ARRAY_SIZE_EXT GL_SECONDARY_COLOR_ARRAY_TYPE_EXT GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT GL_ARRAY_BUFFER_BINDING_ARB GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB GL_VERTEX_ARRAY_BUFFER_BINDING_ARB GL_NORMAL_ARRAY_BUFFER_BINDING_ARB GL_COLOR_ARRAY_BUFFER_BINDING_ARB GL_INDEX_ARRAY_BUFFER_BINDING_ARB GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB GL_TEXTURE_RECTANGLE_NV GL_TEXTURE_BINDING_RECTANGLE_NV GL_MAX_RECTANGLE_TEXTURE_SIZE_NV GL_READ_FRAMEBUFFER_BINDING_EXT GL_DRAW_FRAMEBUFFER_BINDING_EXT GL_ACTIVE_STENCIL_FACE_EXT 2618 2618 param params GLfloat * 2619 2619 category 1.0 … … 2624 2624 return void 2625 2625 param pname GLenum 2626 paramprop pname GL_ACCUM_ALPHA_BITS GL_ACCUM_BLUE_BITS GL_ACCUM_CLEAR_VALUE GL_ACCUM_GREEN_BITS GL_ACCUM_RED_BITS GL_ACTIVE_TEXTURE_ARB GL_ALIASED_LINE_WIDTH_RANGE GL_ALIASED_POINT_SIZE_RANGE GL_ALPHA_BIAS GL_ALPHA_BITS GL_ALPHA_SCALE GL_ALPHA_TEST GL_ALPHA_TEST_FUNC GL_ALPHA_TEST_REF GL_ATTRIB_STACK_DEPTH GL_AUTO_NORMAL GL_AUX_BUFFERS GL_BLEND GL_BLEND_COLOR GL_BLEND_DST GL_BLEND_EQUATION GL_BLEND_SRC GL_BLUE_BIAS GL_BLUE_BITS GL_BLUE_SCALE GL_CLIENT_ACTIVE_TEXTURE_ARB GL_CLIENT_ATTRIB_STACK_DEPTH GL_COLOR_ARRAY GL_COLOR_ARRAY_SIZE GL_COLOR_ARRAY_STRIDE GL_COLOR_ARRAY_TYPE GL_COLOR_CLEAR_VALUE GL_COLOR_LOGIC_OP GL_COLOR_MATERIAL GL_COLOR_MATERIAL_FACE GL_COLOR_MATERIAL_PARAMETER GL_COLOR_MATRIX_STACK_DEPTH GL_COLOR_WRITEMASK GL_CULL_FACE GL_CULL_FACE_MODE GL_CURRENT_COLOR GL_CURRENT_INDEX GL_CURRENT_NORMAL GL_CURRENT_RASTER_COLOR GL_CURRENT_RASTER_DISTANCE GL_CURRENT_RASTER_INDEX GL_CURRENT_RASTER_POSITION GL_CURRENT_RASTER_POSITION_VALID GL_CURRENT_RASTER_TEXTURE_COORDS GL_CURRENT_TEXTURE_COORDS GL_DEPTH_BIAS GL_DEPTH_BITS GL_DEPTH_CLEAR_VALUE GL_DEPTH_FUNC GL_DEPTH_RANGE GL_DEPTH_SCALE GL_DEPTH_TEST GL_DEPTH_WRITEMASK GL_DITHER GL_DOUBLEBUFFER GL_DRAW_BUFFER GL_EDGE_FLAG GL_EDGE_FLAG_ARRAY GL_EDGE_FLAG_ARRAY_STRIDE GL_FEEDBACK_BUFFER_SIZE GL_FEEDBACK_BUFFER_TYPE GL_FOG GL_FOG_COLOR GL_FOG_DENSITY GL_FOG_END GL_FOG_HINT GL_FOG_INDEX GL_FOG_MODE GL_FOG_START GL_FRONT_FACE GL_GREEN_BIAS GL_GREEN_BITS GL_GREEN_SCALE GL_INDEX_ARRAY GL_INDEX_ARRAY_STRIDE GL_INDEX_ARRAY_TYPE GL_INDEX_BITS GL_INDEX_CLEAR_VALUE GL_INDEX_LOGIC_OP GL_INDEX_MODE GL_INDEX_OFFSET GL_INDEX_SHIFT GL_INDEX_WRITEMASK GL_LIGHTING GL_LIGHT_MODEL_AMBIENT GL_LIGHT_MODEL_COLOR_CONTROL GL_LIGHT_MODEL_LOCAL_VIEWER GL_LIGHT_MODEL_TWO_SIDE GL_LINE_SMOOTH GL_LINE_SMOOTH_HINT GL_LINE_STIPPLE GL_LINE_STIPPLE_PATTERN GL_LINE_STIPPLE_REPEAT GL_LINE_WIDTH GL_LINE_WIDTH_GRANULARITY GL_LINE_WIDTH_RANGE GL_LIST_BASE GL_LIST_INDEX GL_LIST_MODE GL_LOGIC_OP_MODE GL_MAP1_COLOR_4 GL_MAP1_GRID_DOMAIN GL_MAP1_GRID_SEGMENTS GL_MAP1_INDEX GL_MAP1_NORMAL GL_MAP1_TEXTURE_COORD_1 GL_MAP1_TEXTURE_COORD_2 GL_MAP1_TEXTURE_COORD_3 GL_MAP1_TEXTURE_COORD_4 GL_MAP1_VERTEX_3 GL_MAP1_VERTEX_4 GL_MAP2_COLOR_4 GL_MAP2_GRID_DOMAIN GL_MAP2_GRID_SEGMENTS GL_MAP2_INDEX GL_MAP2_NORMAL GL_MAP2_TEXTURE_COORD_1 GL_MAP2_TEXTURE_COORD_2 GL_MAP2_TEXTURE_COORD_3 GL_MAP2_TEXTURE_COORD_4 GL_MAP2_VERTEX_3 GL_MAP2_VERTEX_4 GL_MAP_COLOR GL_MAP_STENCIL GL_MATRIX_MODE GL_MAX_3D_TEXTURE_SIZE GL_MAX_ATTRIB_STACK_DEPTH GL_MAX_CLIENT_ATTRIB_STACK_DEPTH GL_MAX_CLIP_PLANES GL_MAX_COLOR_MATRIX_STACK_DEPTH GL_MAX_ELEMENTS_INDICES GL_MAX_ELEMENTS_VERTICES GL_MAX_EVAL_ORDER GL_MAX_LIGHTS GL_MAX_LIST_NESTING GL_MAX_MODELVIEW_STACK_DEPTH GL_MAX_NAME_STACK_DEPTH GL_MAX_PIXEL_MAP_TABLE GL_MAX_PROJECTION_STACK_DEPTH GL_MAX_TEXTURE_SIZE GL_MAX_TEXTURE_STACK_DEPTH GL_MAX_TEXTURE_UNITS_ARB GL_MAX_VIEWPORT_DIMS GL_MODELVIEW_MATRIX GL_MODELVIEW_STACK_DEPTH GL_NAME_STACK_DEPTH GL_NORMAL_ARRAY GL_NORMAL_ARRAY_STRIDE GL_NORMAL_ARRAY_TYPE GL_NORMALIZE GL_PACK_ALIGNMENT GL_PACK_IMAGE_HEIGHT GL_PACK_LSB_FIRST GL_PACK_ROW_LENGTH GL_PACK_SKIP_IMAGES GL_PACK_SKIP_PIXELS GL_PACK_SKIP_ROWS GL_PACK_SWAP_BYTES GL_PERSPECTIVE_CORRECTION_HINT GL_PIXEL_MAP_A_TO_A_SIZE GL_PIXEL_MAP_B_TO_B_SIZE GL_PIXEL_MAP_G_TO_G_SIZE GL_PIXEL_MAP_I_TO_A_SIZE GL_PIXEL_MAP_I_TO_B_SIZE GL_PIXEL_MAP_I_TO_G_SIZE GL_PIXEL_MAP_I_TO_I_SIZE GL_PIXEL_MAP_I_TO_R_SIZE GL_PIXEL_MAP_R_TO_R_SIZE GL_PIXEL_MAP_S_TO_S_SIZE GL_POINT_SIZE GL_POINT_SIZE_GRANULARITY GL_POINT_SIZE_RANGE GL_POINT_SMOOTH GL_POINT_SMOOTH_HINT GL_POLYGON_MODE GL_POLYGON_OFFSET_FACTOR GL_POLYGON_OFFSET_FILL GL_POLYGON_OFFSET_LINE GL_POLYGON_OFFSET_POINT GL_POLYGON_OFFSET_UNITS GL_POLYGON_SMOOTH GL_POLYGON_SMOOTH_HINT GL_POLYGON_STIPPLE GL_PROJECTION_MATRIX GL_PROJECTION_STACK_DEPTH GL_READ_BUFFER GL_RED_BIAS GL_RED_BITS GL_RED_SCALE GL_RENDER_MODE GL_RESCALE_NORMAL GL_RGBA_MODE GL_SCISSOR_BOX GL_SCISSOR_TEST GL_SELECTION_BUFFER_SIZE GL_SHADE_MODEL GL_SMOOTH_LINE_WIDTH_GRANULARITY GL_SMOOTH_LINE_WIDTH_RANGE GL_SMOOTH_POINT_SIZE_GRANULARITY GL_SMOOTH_POINT_SIZE_RANGE GL_STENCIL_BITS GL_STENCIL_CLEAR_VALUE GL_STENCIL_FAIL GL_STENCIL_FUNC GL_STENCIL_PASS_DEPTH_FAIL GL_STENCIL_PASS_DEPTH_PASS GL_STENCIL_REF GL_STENCIL_TEST GL_STENCIL_VALUE_MASK GL_STENCIL_WRITEMASK GL_STEREO GL_SUBPIXEL_BITS GL_TEXTURE_1D GL_TEXTURE_2D GL_TEXTURE_3D GL_TEXTURE_BINDING_1D GL_TEXTURE_BINDING_2D GL_TEXTURE_BINDING_3D GL_TEXTURE_COORD_ARRAY GL_TEXTURE_COORD_ARRAY_SIZE GL_TEXTURE_COORD_ARRAY_STRIDE GL_TEXTURE_COORD_ARRAY_TYPE GL_TEXTURE_GEN_Q GL_TEXTURE_GEN_R GL_TEXTURE_GEN_S GL_TEXTURE_GEN_T GL_TEXTURE_MATRIX GL_TEXTURE_STACK_DEPTH GL_UNPACK_ALIGNMENT GL_UNPACK_IMAGE_HEIGHT GL_UNPACK_LSB_FIRST GL_UNPACK_ROW_LENGTH GL_UNPACK_SKIP_IMAGES GL_UNPACK_SKIP_PIXELS GL_UNPACK_SKIP_ROWS GL_UNPACK_SWAP_BYTES GL_VERTEX_ARRAY GL_VERTEX_ARRAY_SIZE GL_VERTEX_ARRAY_STRIDE GL_VERTEX_ARRAY_TYPE GL_VIEWPORT GL_ZOOM_X GL_ZOOM_Y GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 GL_MULTISAMPLE_ARB GL_SAMPLE_ALPHA_TO_COVERAGE_ARB GL_SAMPLE_ALPHA_TO_ONE_ARB GL_SAMPLE_COVERAGE_ARB GL_SAMPLE_BUFFERS_ARB GL_SAMPLES_ARB GL_SAMPLE_COVERAGE_VALUE_ARB GL_SAMPLE_COVERAGE_INVERT_ARB GL_POINT_SPRITE_ARB GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB GL_CLIP_VOLUME_CLIPPING_HINT_EXT GL_RASTER_POSITION_UNCLIPPED_IBM GL_GENERATE_MIPMAP_HINT_SGIS GL_FOG_DISTANCE_MODE_NV GL_TRANSPOSE_MODELVIEW_MATRIX_ARB GL_TRANSPOSE_PROJECTION_MATRIX_ARB GL_TRANSPOSE_TEXTURE_MATRIX_ARB GL_TRANSPOSE_COLOR_MATRIX_ARB GL_MAX_TEXTURE_LOD_BIAS_EXT GL_PER_STAGE_CONSTANTS_NV GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT GL_CURRENT_FOG_COORDINATE_EXT GL_FOG_COORDINATE_ARRAY_TYPE_EXT GL_FOG_COORDINATE_ARRAY_STRIDE_EXT GL_COLOR_SUM_EXT GL_CURRENT_SECONDARY_COLOR_EXT GL_SECONDARY_COLOR_ARRAY_SIZE_EXT GL_SECONDARY_COLOR_ARRAY_TYPE_EXT GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT GL_ARRAY_BUFFER_BINDING_ARB GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB GL_VERTEX_ARRAY_BUFFER_BINDING_ARB GL_NORMAL_ARRAY_BUFFER_BINDING_ARB GL_COLOR_ARRAY_BUFFER_BINDING_ARB GL_INDEX_ARRAY_BUFFER_BINDING_ARB GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB GL_TEXTURE_RECTANGLE_NV GL_TEXTURE_BINDING_RECTANGLE_NV GL_MAX_RECTANGLE_TEXTURE_SIZE_NV GL_FRAMEBUFFER_BINDING_EXT GL_RENDERBUFFER_BINDING_EXT GL_MAX_COLOR_ATTACHMENTS_EXT GL_MAX_RENDERBUFFER_SIZE_EXT 2626 paramprop pname GL_ACCUM_ALPHA_BITS GL_ACCUM_BLUE_BITS GL_ACCUM_CLEAR_VALUE GL_ACCUM_GREEN_BITS GL_ACCUM_RED_BITS GL_ACTIVE_TEXTURE_ARB GL_ALIASED_LINE_WIDTH_RANGE GL_ALIASED_POINT_SIZE_RANGE GL_ALPHA_BIAS GL_ALPHA_BITS GL_ALPHA_SCALE GL_ALPHA_TEST GL_ALPHA_TEST_FUNC GL_ALPHA_TEST_REF GL_ATTRIB_STACK_DEPTH GL_AUTO_NORMAL GL_AUX_BUFFERS GL_BLEND GL_BLEND_COLOR GL_BLEND_DST GL_BLEND_EQUATION GL_BLEND_SRC GL_BLUE_BIAS GL_BLUE_BITS GL_BLUE_SCALE GL_CLIENT_ACTIVE_TEXTURE_ARB GL_CLIENT_ATTRIB_STACK_DEPTH GL_COLOR_ARRAY GL_COLOR_ARRAY_SIZE GL_COLOR_ARRAY_STRIDE GL_COLOR_ARRAY_TYPE GL_COLOR_CLEAR_VALUE GL_COLOR_LOGIC_OP GL_COLOR_MATERIAL GL_COLOR_MATERIAL_FACE GL_COLOR_MATERIAL_PARAMETER GL_COLOR_MATRIX_STACK_DEPTH GL_COLOR_WRITEMASK GL_CULL_FACE GL_CULL_FACE_MODE GL_CURRENT_COLOR GL_CURRENT_INDEX GL_CURRENT_NORMAL GL_CURRENT_RASTER_COLOR GL_CURRENT_RASTER_DISTANCE GL_CURRENT_RASTER_INDEX GL_CURRENT_RASTER_POSITION GL_CURRENT_RASTER_POSITION_VALID GL_CURRENT_RASTER_TEXTURE_COORDS GL_CURRENT_TEXTURE_COORDS GL_DEPTH_BIAS GL_DEPTH_BITS GL_DEPTH_CLEAR_VALUE GL_DEPTH_FUNC GL_DEPTH_RANGE GL_DEPTH_SCALE GL_DEPTH_TEST GL_DEPTH_WRITEMASK GL_DITHER GL_DOUBLEBUFFER GL_DRAW_BUFFER GL_EDGE_FLAG GL_EDGE_FLAG_ARRAY GL_EDGE_FLAG_ARRAY_STRIDE GL_FEEDBACK_BUFFER_SIZE GL_FEEDBACK_BUFFER_TYPE GL_FOG GL_FOG_COLOR GL_FOG_DENSITY GL_FOG_END GL_FOG_HINT GL_FOG_INDEX GL_FOG_MODE GL_FOG_START GL_FRONT_FACE GL_GREEN_BIAS GL_GREEN_BITS GL_GREEN_SCALE GL_INDEX_ARRAY GL_INDEX_ARRAY_STRIDE GL_INDEX_ARRAY_TYPE GL_INDEX_BITS GL_INDEX_CLEAR_VALUE GL_INDEX_LOGIC_OP GL_INDEX_MODE GL_INDEX_OFFSET GL_INDEX_SHIFT GL_INDEX_WRITEMASK GL_LIGHTING GL_LIGHT_MODEL_AMBIENT GL_LIGHT_MODEL_COLOR_CONTROL GL_LIGHT_MODEL_LOCAL_VIEWER GL_LIGHT_MODEL_TWO_SIDE GL_LINE_SMOOTH GL_LINE_SMOOTH_HINT GL_LINE_STIPPLE GL_LINE_STIPPLE_PATTERN GL_LINE_STIPPLE_REPEAT GL_LINE_WIDTH GL_LINE_WIDTH_GRANULARITY GL_LINE_WIDTH_RANGE GL_LIST_BASE GL_LIST_INDEX GL_LIST_MODE GL_LOGIC_OP_MODE GL_MAP1_COLOR_4 GL_MAP1_GRID_DOMAIN GL_MAP1_GRID_SEGMENTS GL_MAP1_INDEX GL_MAP1_NORMAL GL_MAP1_TEXTURE_COORD_1 GL_MAP1_TEXTURE_COORD_2 GL_MAP1_TEXTURE_COORD_3 GL_MAP1_TEXTURE_COORD_4 GL_MAP1_VERTEX_3 GL_MAP1_VERTEX_4 GL_MAP2_COLOR_4 GL_MAP2_GRID_DOMAIN GL_MAP2_GRID_SEGMENTS GL_MAP2_INDEX GL_MAP2_NORMAL GL_MAP2_TEXTURE_COORD_1 GL_MAP2_TEXTURE_COORD_2 GL_MAP2_TEXTURE_COORD_3 GL_MAP2_TEXTURE_COORD_4 GL_MAP2_VERTEX_3 GL_MAP2_VERTEX_4 GL_MAP_COLOR GL_MAP_STENCIL GL_MATRIX_MODE GL_MAX_3D_TEXTURE_SIZE GL_MAX_ATTRIB_STACK_DEPTH GL_MAX_CLIENT_ATTRIB_STACK_DEPTH GL_MAX_CLIP_PLANES GL_MAX_COLOR_MATRIX_STACK_DEPTH GL_MAX_ELEMENTS_INDICES GL_MAX_ELEMENTS_VERTICES GL_MAX_EVAL_ORDER GL_MAX_LIGHTS GL_MAX_LIST_NESTING GL_MAX_MODELVIEW_STACK_DEPTH GL_MAX_NAME_STACK_DEPTH GL_MAX_PIXEL_MAP_TABLE GL_MAX_PROJECTION_STACK_DEPTH GL_MAX_TEXTURE_SIZE GL_MAX_TEXTURE_STACK_DEPTH GL_MAX_TEXTURE_UNITS_ARB GL_MAX_VIEWPORT_DIMS GL_MODELVIEW_MATRIX GL_MODELVIEW_STACK_DEPTH GL_NAME_STACK_DEPTH GL_NORMAL_ARRAY GL_NORMAL_ARRAY_STRIDE GL_NORMAL_ARRAY_TYPE GL_NORMALIZE GL_PACK_ALIGNMENT GL_PACK_IMAGE_HEIGHT GL_PACK_LSB_FIRST GL_PACK_ROW_LENGTH GL_PACK_SKIP_IMAGES GL_PACK_SKIP_PIXELS GL_PACK_SKIP_ROWS GL_PACK_SWAP_BYTES GL_PERSPECTIVE_CORRECTION_HINT GL_PIXEL_MAP_A_TO_A_SIZE GL_PIXEL_MAP_B_TO_B_SIZE GL_PIXEL_MAP_G_TO_G_SIZE GL_PIXEL_MAP_I_TO_A_SIZE GL_PIXEL_MAP_I_TO_B_SIZE GL_PIXEL_MAP_I_TO_G_SIZE GL_PIXEL_MAP_I_TO_I_SIZE GL_PIXEL_MAP_I_TO_R_SIZE GL_PIXEL_MAP_R_TO_R_SIZE GL_PIXEL_MAP_S_TO_S_SIZE GL_POINT_SIZE GL_POINT_SIZE_GRANULARITY GL_POINT_SIZE_RANGE GL_POINT_SMOOTH GL_POINT_SMOOTH_HINT GL_POLYGON_MODE GL_POLYGON_OFFSET_FACTOR GL_POLYGON_OFFSET_FILL GL_POLYGON_OFFSET_LINE GL_POLYGON_OFFSET_POINT GL_POLYGON_OFFSET_UNITS GL_POLYGON_SMOOTH GL_POLYGON_SMOOTH_HINT GL_POLYGON_STIPPLE GL_PROJECTION_MATRIX GL_PROJECTION_STACK_DEPTH GL_READ_BUFFER GL_RED_BIAS GL_RED_BITS GL_RED_SCALE GL_RENDER_MODE GL_RESCALE_NORMAL GL_RGBA_MODE GL_SCISSOR_BOX GL_SCISSOR_TEST GL_SELECTION_BUFFER_SIZE GL_SHADE_MODEL GL_SMOOTH_LINE_WIDTH_GRANULARITY GL_SMOOTH_LINE_WIDTH_RANGE GL_SMOOTH_POINT_SIZE_GRANULARITY GL_SMOOTH_POINT_SIZE_RANGE GL_STENCIL_BITS GL_STENCIL_CLEAR_VALUE GL_STENCIL_FAIL GL_STENCIL_FUNC GL_STENCIL_PASS_DEPTH_FAIL GL_STENCIL_PASS_DEPTH_PASS GL_STENCIL_REF GL_STENCIL_TEST GL_STENCIL_VALUE_MASK GL_STENCIL_WRITEMASK GL_STEREO GL_SUBPIXEL_BITS GL_TEXTURE_1D GL_TEXTURE_2D GL_TEXTURE_3D GL_TEXTURE_BINDING_1D GL_TEXTURE_BINDING_2D GL_TEXTURE_BINDING_3D GL_TEXTURE_COORD_ARRAY GL_TEXTURE_COORD_ARRAY_SIZE GL_TEXTURE_COORD_ARRAY_STRIDE GL_TEXTURE_COORD_ARRAY_TYPE GL_TEXTURE_GEN_Q GL_TEXTURE_GEN_R GL_TEXTURE_GEN_S GL_TEXTURE_GEN_T GL_TEXTURE_MATRIX GL_TEXTURE_STACK_DEPTH GL_UNPACK_ALIGNMENT GL_UNPACK_IMAGE_HEIGHT GL_UNPACK_LSB_FIRST GL_UNPACK_ROW_LENGTH GL_UNPACK_SKIP_IMAGES GL_UNPACK_SKIP_PIXELS GL_UNPACK_SKIP_ROWS GL_UNPACK_SWAP_BYTES GL_VERTEX_ARRAY GL_VERTEX_ARRAY_SIZE GL_VERTEX_ARRAY_STRIDE GL_VERTEX_ARRAY_TYPE GL_VIEWPORT GL_ZOOM_X GL_ZOOM_Y GL_CLIP_PLANE0 GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 GL_CLIP_PLANE5 GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 GL_LIGHT7 GL_MULTISAMPLE_ARB GL_SAMPLE_ALPHA_TO_COVERAGE_ARB GL_SAMPLE_ALPHA_TO_ONE_ARB GL_SAMPLE_COVERAGE_ARB GL_SAMPLE_BUFFERS_ARB GL_SAMPLES_ARB GL_SAMPLE_COVERAGE_VALUE_ARB GL_SAMPLE_COVERAGE_INVERT_ARB GL_POINT_SPRITE_ARB GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB GL_CLIP_VOLUME_CLIPPING_HINT_EXT GL_RASTER_POSITION_UNCLIPPED_IBM GL_GENERATE_MIPMAP_HINT_SGIS GL_FOG_DISTANCE_MODE_NV GL_TRANSPOSE_MODELVIEW_MATRIX_ARB GL_TRANSPOSE_PROJECTION_MATRIX_ARB GL_TRANSPOSE_TEXTURE_MATRIX_ARB GL_TRANSPOSE_COLOR_MATRIX_ARB GL_MAX_TEXTURE_LOD_BIAS_EXT GL_PER_STAGE_CONSTANTS_NV GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT GL_CURRENT_FOG_COORDINATE_EXT GL_FOG_COORDINATE_ARRAY_TYPE_EXT GL_FOG_COORDINATE_ARRAY_STRIDE_EXT GL_COLOR_SUM_EXT GL_CURRENT_SECONDARY_COLOR_EXT GL_SECONDARY_COLOR_ARRAY_SIZE_EXT GL_SECONDARY_COLOR_ARRAY_TYPE_EXT GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT GL_ARRAY_BUFFER_BINDING_ARB GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB GL_VERTEX_ARRAY_BUFFER_BINDING_ARB GL_NORMAL_ARRAY_BUFFER_BINDING_ARB GL_COLOR_ARRAY_BUFFER_BINDING_ARB GL_INDEX_ARRAY_BUFFER_BINDING_ARB GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB GL_TEXTURE_RECTANGLE_NV GL_TEXTURE_BINDING_RECTANGLE_NV GL_MAX_RECTANGLE_TEXTURE_SIZE_NV GL_FRAMEBUFFER_BINDING_EXT GL_RENDERBUFFER_BINDING_EXT GL_MAX_COLOR_ATTACHMENTS_EXT GL_MAX_RENDERBUFFER_SIZE_EXT GL_READ_FRAMEBUFFER_BINDING_EXT GL_DRAW_FRAMEBUFFER_BINDING_EXT GL_ACTIVE_STENCIL_FACE_EXT 2627 2627 param params GLint * 2628 2628 category 1.0 -
trunk/src/VBox/GuestHost/OpenGL/include/cr_version.h
r44290 r44326 20 20 #define SHCROGL_SSM_VERSION_WITH_STATE_BITS 33 21 21 #define SHCROGL_SSM_VERSION_WITH_WINDOW_CTX_USAGE 33 22 #define SHCROGL_SSM_VERSION 33 22 #define SHCROGL_SSM_VERSION_WITH_FIXED_STENCIL 34 23 #define SHCROGL_SSM_VERSION 34 23 24 24 25 /* These define the Chromium release number. -
trunk/src/VBox/GuestHost/OpenGL/include/state/cr_attrib.h
r41128 r44326 246 246 GLint clearValue; 247 247 GLint writeMask; 248 } CRStencilBufferStack_v_33; 249 250 typedef struct { 251 /* true if stencil test is enabled */ 252 GLboolean stencilTest; 253 /* true if GL_EXT_stencil_two_side is enabled (glEnable(GL_STENCIL_TEST_TWO_SIDE_EXT)) */ 254 GLboolean stencilTwoSideEXT; 255 /* GL_FRONT or GL_BACK */ 256 GLenum activeStencilFace; 257 GLint clearValue; 258 GLint writeMask; 259 CRStencilBufferState buffers[CRSTATE_STENCIL_BUFFER_COUNT]; 248 260 } CRStencilBufferStack; 249 261 -
trunk/src/VBox/GuestHost/OpenGL/include/state/cr_stencil.h
r15532 r44326 12 12 13 13 #include <iprt/cdefs.h> 14 #include <iprt/assert.h> 14 15 15 16 #ifdef __cplusplus … … 17 18 #endif 18 19 20 #define CRSTATE_STENCIL_BUFFER_ID_FRONT 0 21 #define CRSTATE_STENCIL_BUFFER_ID_BACK 1 22 #define CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK 2 23 #define CRSTATE_STENCIL_BUFFER_COUNT 3 24 25 /* stencil buffer settings were accessed with StencilXxx with ActiveStencilFaceEXT == GL_FRONT or StencilXxxSeparate(GL_FRONT_AND_BACK) */ 26 #define CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK 0 27 /* stencil buffer settings were accessed with StencilXxxSeparate(GL_FRONT_FRONT) */ 28 #define CRSTATE_STENCIL_BUFFER_REF_ID_FRONT 1 29 /* stencil buffer settings were accessed with StencilXxxSeparate(GL_FRONT_BACK) */ 30 #define CRSTATE_STENCIL_BUFFER_REF_ID_BACK 2 31 /* stencil buffer settings were accessed with StencilXxx with ActiveStencilFaceEXT == GL_BACK */ 32 #define CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK 3 33 #define CRSTATE_STENCIL_BUFFER_REF_COUNT 4 34 19 35 typedef struct { 20 CRbitvalue dirty[CR_MAX_BITARRAY]; 21 CRbitvalue enable[CR_MAX_BITARRAY]; 22 CRbitvalue func[CR_MAX_BITARRAY]; 23 CRbitvalue op[CR_MAX_BITARRAY]; 24 CRbitvalue clearValue[CR_MAX_BITARRAY]; 25 CRbitvalue writeMask[CR_MAX_BITARRAY]; 36 CRbitvalue dirty[CR_MAX_BITARRAY]; 37 CRbitvalue enable[CR_MAX_BITARRAY]; 38 CRbitvalue func[CR_MAX_BITARRAY]; 39 CRbitvalue op[CR_MAX_BITARRAY]; 40 CRbitvalue clearValue[CR_MAX_BITARRAY]; 41 CRbitvalue writeMask[CR_MAX_BITARRAY]; 42 } CRStencilBits_v_33; 43 44 typedef struct { 45 CRbitvalue func[CR_MAX_BITARRAY]; 46 CRbitvalue op[CR_MAX_BITARRAY]; 47 } CRStencilBufferRefBits; 48 49 typedef struct { 50 CRbitvalue dirty[CR_MAX_BITARRAY]; 51 CRbitvalue enable[CR_MAX_BITARRAY]; 52 CRbitvalue enableTwoSideEXT[CR_MAX_BITARRAY]; 53 CRbitvalue activeStencilFace[CR_MAX_BITARRAY]; 54 CRbitvalue clearValue[CR_MAX_BITARRAY]; 55 CRbitvalue writeMask[CR_MAX_BITARRAY]; 56 /* note: here we use _BUFFER_REF_ rather than _REF_ because we track the way buffers are accessed here, 57 * to ensure the correct function is called on hw->chromium state restoration, 58 * i.e. we want to avoid always calling StencilXxxSeparate, but call StencilXxx when it was actually called */ 59 CRStencilBufferRefBits bufferRefs[CRSTATE_STENCIL_BUFFER_REF_COUNT]; 26 60 } CRStencilBits; 27 61 28 62 typedef struct { 63 GLboolean stencilTest; 64 GLenum func; 65 GLint mask; 66 GLint ref; 67 GLenum fail; 68 GLenum passDepthFail; 69 GLenum passDepthPass; 70 GLint clearValue; 71 GLint writeMask; 72 } CRStencilState_v_33; 73 74 typedef struct { 75 GLenum func; 76 GLint mask; 77 GLint ref; 78 GLenum fail; 79 GLenum passDepthFail; 80 GLenum passDepthPass; 81 } CRStencilBufferState; 82 83 typedef struct { 84 /* true if stencil test is enabled */ 29 85 GLboolean stencilTest; 30 GLenum func; 31 GLint mask; 32 GLint ref; 33 GLenum fail; 34 GLenum passDepthFail; 35 GLenum passDepthPass; 36 GLint clearValue; 37 GLint writeMask; 86 /* true if GL_EXT_stencil_two_side is enabled (glEnable(GL_STENCIL_TEST_TWO_SIDE_EXT)) */ 87 GLboolean stencilTwoSideEXT; 88 /* GL_FRONT or GL_BACK */ 89 GLenum activeStencilFace; 90 GLint clearValue; 91 GLint writeMask; 92 CRStencilBufferState buffers[CRSTATE_STENCIL_BUFFER_COUNT]; 38 93 } CRStencilState; 39 94 40 95 DECLEXPORT(void) crStateStencilInit(CRContext *ctx); 96 DECLEXPORT(void) crStateStencilBufferInit(CRStencilBufferState *s); 41 97 42 98 DECLEXPORT(void) crStateStencilDiff(CRStencilBits *bb, CRbitvalue *bitID, -
trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_attrib.c
r31808 r44326 440 440 { 441 441 a->stencilBufferStack[a->stencilBufferStackDepth].stencilTest = g->stencil.stencilTest; 442 a->stencilBufferStack[a->stencilBufferStackDepth].func = g->stencil.func;443 a->stencilBufferStack[a->stencilBufferStackDepth].mask = g->stencil.mask;444 a->stencilBufferStack[a->stencilBufferStackDepth].ref = g->stencil.ref;445 a->stencilBufferStack[a->stencilBufferStackDepth].fail = g->stencil.fail;446 a->stencilBufferStack[a->stencilBufferStackDepth].passDepthFail = g->stencil.passDepthFail;447 a->stencilBufferStack[a->stencilBufferStackDepth].passDepthPass = g->stencil.passDepthPass;448 442 a->stencilBufferStack[a->stencilBufferStackDepth].clearValue = g->stencil.clearValue; 449 443 a->stencilBufferStack[a->stencilBufferStackDepth].writeMask = g->stencil.writeMask; 444 for (i = 0; i < CRSTATE_STENCIL_BUFFER_COUNT; ++i) 445 { 446 a->stencilBufferStack[a->stencilBufferStackDepth].buffers[i].func = g->stencil.buffers[i].func; 447 a->stencilBufferStack[a->stencilBufferStackDepth].buffers[i].mask = g->stencil.buffers[i].mask; 448 a->stencilBufferStack[a->stencilBufferStackDepth].buffers[i].ref = g->stencil.buffers[i].ref; 449 a->stencilBufferStack[a->stencilBufferStackDepth].buffers[i].fail = g->stencil.buffers[i].fail; 450 a->stencilBufferStack[a->stencilBufferStackDepth].buffers[i].passDepthFail = g->stencil.buffers[i].passDepthFail; 451 a->stencilBufferStack[a->stencilBufferStackDepth].buffers[i].passDepthPass = g->stencil.buffers[i].passDepthPass; 452 } 450 453 a->stencilBufferStackDepth++; 451 454 } … … 1034 1037 a->stencilBufferStackDepth--; 1035 1038 g->stencil.stencilTest = a->stencilBufferStack[a->stencilBufferStackDepth].stencilTest; 1036 g->stencil.func = a->stencilBufferStack[a->stencilBufferStackDepth].func;1037 g->stencil.mask = a->stencilBufferStack[a->stencilBufferStackDepth].mask;1038 g->stencil.ref = a->stencilBufferStack[a->stencilBufferStackDepth].ref;1039 g->stencil.fail = a->stencilBufferStack[a->stencilBufferStackDepth].fail;1040 g->stencil.passDepthFail = a->stencilBufferStack[a->stencilBufferStackDepth].passDepthFail;1041 g->stencil.passDepthPass = a->stencilBufferStack[a->stencilBufferStackDepth].passDepthPass;1042 1039 g->stencil.clearValue = a->stencilBufferStack[a->stencilBufferStackDepth].clearValue; 1043 1040 g->stencil.writeMask = a->stencilBufferStack[a->stencilBufferStackDepth].writeMask; 1041 for (i = 0; i < CRSTATE_STENCIL_BUFFER_COUNT; ++i) 1042 { 1043 g->stencil.buffers[i].func = a->stencilBufferStack[a->stencilBufferStackDepth].buffers[i].func; 1044 g->stencil.buffers[i].mask = a->stencilBufferStack[a->stencilBufferStackDepth].buffers[i].mask; 1045 g->stencil.buffers[i].ref = a->stencilBufferStack[a->stencilBufferStackDepth].buffers[i].ref; 1046 g->stencil.buffers[i].fail = a->stencilBufferStack[a->stencilBufferStackDepth].buffers[i].fail; 1047 g->stencil.buffers[i].passDepthFail = a->stencilBufferStack[a->stencilBufferStackDepth].buffers[i].passDepthFail; 1048 g->stencil.buffers[i].passDepthPass = a->stencilBufferStack[a->stencilBufferStackDepth].buffers[i].passDepthPass; 1049 } 1050 1044 1051 DIRTY(sb->stencil.dirty, g->neg_bitid); 1045 1052 DIRTY(sb->stencil.enable, g->neg_bitid); 1046 DIRTY(sb->stencil.func, g->neg_bitid);1047 DIRTY(sb->stencil.op, g->neg_bitid);1048 1053 DIRTY(sb->stencil.clearValue, g->neg_bitid); 1049 1054 DIRTY(sb->stencil.writeMask, g->neg_bitid); 1055 1056 for (i = 0; i < CRSTATE_STENCIL_BUFFER_REF_COUNT; ++i) 1057 { 1058 DIRTY(sb->stencil.bufferRefs[i].func, g->neg_bitid); 1059 DIRTY(sb->stencil.bufferRefs[i].op, g->neg_bitid); 1060 } 1050 1061 } 1051 1062 if (mask & GL_TEXTURE_BIT) -
trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_bits_globalop.h
r44290 r44326 19 19 #include <iprt/cdefs.h> 20 20 21 #include <cr_version.h> 22 21 23 #ifndef CRSTATE_BITS_OP 22 24 # error "CRSTATE_BITS_OP must be defined!" … … 25 27 #define _CRSTATE_BITS_OP_SIZEOF(_val) CRSTATE_BITS_OP(_val, RT_SIZEOFMEMB(CRStateBits, _val)) 26 28 29 #ifndef CRSTATE_BITS_OP_VERSION 30 # define CRSTATE_BITS_OP_VERSION SHCROGL_SSM_VERSION 31 #endif 32 27 33 do { 28 34 int i; 35 #ifdef _CRSTATE_BITS_OP_STENCIL_V_33 36 # error "_CRSTATE_BITS_OP_STENCIL_V_33 must no be defined!" 37 #endif 38 #if CRSTATE_BITS_OP_VERSION < SHCROGL_SSM_VERSION_WITH_FIXED_STENCIL 39 # define _CRSTATE_BITS_OP_STENCIL_V_33 40 #endif 41 42 #ifdef _CRSTATE_BITS_OP_STENCIL_V_33 43 # ifndef CRSTATE_BITS_OP_STENCIL_OP_V_33 44 # error "CRSTATE_BITS_OP_STENCIL_OP_V_33 undefined!" 45 # endif 46 # ifndef CRSTATE_BITS_OP_STENCIL_FUNC_V_33 47 # error "CRSTATE_BITS_OP_STENCIL_FUNC_V_33 undefined!" 48 # endif 49 #endif 50 29 51 _CRSTATE_BITS_OP_SIZEOF(attrib.dirty); 30 52 … … 258 280 _CRSTATE_BITS_OP_SIZEOF(stencil.dirty); 259 281 _CRSTATE_BITS_OP_SIZEOF(stencil.enable); 260 _CRSTATE_BITS_OP_SIZEOF(stencil.func); 261 _CRSTATE_BITS_OP_SIZEOF(stencil.op); 282 #ifdef _CRSTATE_BITS_OP_STENCIL_V_33 283 _CRSTATE_BITS_OP_SIZEOF(stencil.bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK].func); 284 _CRSTATE_BITS_OP_SIZEOF(stencil.bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK].op); 285 for (i = CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK + 1; i < CRSTATE_STENCIL_BUFFER_REF_COUNT; ++i) 286 { 287 CRSTATE_BITS_OP_STENCIL_FUNC_V_33(i, stencil.bufferRefs[i].func); 288 CRSTATE_BITS_OP_STENCIL_OP_V_33(i, stencil.bufferRefs[i].op); 289 } 262 290 _CRSTATE_BITS_OP_SIZEOF(stencil.clearValue); 263 291 _CRSTATE_BITS_OP_SIZEOF(stencil.writeMask); 292 #else 293 _CRSTATE_BITS_OP_SIZEOF(stencil.enableTwoSideEXT); 294 _CRSTATE_BITS_OP_SIZEOF(stencil.activeStencilFace); 295 _CRSTATE_BITS_OP_SIZEOF(stencil.clearValue); 296 _CRSTATE_BITS_OP_SIZEOF(stencil.writeMask); 297 for (i = 0; i < CRSTATE_STENCIL_BUFFER_REF_COUNT; ++i) 298 { 299 _CRSTATE_BITS_OP_SIZEOF(stencil.bufferRefs[i].func); 300 _CRSTATE_BITS_OP_SIZEOF(stencil.bufferRefs[i].op); 301 } 302 #endif 264 303 265 304 _CRSTATE_BITS_OP_SIZEOF(texture.dirty); … … 292 331 293 332 } while (0); 333 334 #undef CRSTATE_BITS_OP_VERSION 335 #undef _CRSTATE_BITS_OP_STENCIL_V_33 -
trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_enable.c
r15532 r44326 497 497 crStateDisableClientState(cap); 498 498 break; 499 #ifdef CR_EXT_stencil_two_side 500 case GL_STENCIL_TEST_TWO_SIDE_EXT: 501 g->stencil.stencilTwoSideEXT= val; 502 DIRTY(sb->stencil.enableTwoSideEXT, neg_bitid); 503 DIRTY(sb->stencil.dirty, neg_bitid); 504 break; 505 #endif 499 506 default: 500 507 crStateError(__LINE__, __FILE__, GL_INVALID_ENUM, "glEnable/glDisable called with bogus cap: 0x%x", cap); -
trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_get.txt
r31808 r44326 234 234 235 235 GLint GL_STENCIL_CLEAR_VALUE g->stencil.clearValue 236 GLint GL_STENCIL_FAIL g->stencil.fail 237 GLint GL_STENCIL_FUNC g->stencil.func 238 GLint GL_STENCIL_PASS_DEPTH_FAIL g->stencil.passDepthFail 239 GLint GL_STENCIL_PASS_DEPTH_PASS g->stencil.passDepthPass 240 GLint GL_STENCIL_REF g->stencil.ref 236 GLint GL_STENCIL_FAIL g->stencil.buffers[g->stencil.activeStencilFace==GL_FRONT?CRSTATE_STENCIL_BUFFER_ID_FRONT:CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].fail 237 GLint GL_STENCIL_BACK_FAIL g->stencil.buffers[g->stencil.activeStencilFace==GL_FRONT?CRSTATE_STENCIL_BUFFER_ID_BACK:CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].fail 238 GLint GL_STENCIL_FUNC g->stencil.buffers[g->stencil.activeStencilFace==GL_FRONT?CRSTATE_STENCIL_BUFFER_ID_FRONT:CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].func 239 GLint GL_STENCIL_BACK_FUNC g->stencil.buffers[g->stencil.activeStencilFace==GL_FRONT?CRSTATE_STENCIL_BUFFER_ID_BACK:CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].func 240 GLint GL_STENCIL_PASS_DEPTH_FAIL g->stencil.buffers[g->stencil.activeStencilFace==GL_FRONT?CRSTATE_STENCIL_BUFFER_ID_FRONT:CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].passDepthFail 241 GLint GL_STENCIL_BACK_PASS_DEPTH_FAIL g->stencil.buffers[g->stencil.activeStencilFace==GL_FRONT?CRSTATE_STENCIL_BUFFER_ID_BACK:CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].passDepthFail 242 GLint GL_STENCIL_PASS_DEPTH_PASS g->stencil.buffers[g->stencil.activeStencilFace==GL_FRONT?CRSTATE_STENCIL_BUFFER_ID_FRONT:CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].passDepthPass 243 GLint GL_STENCIL_BACK_PASS_DEPTH_PASS g->stencil.buffers[g->stencil.activeStencilFace==GL_FRONT?CRSTATE_STENCIL_BUFFER_ID_BACK:CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].passDepthPass 244 GLint GL_STENCIL_REF g->stencil.buffers[g->stencil.activeStencilFace==GL_FRONT?CRSTATE_STENCIL_BUFFER_ID_FRONT:CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].ref 245 GLint GL_STENCIL_BACK_REF g->stencil.buffers[g->stencil.activeStencilFace==GL_FRONT?CRSTATE_STENCIL_BUFFER_ID_BACK:CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].ref 241 246 GLboolean GL_STENCIL_TEST g->stencil.stencilTest 242 GLint GL_STENCIL_VALUE_MASK g->stencil.mask 247 GLint GL_STENCIL_VALUE_MASK g->stencil.buffers[g->stencil.activeStencilFace==GL_FRONT?CRSTATE_STENCIL_BUFFER_ID_FRONT:CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].mask 248 GLint GL_STENCIL_BACK_VALUE_MASK g->stencil.buffers[g->stencil.activeStencilFace==GL_FRONT?CRSTATE_STENCIL_BUFFER_ID_BACK:CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].mask 243 249 GLint GL_STENCIL_WRITEMASK g->stencil.writeMask 244 250 … … 309 315 GLint GL_ARRAY_ELEMENT_LOCK_FIRST_EXT g->client.array.lockFirst 310 316 GLint GL_ARRAY_ELEMENT_LOCK_COUNT_EXT g->client.array.lockCount 317 318 GLint GL_ACTIVE_STENCIL_FACE_EXT g->stencil.activeStencilFace -
trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_init.c
r44290 r44326 348 348 { 349 349 CRASSERT(g_pAvailableContexts[ctx->id] == ctx); 350 if ( ctx->id || ctx == defaultContext)350 if (g_pAvailableContexts[ctx->id] == ctx) 351 351 { 352 352 g_pAvailableContexts[ctx->id] = NULL; 353 353 --g_cContexts; 354 354 CRASSERT(g_cContexts < RT_ELEMENTS(g_pAvailableContexts)); 355 } 356 else 357 { 358 crWarning("freeing context 0x%x, id(%d) not being in the context list", ctx, ctx->id); 355 359 } 356 360 … … 406 410 for (i=0;i<CR_MAX_CONTEXTS;i++) 407 411 g_pAvailableContexts[i] = NULL; 412 g_cContexts = 0; 408 413 409 414 #ifdef CHROMIUM_THREADSAFE -
trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_lists.c
r44117 r44326 296 296 if (CHECKDIRTY(sb->stencil.dirty, negbitID)) 297 297 { 298 GLenum activeFace; 299 GLboolean backIsSet = GL_FALSE, frontIsSet = GL_FALSE; 300 298 301 if (CHECKDIRTY(sb->stencil.enable, negbitID)) 299 302 { … … 301 304 } 302 305 303 if (CHECKDIRTY(sb->stencil.func, negbitID)) 304 { 305 CRSTATE_SET_ENUM(stencil.func, GL_STENCIL_FUNC); 306 CRSTATE_SET_INT(stencil.ref, GL_STENCIL_REF); 307 CRSTATE_SET_INT(stencil.mask, GL_STENCIL_VALUE_MASK); 308 } 309 310 if (CHECKDIRTY(sb->stencil.op, negbitID)) 311 { 312 CRSTATE_SET_ENUM(stencil.fail, GL_STENCIL_FAIL); 313 CRSTATE_SET_ENUM(stencil.passDepthFail, GL_STENCIL_PASS_DEPTH_FAIL); 314 CRSTATE_SET_ENUM(stencil.passDepthPass, GL_STENCIL_PASS_DEPTH_PASS); 306 if (CHECKDIRTY(sb->stencil.enableTwoSideEXT, negbitID)) 307 { 308 CRSTATE_SET_ENABLED(stencil.stencilTwoSideEXT, GL_STENCIL_TEST_TWO_SIDE_EXT); 309 } 310 311 if (CHECKDIRTY(sb->stencil.activeStencilFace, negbitID)) 312 { 313 CRSTATE_SET_ENUM(stencil.activeStencilFace, GL_ACTIVE_STENCIL_FACE_EXT); 314 } 315 316 activeFace = g->stencil.activeStencilFace; 317 318 319 #define CRSTATE_SET_STENCIL_FUNC(_idx, _suff) do { \ 320 CRSTATE_SET_ENUM(stencil.buffers[(_idx)].func, GL_STENCIL##_suff##FUNC); \ 321 CRSTATE_SET_INT(stencil.buffers[(_idx)].ref, GL_STENCIL##_suff##REF); \ 322 CRSTATE_SET_INT(stencil.buffers[(_idx)].mask, GL_STENCIL##_suff##VALUE_MASK); \ 323 } while (0) 324 325 #define CRSTATE_SET_STENCIL_OP(_idx, _suff) do { \ 326 CRSTATE_SET_ENUM(stencil.buffers[(_idx)].fail, GL_STENCIL##_suff##FAIL); \ 327 CRSTATE_SET_ENUM(stencil.buffers[(_idx)].passDepthFail, GL_STENCIL##_suff##PASS_DEPTH_FAIL); \ 328 CRSTATE_SET_ENUM(stencil.buffers[(_idx)].passDepthPass, GL_STENCIL##_suff##PASS_DEPTH_PASS); \ 329 } while (0) 330 331 /* func */ 332 333 if (CHECKDIRTY(sb->stencil.bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_BACK].func, negbitID)) 334 { 335 /* this if branch is not needed here actually, just in case ogl drivers misbehave */ 336 if (activeFace == GL_BACK) 337 { 338 diff_api.ActiveStencilFaceEXT(GL_FRONT); 339 activeFace = GL_FRONT; 340 } 341 342 CRSTATE_SET_STENCIL_FUNC(CRSTATE_STENCIL_BUFFER_ID_BACK, _BACK_); 343 backIsSet = GL_TRUE; 344 } 345 346 if (CHECKDIRTY(sb->stencil.bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT].func, negbitID)) 347 { 348 if (activeFace == GL_BACK) 349 { 350 diff_api.ActiveStencilFaceEXT(GL_FRONT); 351 activeFace = GL_FRONT; 352 } 353 CRSTATE_SET_STENCIL_FUNC(CRSTATE_STENCIL_BUFFER_ID_FRONT, _); 354 frontIsSet = GL_TRUE; 355 } 356 357 if ((!frontIsSet || !backIsSet) && CHECKDIRTY(sb->stencil.bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK].func, negbitID)) 358 { 359 if (activeFace == GL_BACK) 360 { 361 diff_api.ActiveStencilFaceEXT(GL_FRONT); 362 activeFace = GL_FRONT; 363 } 364 CRSTATE_SET_STENCIL_FUNC(CRSTATE_STENCIL_BUFFER_ID_FRONT, _); 365 if (!backIsSet) 366 { 367 g->stencil.buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].func = g->stencil.buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func; 368 g->stencil.buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].ref = g->stencil.buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref; 369 g->stencil.buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].mask = g->stencil.buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask; 370 } 371 } 372 373 /* op */ 374 backIsSet = GL_FALSE, frontIsSet = GL_FALSE; 375 376 if (CHECKDIRTY(sb->stencil.bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_BACK].op, negbitID)) 377 { 378 /* this if branch is not needed here actually, just in case ogl drivers misbehave */ 379 if (activeFace == GL_BACK) 380 { 381 diff_api.ActiveStencilFaceEXT(GL_FRONT); 382 activeFace = GL_FRONT; 383 } 384 385 CRSTATE_SET_STENCIL_OP(CRSTATE_STENCIL_BUFFER_ID_BACK, _BACK_); 386 backIsSet = GL_TRUE; 387 } 388 389 if (CHECKDIRTY(sb->stencil.bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT].op, negbitID)) 390 { 391 if (activeFace == GL_BACK) 392 { 393 diff_api.ActiveStencilFaceEXT(GL_FRONT); 394 activeFace = GL_FRONT; 395 } 396 CRSTATE_SET_STENCIL_OP(CRSTATE_STENCIL_BUFFER_ID_FRONT, _); 397 frontIsSet = GL_TRUE; 398 } 399 400 if ((!frontIsSet || !backIsSet) && CHECKDIRTY(sb->stencil.bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK].op, negbitID)) 401 { 402 if (activeFace == GL_BACK) 403 { 404 diff_api.ActiveStencilFaceEXT(GL_FRONT); 405 activeFace = GL_FRONT; 406 } 407 CRSTATE_SET_STENCIL_OP(CRSTATE_STENCIL_BUFFER_ID_FRONT, _); 408 if (!backIsSet) 409 { 410 g->stencil.buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].fail = g->stencil.buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail; 411 g->stencil.buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthFail = g->stencil.buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail; 412 g->stencil.buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthPass = g->stencil.buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass; 413 } 315 414 } 316 415 -
trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_snapshot.c
r44290 r44326 86 86 } while (0) 87 87 88 #define SHCROGL_ROUNDBOUND(_v, _b) (((_v) + ((_b) - 1)) & ~((_b) - 1)) 89 #define SHCROGL_ALIGNTAILSIZE(_v, _b) (SHCROGL_ROUNDBOUND((_v),(_b)) - (_v)) 90 #define SHCROGL_CUT_FOR_OLD_TYPE_TO_ENSURE_ALIGNMENT_SIZE(_type, _field, _oldFieldType, _nextFieldAllignment) (SHCROGL_ALIGNTAILSIZE(((RT_OFFSETOF(_type, _field) + sizeof (_oldFieldType))), (_nextFieldAllignment))) 91 #define SHCROGL_CUT_FOR_OLD_TYPE_TO_ENSURE_ALIGNMENT(_type, _field, _oldFieldType, _nextFieldAllignment) do { \ 92 const int32_t cbAlignment = SHCROGL_CUT_FOR_OLD_TYPE_TO_ENSURE_ALIGNMENT_SIZE(_type, _field, _oldFieldType, _nextFieldAllignment); \ 93 /*AssertCompile(SHCROGL_CUT_TAIL_ALIGNMENT_SIZE(_type, _lastField) >= 0 && SHCROGL_CUT_TAIL_ALIGNMENT_SIZE(_type, _lastField) < sizeof (void*));*/ \ 94 if (cbAlignment) { \ 95 rc = SSMR3Skip(pSSM, cbAlignment); \ 96 } \ 97 } while (0) 98 99 88 100 #define SHCROGL_CUT_TAIL_ALIGNMENT_SIZE(_type, _lastField) (sizeof (_type) - RT_OFFSETOF(_type, _lastField) - RT_SIZEOFMEMB(_type, _lastField)) 89 101 #define SHCROGL_CUT_TAIL_ALIGNMENT(_type, _lastField) do { \ … … 140 152 } 141 153 154 static int32_t crStateLoadStencilState_v_33(CRStencilState *s, PSSMHANDLE pSSM) 155 { 156 CRStencilState_v_33 stencilV33; 157 int32_t rc = SSMR3GetMem(pSSM, &stencilV33, sizeof (stencilV33)); 158 AssertRCReturn(rc, rc); 159 s->stencilTest = stencilV33.stencilTest; 160 s->stencilTwoSideEXT = GL_FALSE; 161 s->activeStencilFace = GL_FRONT; 162 s->clearValue = stencilV33.clearValue; 163 s->writeMask = stencilV33.writeMask; 164 s->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func = stencilV33.func; 165 s->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask = stencilV33.mask; 166 s->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref = stencilV33.ref; 167 s->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail = stencilV33.fail; 168 s->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail = stencilV33.passDepthFail; 169 s->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass = stencilV33.passDepthPass; 170 s->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK] = s->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT]; 171 crStateStencilBufferInit(&s->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK]); 172 return VINF_SUCCESS; 173 } 174 142 175 static int32_t crStateLoadTextureState_v_BEFORE_CTXUSAGE_BITS(CRTextureState *t, PSSMHANDLE pSSM) 143 176 { … … 203 236 SHCROGL_CUT_TAIL_ALIGNMENT(CRTextureState, unit); 204 237 238 return VINF_SUCCESS; 239 } 240 241 static int32_t crStateStencilBufferStack_v_33(CRStencilBufferStack *s, PSSMHANDLE pSSM) 242 { 243 CRStencilBufferStack_v_33 stackV33; 244 int32_t rc = SSMR3GetMem(pSSM, &stackV33, sizeof (stackV33)); 245 246 s->stencilTest = stackV33.stencilTest; 247 s->stencilTwoSideEXT = GL_FALSE; 248 s->activeStencilFace = GL_FRONT; 249 s->clearValue = stackV33.clearValue; 250 s->writeMask = stackV33.writeMask; 251 s->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func = stackV33.func; 252 s->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask = stackV33.mask; 253 s->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref = stackV33.ref; 254 s->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail = stackV33.fail; 255 s->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail = stackV33.passDepthFail; 256 s->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass = stackV33.passDepthPass; 257 s->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK] = s->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT]; 258 259 s->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].func = GL_ALWAYS; 260 s->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].mask = 0xFFFFFFFF; 261 s->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].ref = 0; 262 s->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].fail = GL_KEEP; 263 s->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].passDepthFail = GL_KEEP; 264 s->buffers[CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK].passDepthPass = GL_KEEP; 265 266 return VINF_SUCCESS; 267 } 268 269 static int32_t crStateLoadAttribState_v_33(CRAttribState *t, PSSMHANDLE pSSM) 270 { 271 int32_t i, rc; 272 SHCROGL_GET_STRUCT_HEAD(t, CRAttribState, stencilBufferStack); 273 for (i = 0; i < CR_MAX_ATTRIB_STACK_DEPTH; ++i) 274 { 275 rc = crStateStencilBufferStack_v_33(&t->stencilBufferStack[i], pSSM); 276 AssertRCReturn(rc, rc); 277 } 278 SHCROGL_GET_STRUCT_TAIL(t, CRAttribState, textureStackDepth); 205 279 return rc; 206 280 } … … 222 296 { 223 297 int32_t i, rc; 224 SHCROGL_GET_STRUCT_HEAD(t, CRAttribState, textureStack); 298 299 SHCROGL_GET_STRUCT_HEAD(t, CRAttribState, stencilBufferStack); 300 for (i = 0; i < CR_MAX_ATTRIB_STACK_DEPTH; ++i) 301 { 302 rc = crStateStencilBufferStack_v_33(&t->stencilBufferStack[i], pSSM); 303 AssertRCReturn(rc, rc); 304 } 305 SHCROGL_GET_STRUCT_PART(t, CRAttribState, textureStackDepth, textureStack); 225 306 for (i = 0; i < CR_MAX_ATTRIB_STACK_DEPTH; ++i) 226 307 { … … 1650 1731 rc = SSMR3GetMem(pSSM, (pBits->_var), _size); \ 1651 1732 AssertRCReturn(rc, rc); 1733 1734 if (u32Version < SHCROGL_SSM_VERSION_WITH_FIXED_STENCIL) 1735 { 1736 #define CRSTATE_BITS_OP_VERSION (SHCROGL_SSM_VERSION_WITH_FIXED_STENCIL - 1) 1737 #define CRSTATE_BITS_OP_STENCIL_FUNC_V_33(_i, _var) do {} while (0) 1738 #define CRSTATE_BITS_OP_STENCIL_OP_V_33(_i, _var) do {} while (0) 1652 1739 #include "state_bits_globalop.h" 1740 #undef CRSTATE_BITS_OP_VERSION 1741 #undef CRSTATE_BITS_OP_STENCIL_FUNC_V_33 1742 #undef CRSTATE_BITS_OP_STENCIL_OP_V_33 1743 } 1744 else 1745 { 1746 #include "state_bits_globalop.h" 1747 } 1653 1748 #undef CRSTATE_BITS_OP 1654 1749 return VINF_SUCCESS; … … 1745 1840 AssertRCReturn(rc, rc); 1746 1841 SHCROGL_CUT_FIELD_ALIGNMENT(CRContext, attrib, buffer); 1747 SHCROGL_GET_STRUCT_PART(pTmpContext, CRContext, buffer, texture); 1842 SHCROGL_GET_STRUCT_PART(pTmpContext, CRContext, buffer, stencil); 1843 rc = crStateLoadStencilState_v_33(&pTmpContext->stencil, pSSM); 1844 AssertRCReturn(rc, rc); 1845 SHCROGL_CUT_FOR_OLD_TYPE_TO_ENSURE_ALIGNMENT(CRContext, stencil, CRStencilState_v_33, sizeof (void*)); 1748 1846 rc = crStateLoadTextureState_v_BEFORE_CTXUSAGE_BITS(&pTmpContext->texture, pSSM); 1749 1847 AssertRCReturn(rc, rc); … … 1753 1851 else 1754 1852 { 1755 SHCROGL_GET_STRUCT_TAIL(pTmpContext, CRContext, shared); 1853 SHCROGL_GET_STRUCT_PART(pTmpContext, CRContext, shared, attrib); 1854 rc = crStateLoadAttribState_v_33(&pTmpContext->attrib, pSSM); 1855 AssertRCReturn(rc, rc); 1856 SHCROGL_CUT_FIELD_ALIGNMENT(CRContext, attrib, buffer); 1857 SHCROGL_GET_STRUCT_PART(pTmpContext, CRContext, buffer, stencil); 1858 rc = crStateLoadStencilState_v_33(&pTmpContext->stencil, pSSM); 1859 AssertRCReturn(rc, rc); 1860 SHCROGL_CUT_FOR_OLD_TYPE_TO_ENSURE_ALIGNMENT(CRContext, stencil, CRStencilState_v_33, sizeof (void*)); 1861 SHCROGL_GET_STRUCT_TAIL(pTmpContext, CRContext, texture); 1756 1862 } 1757 1863 1758 1864 pTmpContext->error = GL_NO_ERROR; /* <- the error state contained some random error data here 1759 1865 * treat as no error */ 1866 } 1867 else if (u32Version < SHCROGL_SSM_VERSION_WITH_FIXED_STENCIL) 1868 { 1869 SHCROGL_GET_STRUCT_HEAD(pTmpContext, CRContext, attrib); 1870 rc = crStateLoadAttribState_v_33(&pTmpContext->attrib, pSSM); 1871 AssertRCReturn(rc, rc); 1872 SHCROGL_CUT_FIELD_ALIGNMENT(CRContext, attrib, buffer); 1873 SHCROGL_GET_STRUCT_PART(pTmpContext, CRContext, buffer, stencil); 1874 rc = crStateLoadStencilState_v_33(&pTmpContext->stencil, pSSM); 1875 AssertRCReturn(rc, rc); 1876 SHCROGL_CUT_FOR_OLD_TYPE_TO_ENSURE_ALIGNMENT(CRContext, stencil, CRStencilState_v_33, sizeof (void*)); 1877 SHCROGL_GET_STRUCT_TAIL(pTmpContext, CRContext, texture); 1760 1878 } 1761 1879 else -
trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_special
r44083 r44326 158 158 StencilFunc 159 159 StencilOp 160 StencilFuncSeparate 161 StencilOpSeparate 162 ActiveStencilFaceEXT 160 163 ClearStencil 161 164 StencilMask -
trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_stencil.c
r15532 r44326 10 10 #include "state_internals.h" 11 11 12 13 static GLint crStateStencilBufferGetIdxAndCount(CRStencilState *s, GLenum face, GLint *pIdx, GLint *pBitsIdx) 14 { 15 switch (face) 16 { 17 case GL_FRONT_AND_BACK: 18 *pIdx = 0; 19 *pBitsIdx = CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK; 20 return 2; 21 case GL_FRONT: 22 *pIdx = CRSTATE_STENCIL_BUFFER_ID_FRONT; 23 *pBitsIdx = CRSTATE_STENCIL_BUFFER_REF_ID_FRONT; 24 return 1; 25 case GL_BACK: 26 *pIdx = CRSTATE_STENCIL_BUFFER_ID_BACK; 27 *pBitsIdx = CRSTATE_STENCIL_BUFFER_REF_ID_BACK; 28 return 1; 29 case 0: 30 if (!s->stencilTwoSideEXT || s->activeStencilFace == GL_FRONT) 31 { 32 /* both front and back */ 33 *pIdx = 0; 34 *pBitsIdx = CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK; 35 return 2; 36 } 37 *pIdx = CRSTATE_STENCIL_BUFFER_ID_TWO_SIDE_BACK; 38 *pBitsIdx = CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK; 39 return 1; 40 default: 41 crStateError(__LINE__,__FILE__,GL_INVALID_ENUM, "crStateStencilBufferGetIdxAndCount"); 42 return 0; 43 } 44 crError("should never be here!"); 45 return 0; 46 } 47 48 void crStateStencilBufferInit(CRStencilBufferState *s) 49 { 50 s->func = GL_ALWAYS; 51 s->mask = 0xFFFFFFFF; 52 s->ref = 0; 53 54 s->fail = GL_KEEP; 55 s->passDepthFail = GL_KEEP; 56 s->passDepthPass = GL_KEEP; 57 } 58 59 static void crStateStencilBufferRefBitsInit(CRContext *ctx, CRStencilBufferRefBits *sb) 60 { 61 RESET(sb->func, ctx->bitid); 62 RESET(sb->op, ctx->bitid); 63 } 64 12 65 void crStateStencilInit(CRContext *ctx) 13 66 { … … 15 68 CRStateBits *stateb = GetCurrentBits(); 16 69 CRStencilBits *sb = &(stateb->stencil); 70 int i; 17 71 18 72 s->stencilTest = GL_FALSE; 19 73 RESET(sb->enable, ctx->bitid); 20 74 21 s->func = GL_ALWAYS; 22 s->mask = 0xFFFFFFFF; 23 s->ref = 0; 24 RESET(sb->func, ctx->bitid); 25 26 s->fail = GL_KEEP; 27 s->passDepthFail = GL_KEEP; 28 s->passDepthPass = GL_KEEP; 29 RESET(sb->op, ctx->bitid); 75 s->stencilTwoSideEXT = GL_FALSE; 76 RESET(sb->enableTwoSideEXT, ctx->bitid); 77 78 s->activeStencilFace = GL_FRONT; 79 RESET(sb->activeStencilFace, ctx->bitid); 30 80 31 81 s->clearValue = 0; … … 36 86 37 87 RESET(sb->dirty, ctx->bitid); 38 } 39 40 void STATE_APIENTRY crStateStencilFunc(GLenum func, GLint ref, GLuint mask) 88 89 for (i = 0; i < CRSTATE_STENCIL_BUFFER_COUNT; ++i) 90 { 91 crStateStencilBufferInit(&s->buffers[i]); 92 } 93 94 for (i = 0; i < CRSTATE_STENCIL_BUFFER_REF_COUNT; ++i) 95 { 96 crStateStencilBufferRefBitsInit(ctx, &sb->bufferRefs[i]); 97 } 98 } 99 100 static void crStateStencilBufferFunc(CRContext *g, CRStencilBufferState *s, GLenum func, GLint ref, GLuint mask) 101 { 102 s->func = func; 103 s->ref = ref; 104 s->mask = mask; 105 } 106 107 static void crStateStencilFuncPerform(GLenum face, GLenum func, GLint ref, GLuint mask) 108 { 109 CRContext *g = GetCurrentContext(); 110 CRStencilState *s = &(g->stencil); 111 CRStateBits *stateb = GetCurrentBits(); 112 CRStencilBits *sb = &(stateb->stencil); 113 GLint idx, bitsIdx, count, i; 114 115 116 if (g->current.inBeginEnd) 117 { 118 crStateError(__LINE__, __FILE__, GL_INVALID_OPERATION, 119 "glStencilFunc called in begin/end"); 120 return; 121 } 122 123 FLUSH(); 124 125 if (func != GL_NEVER && 126 func != GL_LESS && 127 func != GL_LEQUAL && 128 func != GL_GREATER && 129 func != GL_GEQUAL && 130 func != GL_EQUAL && 131 func != GL_NOTEQUAL && 132 func != GL_ALWAYS) 133 { 134 crStateError(__LINE__, __FILE__, GL_INVALID_ENUM, 135 "glStencilFunc called with bogu func: %d", func); 136 return; 137 } 138 139 count = crStateStencilBufferGetIdxAndCount(s, face, &idx, &bitsIdx); 140 if (count) 141 { 142 for (i = idx; i < idx + count; ++i) 143 { 144 crStateStencilBufferFunc(g, &s->buffers[i], func, ref, mask); 145 } 146 DIRTY(sb->bufferRefs[bitsIdx].func, g->neg_bitid); 147 148 DIRTY(sb->dirty, g->neg_bitid); 149 } 150 } 151 152 void STATE_APIENTRY crStateStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) 153 { 154 if (!face) 155 { 156 /* crStateStencilFuncPerform accepts 0 value, while glStencilFuncSeparate does not, 157 * filter it out here */ 158 crStateError(__LINE__,__FILE__,GL_INVALID_ENUM, "crStateStencilFuncSeparate"); 159 return; 160 } 161 crStateStencilFuncPerform(face, func, ref, mask); 162 } 163 164 void STATE_APIENTRY crStateStencilFunc(GLenum func, GLint ref, GLuint mask) 165 { 166 crStateStencilFuncPerform(0, func, ref, mask); 167 } 168 169 static void STATE_APIENTRY crStateStencilBufferOp (CRContext *g, CRStencilBufferState *s, GLenum fail, GLenum zfail, GLenum zpass) 170 { 171 s->fail = fail; 172 s->passDepthFail = zfail; 173 s->passDepthPass = zpass; 174 } 175 176 static void crStateStencilOpPerform (GLenum face, GLenum fail, GLenum zfail, GLenum zpass) 41 177 { 42 178 CRContext *g = GetCurrentContext(); … … 44 180 CRStateBits *stateb = GetCurrentBits(); 45 181 CRStencilBits *sb = &(stateb->stencil); 46 47 48 if (g->current.inBeginEnd) 49 { 50 crStateError(__LINE__, __FILE__, GL_INVALID_OPERATION, 51 "glStencilFunc called in begin/end"); 52 return; 53 } 54 55 FLUSH(); 56 57 if (func != GL_NEVER && 58 func != GL_LESS && 59 func != GL_LEQUAL && 60 func != GL_GREATER && 61 func != GL_GEQUAL && 62 func != GL_EQUAL && 63 func != GL_NOTEQUAL && 64 func != GL_ALWAYS) 65 { 66 crStateError(__LINE__, __FILE__, GL_INVALID_ENUM, 67 "glStencilFunc called with bogu func: %d", func); 68 return; 69 } 70 71 s->func = func; 72 s->ref = ref; 73 s->mask = mask; 74 75 DIRTY(sb->func, g->neg_bitid); 76 DIRTY(sb->dirty, g->neg_bitid); 77 } 78 79 void STATE_APIENTRY crStateStencilOp (GLenum fail, GLenum zfail, GLenum zpass) 80 { 81 CRContext *g = GetCurrentContext(); 82 CRStencilState *s = &(g->stencil); 83 CRStateBits *stateb = GetCurrentBits(); 84 CRStencilBits *sb = &(stateb->stencil); 182 GLint idx, bitsIdx, count, i; 85 183 86 184 if (g->current.inBeginEnd) … … 147 245 } 148 246 149 s->fail = fail; 150 s->passDepthFail = zfail; 151 s->passDepthPass = zpass; 152 153 DIRTY(sb->op, g->neg_bitid); 154 DIRTY(sb->dirty, g->neg_bitid); 155 } 156 247 count = crStateStencilBufferGetIdxAndCount(s, face, &idx, &bitsIdx); 248 if (count) 249 { 250 for (i = idx; i < idx + count; ++i) 251 { 252 crStateStencilBufferOp(g, &s->buffers[i], fail, zfail, zpass); 253 } 254 255 DIRTY(sb->bufferRefs[bitsIdx].op, g->neg_bitid); 256 257 DIRTY(sb->dirty, g->neg_bitid); 258 } 259 } 260 261 void STATE_APIENTRY crStateStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass) 262 { 263 if (!face) 264 { 265 /* crStateStencilOpPerform accepts 0 value, while glStencilOpSeparate does not, 266 * filter it out here */ 267 crStateError(__LINE__,__FILE__,GL_INVALID_ENUM, "crStateStencilOpSeparate"); 268 return; 269 } 270 crStateStencilOpPerform (0, fail, zfail, zpass); 271 } 272 273 void STATE_APIENTRY crStateStencilOp (GLenum fail, GLenum zfail, GLenum zpass) 274 { 275 crStateStencilOpPerform (0, fail, zfail, zpass); 276 } 157 277 158 278 void STATE_APIENTRY crStateClearStencil (GLint c) … … 172 292 FLUSH(); 173 293 174 175 294 s->clearValue = c; 176 295 … … 200 319 DIRTY(sb->dirty, g->neg_bitid); 201 320 } 321 322 void STATE_APIENTRY crStateActiveStencilFaceEXT (GLenum face) 323 { 324 CRContext *g = GetCurrentContext(); 325 CRStencilState *s = &(g->stencil); 326 CRStateBits *stateb = GetCurrentBits(); 327 CRStencilBits *sb = &(stateb->stencil); 328 329 switch (face) 330 { 331 case GL_FRONT: 332 case GL_BACK: 333 s->activeStencilFace = face; 334 break; 335 default: 336 crStateError(__LINE__,__FILE__,GL_INVALID_ENUM, "crStateActiveStencilFaceEXT"); 337 return; 338 } 339 340 DIRTY(sb->activeStencilFace, g->neg_bitid); 341 DIRTY(sb->dirty, g->neg_bitid); 342 } 343 344 #define CR_STATE_STENCIL_FUNC_MATCH(_s1, _i1, _s2, _i2) (\ 345 (_s1)->buffers[(_i1)].func == (_s2)->buffers[(_i2)].func && \ 346 (_s1)->buffers[(_i1)].ref == (_s2)->buffers[(_i2)].ref && \ 347 (_s1)->buffers[(_i1)].mask == (_s2)->buffers[(_i2)].mask) 348 349 #define CR_STATE_STENCIL_FUNC_COPY(_s1, _i1, _s2, _i2) do { \ 350 (_s1)->buffers[(_i1)].func = (_s2)->buffers[(_i2)].func; \ 351 (_s1)->buffers[(_i1)].ref = (_s2)->buffers[(_i2)].ref; \ 352 (_s1)->buffers[(_i1)].mask = (_s2)->buffers[(_i2)].mask; \ 353 } while (0) 354 355 356 #define CR_STATE_STENCIL_OP_MATCH(_s1, _i1, _s2, _i2) (\ 357 (_s1)->buffers[(_i1)].fail == (_s2)->buffers[(_i2)].fail && \ 358 (_s1)->buffers[(_i1)].passDepthFail == (_s2)->buffers[(_i2)].passDepthFail && \ 359 (_s1)->buffers[(_i1)].passDepthPass == (_s2)->buffers[(_i2)].passDepthPass) 360 361 #define CR_STATE_STENCIL_OP_COPY(_s1, _i1, _s2, _i2) do { \ 362 (_s1)->buffers[(_i1)].fail = (_s2)->buffers[(_i2)].fail; \ 363 (_s1)->buffers[(_i1)].passDepthFail = (_s2)->buffers[(_i2)].passDepthFail; \ 364 (_s1)->buffers[(_i1)].passDepthPass = (_s2)->buffers[(_i2)].passDepthPass; \ 365 } while (0) 366 367 368 void crStateStencilDiff(CRStencilBits *b, CRbitvalue *bitID, 369 CRContext *fromCtx, CRContext *toCtx) 370 { 371 CRStencilState *from = &(fromCtx->stencil); 372 CRStencilState *to = &(toCtx->stencil); 373 unsigned int j, i; 374 GLenum activeFace; 375 GLboolean backIsSet = GL_FALSE, frontIsSet = GL_FALSE, frontBackDirty, frontDirty, backDirty; 376 GLchar frontMatch = -1, backMatch = -1, toFrontBackMatch = -1; 377 CRbitvalue nbitID[CR_MAX_BITARRAY]; 378 for (j=0;j<CR_MAX_BITARRAY;j++) 379 nbitID[j] = ~bitID[j]; 380 i = 0; /* silence compiler */ 381 382 if (CHECKDIRTY(b->enable, bitID)) 383 { 384 glAble able[2]; 385 able[0] = diff_api.Disable; 386 able[1] = diff_api.Enable; 387 if (from->stencilTest != to->stencilTest) 388 { 389 able[to->stencilTest](GL_STENCIL_TEST); 390 from->stencilTest = to->stencilTest; 391 } 392 CLEARDIRTY(b->enable, nbitID); 393 } 394 395 if (CHECKDIRTY(b->enableTwoSideEXT, bitID)) 396 { 397 glAble able[2]; 398 able[0] = diff_api.Disable; 399 able[1] = diff_api.Enable; 400 if (from->stencilTwoSideEXT != to->stencilTwoSideEXT) 401 { 402 able[to->stencilTwoSideEXT](GL_STENCIL_TEST_TWO_SIDE_EXT); 403 from->stencilTwoSideEXT = to->stencilTwoSideEXT; 404 } 405 CLEARDIRTY(b->enableTwoSideEXT, nbitID); 406 } 407 408 if (CHECKDIRTY(b->clearValue, bitID)) 409 { 410 if (from->clearValue != to->clearValue) 411 { 412 diff_api.ClearStencil (to->clearValue); 413 from->clearValue = to->clearValue; 414 } 415 CLEARDIRTY(b->clearValue, nbitID); 416 } 417 418 activeFace = to->activeStencilFace; 419 420 421 /* func */ 422 frontBackDirty = CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK].func, bitID); 423 frontDirty = CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT].func, bitID); 424 backDirty = CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_BACK].func, bitID); 425 #define CR_STATE_STENCIL_FUNC_FRONT_MATCH() ( \ 426 frontMatch >= 0 ? \ 427 frontMatch \ 428 : (frontMatch = CR_STATE_STENCIL_FUNC_MATCH(from, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_FRONT))) 429 430 #define CR_STATE_STENCIL_FUNC_BACK_MATCH() ( \ 431 backMatch >= 0 ? \ 432 backMatch \ 433 : (backMatch = CR_STATE_STENCIL_FUNC_MATCH(from, CRSTATE_STENCIL_BUFFER_ID_BACK, to, CRSTATE_STENCIL_BUFFER_ID_BACK))) 434 435 #define CR_STATE_STENCIL_FUNC_TO_FRONT_BACK_MATCH() ( \ 436 toFrontBackMatch >= 0 ? \ 437 toFrontBackMatch \ 438 : (toFrontBackMatch = CR_STATE_STENCIL_FUNC_MATCH(to, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_BACK))) 439 440 if (frontBackDirty) 441 { 442 if (!CR_STATE_STENCIL_FUNC_FRONT_MATCH() 443 || !CR_STATE_STENCIL_FUNC_BACK_MATCH()) 444 { 445 if (CR_STATE_STENCIL_FUNC_TO_FRONT_BACK_MATCH()) 446 { 447 if (activeFace == GL_BACK) 448 { 449 diff_api.ActiveStencilFaceEXT(GL_FRONT); 450 activeFace = GL_FRONT; 451 } 452 453 diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 454 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 455 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask); 456 457 CR_STATE_STENCIL_FUNC_COPY(from, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 458 CR_STATE_STENCIL_FUNC_COPY(from, CRSTATE_STENCIL_BUFFER_ID_BACK, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 459 frontIsSet = GL_TRUE; 460 backIsSet = GL_TRUE; 461 } 462 else if (!CR_STATE_STENCIL_FUNC_FRONT_MATCH()) 463 { 464 if (activeFace == GL_BACK) 465 { 466 diff_api.ActiveStencilFaceEXT(GL_FRONT); 467 activeFace = GL_FRONT; 468 } 469 470 diff_api.StencilFuncSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 471 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 472 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask); 473 474 CR_STATE_STENCIL_FUNC_COPY(from, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 475 frontIsSet = GL_TRUE; 476 } 477 else if (!CR_STATE_STENCIL_FUNC_BACK_MATCH()) 478 { 479 if (activeFace == GL_BACK) 480 { 481 diff_api.ActiveStencilFaceEXT(GL_FRONT); 482 activeFace = GL_FRONT; 483 } 484 485 diff_api.StencilFuncSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].func, 486 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].ref, 487 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].mask); 488 489 CR_STATE_STENCIL_FUNC_COPY(from, CRSTATE_STENCIL_BUFFER_ID_BACK, to, CRSTATE_STENCIL_BUFFER_ID_BACK); 490 491 backIsSet = GL_TRUE; 492 } 493 } 494 495 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK].func, nbitID); 496 } 497 498 if (frontDirty) 499 { 500 if (!CR_STATE_STENCIL_FUNC_FRONT_MATCH()) 501 { 502 if (CR_STATE_STENCIL_FUNC_TO_FRONT_BACK_MATCH()) 503 { 504 if (!frontIsSet || !backIsSet) 505 { 506 if (activeFace == GL_BACK) 507 { 508 diff_api.ActiveStencilFaceEXT(GL_FRONT); 509 activeFace = GL_FRONT; 510 } 511 512 diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 513 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 514 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask); 515 516 CR_STATE_STENCIL_FUNC_COPY(from, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 517 CR_STATE_STENCIL_FUNC_COPY(from, CRSTATE_STENCIL_BUFFER_ID_BACK, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 518 519 frontIsSet = GL_TRUE; 520 backIsSet = GL_TRUE; 521 } 522 } 523 else if (!CR_STATE_STENCIL_FUNC_FRONT_MATCH()) 524 { 525 if (!frontIsSet) 526 { 527 if (activeFace == GL_BACK) 528 { 529 diff_api.ActiveStencilFaceEXT(GL_FRONT); 530 activeFace = GL_FRONT; 531 } 532 533 diff_api.StencilFuncSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 534 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 535 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask); 536 537 CR_STATE_STENCIL_FUNC_COPY(from, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 538 frontIsSet = GL_TRUE; 539 } 540 } 541 else if (!CR_STATE_STENCIL_FUNC_BACK_MATCH()) 542 { 543 if (!backIsSet) 544 { 545 if (activeFace == GL_BACK) 546 { 547 diff_api.ActiveStencilFaceEXT(GL_FRONT); 548 activeFace = GL_FRONT; 549 } 550 551 diff_api.StencilFuncSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].func, 552 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].ref, 553 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].mask); 554 CR_STATE_STENCIL_FUNC_COPY(from, CRSTATE_STENCIL_BUFFER_ID_BACK, to, CRSTATE_STENCIL_BUFFER_ID_BACK); 555 backIsSet = GL_TRUE; 556 } 557 } 558 } 559 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT].func, nbitID); 560 } 561 562 563 if (backDirty) 564 { 565 if (!CR_STATE_STENCIL_FUNC_FRONT_MATCH()) 566 { 567 if (CR_STATE_STENCIL_FUNC_TO_FRONT_BACK_MATCH()) 568 { 569 if (!frontIsSet || !backIsSet) 570 { 571 if (activeFace == GL_BACK) 572 { 573 diff_api.ActiveStencilFaceEXT(GL_FRONT); 574 activeFace = GL_FRONT; 575 } 576 577 diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 578 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 579 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask); 580 581 CR_STATE_STENCIL_FUNC_COPY(from, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 582 CR_STATE_STENCIL_FUNC_COPY(from, CRSTATE_STENCIL_BUFFER_ID_BACK, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 583 584 frontIsSet = GL_TRUE; 585 backIsSet = GL_TRUE; 586 } 587 } 588 else if (!CR_STATE_STENCIL_FUNC_FRONT_MATCH()) 589 { 590 if (!frontIsSet) 591 { 592 if (activeFace == GL_BACK) 593 { 594 diff_api.ActiveStencilFaceEXT(GL_FRONT); 595 activeFace = GL_FRONT; 596 } 597 598 diff_api.StencilFuncSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 599 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 600 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask); 601 602 CR_STATE_STENCIL_FUNC_COPY(from, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 603 frontIsSet = GL_TRUE; 604 } 605 } 606 else if (!CR_STATE_STENCIL_FUNC_BACK_MATCH()) 607 { 608 if (!backIsSet) 609 { 610 if (activeFace == GL_BACK) 611 { 612 diff_api.ActiveStencilFaceEXT(GL_FRONT); 613 activeFace = GL_FRONT; 614 } 615 616 diff_api.StencilFuncSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].func, 617 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].ref, 618 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].mask); 619 CR_STATE_STENCIL_FUNC_COPY(from, CRSTATE_STENCIL_BUFFER_ID_BACK, to, CRSTATE_STENCIL_BUFFER_ID_BACK); 620 backIsSet = GL_TRUE; 621 } 622 } 623 } 624 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_BACK].func, nbitID); 625 } 626 627 if (CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].func, bitID)) 628 { 629 if (CR_STATE_STENCIL_FUNC_MATCH(from, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK)) 630 { 631 if (activeFace == GL_FRONT) 632 { 633 diff_api.ActiveStencilFaceEXT(GL_BACK); 634 activeFace = GL_BACK; 635 } 636 637 diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].func, 638 to->buffers[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].ref, 639 to->buffers[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].mask); 640 CR_STATE_STENCIL_FUNC_COPY(from, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK); 641 } 642 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].func, nbitID); 643 } 644 645 #undef CR_STATE_STENCIL_FUNC_FRONT_MATCH 646 #undef CR_STATE_STENCIL_FUNC_BACK_MATCH 647 #undef CR_STATE_STENCIL_FUNC_TO_FRONT_BACK_MATCH 648 649 /* op */ 650 backIsSet = GL_FALSE, frontIsSet = GL_FALSE; 651 frontMatch = -1, backMatch = -1, toFrontBackMatch = -1; 652 frontBackDirty = CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK].op, bitID); 653 frontDirty = CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT].op, bitID); 654 backDirty = CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_BACK].op, bitID); 655 656 #define CR_STATE_STENCIL_OP_FRONT_MATCH() ( \ 657 frontMatch >= 0 ? \ 658 frontMatch \ 659 : (frontMatch = CR_STATE_STENCIL_OP_MATCH(from, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_FRONT))) 660 661 #define CR_STATE_STENCIL_OP_BACK_MATCH() ( \ 662 backMatch >= 0 ? \ 663 backMatch \ 664 : (backMatch = CR_STATE_STENCIL_OP_MATCH(from, CRSTATE_STENCIL_BUFFER_ID_BACK, to, CRSTATE_STENCIL_BUFFER_ID_BACK))) 665 666 #define CR_STATE_STENCIL_OP_TO_FRONT_BACK_MATCH() ( \ 667 toFrontBackMatch >= 0 ? \ 668 toFrontBackMatch \ 669 : (toFrontBackMatch = CR_STATE_STENCIL_OP_MATCH(to, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_BACK))) 670 671 if (frontBackDirty) 672 { 673 if (!CR_STATE_STENCIL_OP_FRONT_MATCH() 674 || !CR_STATE_STENCIL_OP_BACK_MATCH()) 675 { 676 if (CR_STATE_STENCIL_OP_TO_FRONT_BACK_MATCH()) 677 { 678 if (activeFace == GL_BACK) 679 { 680 diff_api.ActiveStencilFaceEXT(GL_FRONT); 681 activeFace = GL_FRONT; 682 } 683 684 diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 685 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 686 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass); 687 688 CR_STATE_STENCIL_OP_COPY(from, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 689 CR_STATE_STENCIL_OP_COPY(from, CRSTATE_STENCIL_BUFFER_ID_BACK, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 690 691 frontIsSet = GL_TRUE; 692 backIsSet = GL_TRUE; 693 } 694 else if (!CR_STATE_STENCIL_OP_FRONT_MATCH()) 695 { 696 if (activeFace == GL_BACK) 697 { 698 diff_api.ActiveStencilFaceEXT(GL_FRONT); 699 activeFace = GL_FRONT; 700 } 701 702 diff_api.StencilOpSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 703 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 704 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass); 705 CR_STATE_STENCIL_OP_COPY(from, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 706 frontIsSet = GL_TRUE; 707 } 708 else if (!CR_STATE_STENCIL_OP_BACK_MATCH()) 709 { 710 if (activeFace == GL_BACK) 711 { 712 diff_api.ActiveStencilFaceEXT(GL_FRONT); 713 activeFace = GL_FRONT; 714 } 715 716 diff_api.StencilOpSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].fail, 717 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthFail, 718 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthPass); 719 CR_STATE_STENCIL_OP_COPY(from, CRSTATE_STENCIL_BUFFER_ID_BACK, to, CRSTATE_STENCIL_BUFFER_ID_BACK); 720 backIsSet = GL_TRUE; 721 } 722 } 723 724 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK].op, nbitID); 725 } 726 727 if (frontDirty) 728 { 729 if (!CR_STATE_STENCIL_OP_FRONT_MATCH()) 730 { 731 if (CR_STATE_STENCIL_OP_TO_FRONT_BACK_MATCH()) 732 { 733 if (!frontIsSet || !backIsSet) 734 { 735 if (activeFace == GL_BACK) 736 { 737 diff_api.ActiveStencilFaceEXT(GL_FRONT); 738 activeFace = GL_FRONT; 739 } 740 741 diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 742 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 743 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass); 744 745 CR_STATE_STENCIL_OP_COPY(from, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 746 CR_STATE_STENCIL_OP_COPY(from, CRSTATE_STENCIL_BUFFER_ID_BACK, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 747 748 frontIsSet = GL_TRUE; 749 backIsSet = GL_TRUE; 750 } 751 } 752 else if (!CR_STATE_STENCIL_OP_FRONT_MATCH()) 753 { 754 if (!frontIsSet) 755 { 756 if (activeFace == GL_BACK) 757 { 758 diff_api.ActiveStencilFaceEXT(GL_FRONT); 759 activeFace = GL_FRONT; 760 } 761 762 diff_api.StencilOpSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 763 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 764 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass); 765 766 CR_STATE_STENCIL_OP_COPY(from, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 767 768 frontIsSet = GL_TRUE; 769 } 770 } 771 else if (!CR_STATE_STENCIL_OP_BACK_MATCH()) 772 { 773 if (!backIsSet) 774 { 775 if (activeFace == GL_BACK) 776 { 777 diff_api.ActiveStencilFaceEXT(GL_FRONT); 778 activeFace = GL_FRONT; 779 } 780 781 diff_api.StencilOpSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].fail, 782 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthFail, 783 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthPass); 784 CR_STATE_STENCIL_OP_COPY(from, CRSTATE_STENCIL_BUFFER_ID_BACK, to, CRSTATE_STENCIL_BUFFER_ID_BACK); 785 backIsSet = GL_TRUE; 786 } 787 } 788 } 789 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT].op, nbitID); 790 } 791 792 793 if (backDirty) 794 { 795 if (!CR_STATE_STENCIL_OP_FRONT_MATCH()) 796 { 797 if (CR_STATE_STENCIL_OP_TO_FRONT_BACK_MATCH()) 798 { 799 if (!frontIsSet || !backIsSet) 800 { 801 if (activeFace == GL_BACK) 802 { 803 diff_api.ActiveStencilFaceEXT(GL_FRONT); 804 activeFace = GL_FRONT; 805 } 806 807 diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 808 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 809 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass); 810 811 CR_STATE_STENCIL_OP_COPY(from, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 812 CR_STATE_STENCIL_OP_COPY(from, CRSTATE_STENCIL_BUFFER_ID_BACK, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 813 814 frontIsSet = GL_TRUE; 815 backIsSet = GL_TRUE; 816 } 817 } 818 else if (!CR_STATE_STENCIL_OP_FRONT_MATCH()) 819 { 820 if (!frontIsSet) 821 { 822 if (activeFace == GL_BACK) 823 { 824 diff_api.ActiveStencilFaceEXT(GL_FRONT); 825 activeFace = GL_FRONT; 826 } 827 828 diff_api.StencilOpSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 829 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 830 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass); 831 832 CR_STATE_STENCIL_OP_COPY(from, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_FRONT); 833 834 frontIsSet = GL_TRUE; 835 } 836 } 837 else if (!CR_STATE_STENCIL_OP_BACK_MATCH()) 838 { 839 if (!backIsSet) 840 { 841 if (activeFace == GL_BACK) 842 { 843 diff_api.ActiveStencilFaceEXT(GL_FRONT); 844 activeFace = GL_FRONT; 845 } 846 847 diff_api.StencilOpSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].fail, 848 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthFail, 849 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthPass); 850 CR_STATE_STENCIL_OP_COPY(from, CRSTATE_STENCIL_BUFFER_ID_BACK, to, CRSTATE_STENCIL_BUFFER_ID_BACK); 851 backIsSet = GL_TRUE; 852 } 853 } 854 } 855 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_BACK].op, nbitID); 856 } 857 858 if (CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].op, bitID)) 859 { 860 if (CR_STATE_STENCIL_OP_MATCH(from, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK)) 861 { 862 if (activeFace == GL_FRONT) 863 { 864 diff_api.ActiveStencilFaceEXT(GL_BACK); 865 activeFace = GL_BACK; 866 } 867 868 diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].fail, 869 to->buffers[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].passDepthFail, 870 to->buffers[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].passDepthPass); 871 CR_STATE_STENCIL_OP_COPY(from, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK); 872 } 873 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].op, nbitID); 874 } 875 876 #undef CR_STATE_STENCIL_OP_FRONT_MATCH 877 #undef CR_STATE_STENCIL_OP_BACK_MATCH 878 #undef CR_STATE_STENCIL_OP_TO_FRONT_BACK_MATCH 879 880 881 if (activeFace != to->activeStencilFace) 882 { 883 diff_api.ActiveStencilFaceEXT(activeFace); 884 } 885 886 if (CHECKDIRTY(b->activeStencilFace, bitID)) 887 { 888 if (from->activeStencilFace != to->activeStencilFace) 889 { 890 /* we already did it ( see above )*/ 891 /* diff_api.ActiveStencilFaceEXT(to->activeStencilFace); */ 892 from->activeStencilFace = to->activeStencilFace; 893 } 894 CLEARDIRTY(b->activeStencilFace, nbitID); 895 } 896 897 if (CHECKDIRTY(b->writeMask, bitID)) 898 { 899 if (from->writeMask != to->writeMask) 900 { 901 diff_api.StencilMask (to->writeMask); 902 from->writeMask = to->writeMask; 903 } 904 CLEARDIRTY(b->writeMask, nbitID); 905 } 906 CLEARDIRTY(b->dirty, nbitID); 907 } 908 909 void crStateStencilSwitch(CRStencilBits *b, CRbitvalue *bitID, 910 CRContext *fromCtx, CRContext *toCtx) 911 { 912 CRStencilState *from = &(fromCtx->stencil); 913 CRStencilState *to = &(toCtx->stencil); 914 unsigned int j, i; 915 GLenum activeFace; 916 GLboolean backIsSet = GL_FALSE, frontIsSet = GL_FALSE, frontBackDirty, frontDirty, backDirty; 917 GLchar frontMatch = -1, backMatch = -1, toFrontBackMatch = -1; 918 CRbitvalue nbitID[CR_MAX_BITARRAY]; 919 for (j=0;j<CR_MAX_BITARRAY;j++) 920 nbitID[j] = ~bitID[j]; 921 i = 0; /* silence compiler */ 922 923 if (CHECKDIRTY(b->enable, bitID)) 924 { 925 glAble able[2]; 926 able[0] = diff_api.Disable; 927 able[1] = diff_api.Enable; 928 if (from->stencilTest != to->stencilTest) 929 { 930 able[to->stencilTest](GL_STENCIL_TEST); 931 FILLDIRTY(b->enable); 932 FILLDIRTY(b->dirty); 933 } 934 CLEARDIRTY(b->enable, nbitID); 935 } 936 if (CHECKDIRTY(b->enableTwoSideEXT, bitID)) 937 { 938 glAble able[2]; 939 able[0] = diff_api.Disable; 940 able[1] = diff_api.Enable; 941 if (from->stencilTwoSideEXT != to->stencilTwoSideEXT) 942 { 943 able[to->stencilTwoSideEXT](GL_STENCIL_TEST_TWO_SIDE_EXT); 944 FILLDIRTY(b->enableTwoSideEXT); 945 FILLDIRTY(b->dirty); 946 } 947 CLEARDIRTY(b->enableTwoSideEXT, nbitID); 948 } 949 if (CHECKDIRTY(b->clearValue, bitID)) 950 { 951 if (from->clearValue != to->clearValue) 952 { 953 diff_api.ClearStencil (to->clearValue); 954 FILLDIRTY(b->clearValue); 955 FILLDIRTY(b->dirty); 956 } 957 CLEARDIRTY(b->clearValue, nbitID); 958 } 959 960 activeFace = from->activeStencilFace; 961 962 /* func */ 963 frontBackDirty = CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK].func, bitID); 964 frontDirty = CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT].func, bitID); 965 backDirty = CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_BACK].func, bitID); 966 #define CR_STATE_STENCIL_FUNC_FRONT_MATCH() ( \ 967 frontMatch >= 0 ? \ 968 frontMatch \ 969 : (frontMatch = CR_STATE_STENCIL_FUNC_MATCH(from, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_FRONT))) 970 971 #define CR_STATE_STENCIL_FUNC_BACK_MATCH() ( \ 972 backMatch >= 0 ? \ 973 backMatch \ 974 : (backMatch = CR_STATE_STENCIL_FUNC_MATCH(from, CRSTATE_STENCIL_BUFFER_ID_BACK, to, CRSTATE_STENCIL_BUFFER_ID_BACK))) 975 976 #define CR_STATE_STENCIL_FUNC_TO_FRONT_BACK_MATCH() ( \ 977 toFrontBackMatch >= 0 ? \ 978 toFrontBackMatch \ 979 : (toFrontBackMatch = CR_STATE_STENCIL_FUNC_MATCH(to, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_BACK))) 980 981 if (frontBackDirty) 982 { 983 if (!CR_STATE_STENCIL_FUNC_FRONT_MATCH() 984 || !CR_STATE_STENCIL_FUNC_BACK_MATCH()) 985 { 986 if (CR_STATE_STENCIL_FUNC_TO_FRONT_BACK_MATCH()) 987 { 988 if (activeFace == GL_BACK) 989 { 990 diff_api.ActiveStencilFaceEXT(GL_FRONT); 991 activeFace = GL_FRONT; 992 } 993 994 diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 995 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 996 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask); 997 998 frontIsSet = GL_TRUE; 999 backIsSet = GL_TRUE; 1000 } 1001 else if (!CR_STATE_STENCIL_FUNC_FRONT_MATCH()) 1002 { 1003 if (activeFace == GL_BACK) 1004 { 1005 diff_api.ActiveStencilFaceEXT(GL_FRONT); 1006 activeFace = GL_FRONT; 1007 } 1008 1009 diff_api.StencilFuncSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 1010 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 1011 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask); 1012 frontIsSet = GL_TRUE; 1013 } 1014 else if (!CR_STATE_STENCIL_FUNC_BACK_MATCH()) 1015 { 1016 if (activeFace == GL_BACK) 1017 { 1018 diff_api.ActiveStencilFaceEXT(GL_FRONT); 1019 activeFace = GL_FRONT; 1020 } 1021 1022 diff_api.StencilFuncSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].func, 1023 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].ref, 1024 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].mask); 1025 backIsSet = GL_TRUE; 1026 } 1027 FILLDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK].func); 1028 FILLDIRTY(b->dirty); 1029 } 1030 1031 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK].func, nbitID); 1032 } 1033 1034 if (frontDirty) 1035 { 1036 if (!CR_STATE_STENCIL_FUNC_FRONT_MATCH()) 1037 { 1038 if (CR_STATE_STENCIL_FUNC_TO_FRONT_BACK_MATCH()) 1039 { 1040 if (!frontIsSet || !backIsSet) 1041 { 1042 if (activeFace == GL_BACK) 1043 { 1044 diff_api.ActiveStencilFaceEXT(GL_FRONT); 1045 activeFace = GL_FRONT; 1046 } 1047 1048 diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 1049 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 1050 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask); 1051 1052 frontIsSet = GL_TRUE; 1053 backIsSet = GL_TRUE; 1054 } 1055 } 1056 else if (!CR_STATE_STENCIL_FUNC_FRONT_MATCH()) 1057 { 1058 if (!frontIsSet) 1059 { 1060 if (activeFace == GL_BACK) 1061 { 1062 diff_api.ActiveStencilFaceEXT(GL_FRONT); 1063 activeFace = GL_FRONT; 1064 } 1065 1066 diff_api.StencilFuncSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 1067 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 1068 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask); 1069 frontIsSet = GL_TRUE; 1070 } 1071 } 1072 else if (!CR_STATE_STENCIL_FUNC_BACK_MATCH()) 1073 { 1074 if (!backIsSet) 1075 { 1076 if (activeFace == GL_BACK) 1077 { 1078 diff_api.ActiveStencilFaceEXT(GL_FRONT); 1079 activeFace = GL_FRONT; 1080 } 1081 1082 diff_api.StencilFuncSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].func, 1083 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].ref, 1084 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].mask); 1085 backIsSet = GL_TRUE; 1086 } 1087 } 1088 FILLDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT].func); 1089 FILLDIRTY(b->dirty); 1090 } 1091 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT].func, nbitID); 1092 } 1093 1094 1095 if (backDirty) 1096 { 1097 if (!CR_STATE_STENCIL_FUNC_BACK_MATCH()) 1098 { 1099 if (CR_STATE_STENCIL_FUNC_TO_FRONT_BACK_MATCH()) 1100 { 1101 if (!frontIsSet || !backIsSet) 1102 { 1103 if (activeFace == GL_BACK) 1104 { 1105 diff_api.ActiveStencilFaceEXT(GL_FRONT); 1106 activeFace = GL_FRONT; 1107 } 1108 1109 diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 1110 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 1111 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask); 1112 1113 frontIsSet = GL_TRUE; 1114 backIsSet = GL_TRUE; 1115 } 1116 } 1117 else if (!CR_STATE_STENCIL_FUNC_FRONT_MATCH()) 1118 { 1119 if (!frontIsSet) 1120 { 1121 if (activeFace == GL_BACK) 1122 { 1123 diff_api.ActiveStencilFaceEXT(GL_FRONT); 1124 activeFace = GL_FRONT; 1125 } 1126 1127 diff_api.StencilFuncSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].func, 1128 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].ref, 1129 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].mask); 1130 frontIsSet = GL_TRUE; 1131 } 1132 } 1133 else if (!CR_STATE_STENCIL_FUNC_BACK_MATCH()) 1134 { 1135 if (!backIsSet) 1136 { 1137 if (activeFace == GL_BACK) 1138 { 1139 diff_api.ActiveStencilFaceEXT(GL_FRONT); 1140 activeFace = GL_FRONT; 1141 } 1142 1143 diff_api.StencilFuncSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].func, 1144 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].ref, 1145 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].mask); 1146 backIsSet = GL_TRUE; 1147 } 1148 } 1149 FILLDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_BACK].func); 1150 FILLDIRTY(b->dirty); 1151 } 1152 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_BACK].func, nbitID); 1153 } 1154 1155 if (CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].func, bitID)) 1156 { 1157 if (CR_STATE_STENCIL_FUNC_MATCH(from, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK)) 1158 { 1159 if (activeFace == GL_FRONT) 1160 { 1161 diff_api.ActiveStencilFaceEXT(GL_BACK); 1162 activeFace = GL_BACK; 1163 } 1164 1165 diff_api.StencilFunc (to->buffers[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].func, 1166 to->buffers[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].ref, 1167 to->buffers[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].mask); 1168 1169 FILLDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].func); 1170 FILLDIRTY(b->dirty); 1171 } 1172 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].func, nbitID); 1173 } 1174 1175 #undef CR_STATE_STENCIL_FUNC_FRONT_MATCH 1176 #undef CR_STATE_STENCIL_FUNC_BACK_MATCH 1177 #undef CR_STATE_STENCIL_FUNC_TO_FRONT_BACK_MATCH 1178 1179 /* op */ 1180 backIsSet = GL_FALSE, frontIsSet = GL_FALSE; 1181 frontMatch = -1, backMatch = -1, toFrontBackMatch = -1; 1182 frontBackDirty = CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK].op, bitID); 1183 frontDirty = CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT].op, bitID); 1184 backDirty = CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_BACK].op, bitID); 1185 1186 #define CR_STATE_STENCIL_OP_FRONT_MATCH() ( \ 1187 frontMatch >= 0 ? \ 1188 frontMatch \ 1189 : (frontMatch = CR_STATE_STENCIL_OP_MATCH(from, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_FRONT))) 1190 1191 #define CR_STATE_STENCIL_OP_BACK_MATCH() ( \ 1192 backMatch >= 0 ? \ 1193 backMatch \ 1194 : (backMatch = CR_STATE_STENCIL_OP_MATCH(from, CRSTATE_STENCIL_BUFFER_ID_BACK, to, CRSTATE_STENCIL_BUFFER_ID_BACK))) 1195 1196 #define CR_STATE_STENCIL_OP_TO_FRONT_BACK_MATCH() ( \ 1197 toFrontBackMatch >= 0 ? \ 1198 toFrontBackMatch \ 1199 : (toFrontBackMatch = CR_STATE_STENCIL_OP_MATCH(to, CRSTATE_STENCIL_BUFFER_ID_FRONT, to, CRSTATE_STENCIL_BUFFER_ID_BACK))) 1200 1201 if (frontBackDirty) 1202 { 1203 if (!CR_STATE_STENCIL_OP_FRONT_MATCH() 1204 || !CR_STATE_STENCIL_OP_BACK_MATCH()) 1205 { 1206 if (CR_STATE_STENCIL_OP_TO_FRONT_BACK_MATCH()) 1207 { 1208 if (activeFace == GL_BACK) 1209 { 1210 diff_api.ActiveStencilFaceEXT(GL_FRONT); 1211 activeFace = GL_FRONT; 1212 } 1213 1214 diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 1215 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 1216 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass); 1217 1218 frontIsSet = GL_TRUE; 1219 backIsSet = GL_TRUE; 1220 } 1221 else if (!CR_STATE_STENCIL_OP_FRONT_MATCH()) 1222 { 1223 if (activeFace == GL_BACK) 1224 { 1225 diff_api.ActiveStencilFaceEXT(GL_FRONT); 1226 activeFace = GL_FRONT; 1227 } 1228 1229 diff_api.StencilOpSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 1230 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 1231 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass); 1232 frontIsSet = GL_TRUE; 1233 } 1234 else if (!CR_STATE_STENCIL_OP_BACK_MATCH()) 1235 { 1236 if (activeFace == GL_BACK) 1237 { 1238 diff_api.ActiveStencilFaceEXT(GL_FRONT); 1239 activeFace = GL_FRONT; 1240 } 1241 1242 diff_api.StencilOpSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].fail, 1243 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthFail, 1244 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthPass); 1245 backIsSet = GL_TRUE; 1246 } 1247 FILLDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK].op); 1248 FILLDIRTY(b->dirty); 1249 } 1250 1251 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT_AND_BACK].op, nbitID); 1252 } 1253 1254 if (frontDirty) 1255 { 1256 if (!CR_STATE_STENCIL_OP_FRONT_MATCH()) 1257 { 1258 if (CR_STATE_STENCIL_OP_TO_FRONT_BACK_MATCH()) 1259 { 1260 if (!frontIsSet || !backIsSet) 1261 { 1262 if (activeFace == GL_BACK) 1263 { 1264 diff_api.ActiveStencilFaceEXT(GL_FRONT); 1265 activeFace = GL_FRONT; 1266 } 1267 1268 diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 1269 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 1270 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass); 1271 1272 frontIsSet = GL_TRUE; 1273 backIsSet = GL_TRUE; 1274 } 1275 } 1276 else if (!CR_STATE_STENCIL_OP_FRONT_MATCH()) 1277 { 1278 if (!frontIsSet) 1279 { 1280 if (activeFace == GL_BACK) 1281 { 1282 diff_api.ActiveStencilFaceEXT(GL_FRONT); 1283 activeFace = GL_FRONT; 1284 } 1285 1286 diff_api.StencilOpSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 1287 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 1288 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass); 1289 frontIsSet = GL_TRUE; 1290 } 1291 } 1292 else if (!CR_STATE_STENCIL_OP_BACK_MATCH()) 1293 { 1294 if (!backIsSet) 1295 { 1296 if (activeFace == GL_BACK) 1297 { 1298 diff_api.ActiveStencilFaceEXT(GL_FRONT); 1299 activeFace = GL_FRONT; 1300 } 1301 1302 diff_api.StencilOpSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].fail, 1303 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthFail, 1304 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthPass); 1305 backIsSet = GL_TRUE; 1306 } 1307 } 1308 1309 FILLDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT].op); 1310 FILLDIRTY(b->dirty); 1311 } 1312 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_FRONT].op, nbitID); 1313 } 1314 1315 1316 if (backDirty) 1317 { 1318 if (!CR_STATE_STENCIL_OP_BACK_MATCH()) 1319 { 1320 if (CR_STATE_STENCIL_OP_TO_FRONT_BACK_MATCH()) 1321 { 1322 if (!frontIsSet || !backIsSet) 1323 { 1324 if (activeFace == GL_BACK) 1325 { 1326 diff_api.ActiveStencilFaceEXT(GL_FRONT); 1327 activeFace = GL_FRONT; 1328 } 1329 1330 diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 1331 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 1332 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass); 1333 1334 frontIsSet = GL_TRUE; 1335 backIsSet = GL_TRUE; 1336 } 1337 } 1338 else if (!CR_STATE_STENCIL_OP_FRONT_MATCH()) 1339 { 1340 if (!frontIsSet) 1341 { 1342 if (activeFace == GL_BACK) 1343 { 1344 diff_api.ActiveStencilFaceEXT(GL_FRONT); 1345 activeFace = GL_FRONT; 1346 } 1347 1348 diff_api.StencilOpSeparate (GL_FRONT, to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].fail, 1349 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthFail, 1350 to->buffers[CRSTATE_STENCIL_BUFFER_ID_FRONT].passDepthPass); 1351 frontIsSet = GL_TRUE; 1352 } 1353 } 1354 else if (!CR_STATE_STENCIL_OP_BACK_MATCH()) 1355 { 1356 if (!backIsSet) 1357 { 1358 if (activeFace == GL_BACK) 1359 { 1360 diff_api.ActiveStencilFaceEXT(GL_FRONT); 1361 activeFace = GL_FRONT; 1362 } 1363 1364 diff_api.StencilOpSeparate (GL_BACK, to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].fail, 1365 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthFail, 1366 to->buffers[CRSTATE_STENCIL_BUFFER_ID_BACK].passDepthPass); 1367 backIsSet = GL_TRUE; 1368 } 1369 } 1370 1371 FILLDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_BACK].op); 1372 FILLDIRTY(b->dirty); 1373 } 1374 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_BACK].op, nbitID); 1375 } 1376 1377 if (CHECKDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].op, bitID)) 1378 { 1379 if (CR_STATE_STENCIL_OP_MATCH(from, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK, to, CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK)) 1380 { 1381 if (activeFace == GL_FRONT) 1382 { 1383 diff_api.ActiveStencilFaceEXT(GL_BACK); 1384 activeFace = GL_BACK; 1385 } 1386 1387 diff_api.StencilOp (to->buffers[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].fail, 1388 to->buffers[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].passDepthFail, 1389 to->buffers[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].passDepthPass); 1390 1391 FILLDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].op); 1392 FILLDIRTY(b->dirty); 1393 } 1394 CLEARDIRTY(b->bufferRefs[CRSTATE_STENCIL_BUFFER_REF_ID_TWO_SIDE_BACK].op, nbitID); 1395 } 1396 1397 #undef CR_STATE_STENCIL_OP_FRONT_MATCH 1398 #undef CR_STATE_STENCIL_OP_BACK_MATCH 1399 #undef CR_STATE_STENCIL_OP_TO_FRONT_BACK_MATCH 1400 1401 if (activeFace != to->activeStencilFace) 1402 { 1403 diff_api.ActiveStencilFaceEXT(activeFace); 1404 } 1405 1406 if (CHECKDIRTY(b->activeStencilFace, bitID)) 1407 { 1408 if (from->activeStencilFace != to->activeStencilFace) 1409 { 1410 /* we already did it ( see above )*/ 1411 /* diff_api.ActiveStencilFaceEXT(to->activeStencilFace); */ 1412 FILLDIRTY(b->activeStencilFace); 1413 FILLDIRTY(b->dirty); 1414 } 1415 CLEARDIRTY(b->activeStencilFace, nbitID); 1416 } 1417 1418 if (CHECKDIRTY(b->writeMask, bitID)) 1419 { 1420 if (from->writeMask != to->writeMask) 1421 { 1422 diff_api.StencilMask (to->writeMask); 1423 FILLDIRTY(b->writeMask); 1424 FILLDIRTY(b->dirty); 1425 } 1426 CLEARDIRTY(b->writeMask, nbitID); 1427 } 1428 1429 CLEARDIRTY(b->dirty, nbitID); 1430 } 1431
Note:
See TracChangeset
for help on using the changeset viewer.