mutter/doc/reference/cogl/cogl-sections.txt
Neil Roberts 5288f6d88d Add a Cogl texture 3D backend
This adds a publicly exposed experimental API for a 3D texture
backend. There is a feature flag which can be checked for whether 3D
textures are supported. Although we require OpenGL 1.2 which has 3D
textures in core, GLES only provides them through an extension so the
feature can be used to detect that.

The textures can be created with one of two new API functions :-

cogl_texture_3d_new_with_size

 and

cogl_texture_3d_new_from_data

There is also internally a new_from_bitmap function. new_from_data is
implemented in terms of this function.

The two constructors are effectively the only way to upload data to a
3D texture. It does not work to call glTexImage2D with the
GL_TEXTURE_3D target so the virtual for cogl_texture_set_region does
nothing. It would be possible to make cogl_texture_get_data do
something sensible like returning all of the images as a single long
image but this is not currently implemented and instead the virtual
just always fails. We may want to add API specific to the 3D texture
backend to get and set a sub region of the texture.

All of those three functions can throw a GError. This will happen if
the GPU does not support 3D textures or it does not support NPOTs and
an NPOT size is requested. It will also fail if the FBO extension is
not supported and the COGL_TEXTURE_NO_AUTO_MIPMAP flag is not
given. This could be avoided by copying the code for the
GL_GENERATE_MIPMAP TexParameter fallback, but in the interests of
keeping the code simple this is not yet done.

This adds a couple of functions to cogl-texture-driver for uploading
3D data and querying the 3D proxy
texture. prep_gl_for_pixels_upload_full now also takes sets the
GL_UNPACK_IMAGE_HEIGHT parameter so that 3D textures can have padding
between the images. Whenever 3D texture is uploading, both the height
of the images and the height of all of the data is specified (either
explicitly or implicilty from the CoglBitmap) so that the image height
can be deduced by dividing by the depth.
2010-07-13 14:28:52 +01:00

577 lines
11 KiB
Plaintext

<SECTION>
<FILE>cogl</FILE>
<TITLE>General API</TITLE>
CoglObject
cogl_object_ref
cogl_object_unref
CoglUserDataKey
cogl_object_get_user_data
cogl_object_set_user_data
COGL_INVALID_HANDLE
CoglHandle
cogl_handle_ref
cogl_handle_unref
<SUBSECTION>
CoglFuncPtr
CoglPixelFormat
CoglBufferTarget
CoglBufferBit
CoglAttributeType
<SUBSECTION>
CoglFeatureFlags
cogl_get_features
cogl_features_available
cogl_check_extension
cogl_get_proc_address
cogl_get_option_group
<SUBSECTION>
cogl_push_matrix
cogl_pop_matrix
cogl_scale
cogl_translate
cogl_rotate
cogl_transform
cogl_frustum
cogl_perspective
cogl_ortho
<SUBSECTION>
cogl_get_modelview_matrix
cogl_set_modelview_matrix
cogl_get_projection_matrix
cogl_set_projection_matrix
cogl_viewport
cogl_set_viewport
cogl_get_viewport
<SUBSECTION>
cogl_clear
cogl_get_bitmasks
cogl_set_depth_test_enabled
cogl_get_depth_test_enabled
cogl_set_backface_culling_enabled
cogl_get_backface_culling_enabled
<SUBSECTION>
CoglFogMode
cogl_set_fog
cogl_disable_fog
<SUBSECTION>
cogl_set_source
cogl_set_source_color
cogl_set_source_color4ub
cogl_set_source_color4f
cogl_set_source_texture
<SUBSECTION>
CoglReadPixelsFlags
cogl_read_pixels
<SUBSECTION>
cogl_flush
cogl_begin_gl
cogl_end_gl
<SUBSECTION Standard>
COGL_TYPE_ATTRIBUTE_TYPE
COGL_TYPE_BLEND_STRING_ERROR
COGL_TYPE_BUFFER_ACCESS
COGL_TYPE_BUFFER_BIT
COGL_TYPE_BUFFER_TARGET
COGL_TYPE_BUFFER_UPDATE_HINT
COGL_TYPE_BUFFER_USAGE_HINT
COGL_TYPE_DEBUG_FLAGS
COGL_TYPE_DRIVER_ERROR
COGL_TYPE_FEATURE_FLAGS
COGL_TYPE_FIXED
COGL_TYPE_FOG_MODE
COGL_TYPE_HANDLE
COGL_TYPE_INDICES_TYPE
COGL_TYPE_MATERIAL_ALPHA_FUNC
COGL_TYPE_MATERIAL_FILTER
COGL_TYPE_MATERIAL_LAYER_TYPE
COGL_TYPE_PIXEL_FORMAT
COGL_TYPE_READ_PIXELS_FLAGS
COGL_TYPE_SHADER_TYPE
COGL_TYPE_TEXTURE_FLAGS
COGL_TYPE_VERTICES_MODE
<SUBSECTION Private>
COGL_DRIVER_ERROR
CoglDriverError
cogl_attribute_type_get_type
cogl_buffer_bit_get_type
cogl_buffer_target_get_type
cogl_debug_flags_get_type
cogl_driver_error_get_type
cogl_feature_flags_get_type
cogl_fixed_get_type
cogl_fog_mode_get_type
cogl_handle_get_type
cogl_indices_type_get_type
cogl_material_alpha_func_get_type
cogl_material_filter_get_type
cogl_material_layer_type_get_type
cogl_pixel_format_get_type
cogl_read_pixels_flags_get_type
cogl_shader_type_get_type
cogl_texture_flags_get_type
cogl_vertices_mode_get_type
COGL_AFIRST_BIT
COGL_A_BIT
COGL_BGR_BIT
COGL_PIXEL_FORMAT_24
COGL_PIXEL_FORMAT_32
COGL_PREMULT_BIT
COGL_UNORDERED_MASK
COGL_UNPREMULT_MASK
</SECTION>
<SECTION>
<FILE>cogl-clipping</FILE>
<TITLE>Clipping</TITLE>
cogl_clip_push_rectangle
cogl_clip_push_window_rectangle
cogl_clip_push_from_path
cogl_clip_push_from_path_preserve
cogl_clip_pop
<SUBSECTION>
cogl_clip_push
cogl_clip_push_window_rect
cogl_clip_ensure
cogl_clip_stack_save
cogl_clip_stack_restore
</SECTION>
<SECTION>
<FILE>cogl-primitives</FILE>
<TITLE>Primitives</TITLE>
cogl_rectangle
cogl_rectangles
cogl_rectangle_with_texture_coords
cogl_rectangles_with_texture_coords
cogl_rectangle_with_multitexture_coords
cogl_polygon
</SECTION>
<SECTION>
<FILE>cogl-paths</FILE>
<TITLE>Path Primitives</TITLE>
cogl_is_path
cogl_path_new
cogl_get_path
cogl_set_path
cogl_path_copy
cogl_path_move_to
cogl_path_close
cogl_path_line_to
cogl_path_curve_to
cogl_path_arc
cogl_path_rel_move_to
cogl_path_rel_line_to
cogl_path_rel_curve_to
cogl_path_line
cogl_path_polyline
cogl_path_polygon
cogl_path_rectangle
cogl_path_round_rectangle
cogl_path_ellipse
<SUBSECTION>
CoglPathFillRule
cogl_path_set_fill_rule
cogl_path_get_fill_rule
cogl_path_fill
cogl_path_fill_preserve
cogl_path_stroke
cogl_path_stroke_preserve
</SECTION>
<SECTION>
<FILE>cogl-bitmap</FILE>
<TITLE>Bitmaps</TITLE>
cogl_bitmap_new_from_file
cogl_bitmap_get_size_from_file
cogl_is_bitmap
CoglBitmapError
COGL_BITMAP_ERROR
</SECTION>
<SECTION>
<FILE>cogl-texture</FILE>
<TITLE>Textures</TITLE>
CoglTextureVertex
CoglTextureFlags
cogl_texture_new_with_size
cogl_texture_new_from_file
cogl_texture_new_from_data
cogl_texture_new_from_foreign
cogl_texture_new_from_bitmap
cogl_texture_new_from_sub_texture
cogl_is_texture
cogl_texture_ref
cogl_texture_unref
<SUBSECTION>
cogl_texture_get_width
cogl_texture_get_height
cogl_texture_get_format
cogl_texture_get_rowstride
cogl_texture_get_max_waste
cogl_texture_is_sliced
cogl_texture_get_gl_texture
cogl_texture_get_data
cogl_texture_set_region
<SUBSECTION Private>
COGL_TEXTURE_MAX_WASTE
</SECTION>
<SECTION>
<FILE>cogl-texture-3d</FILE>
<TITLE>3D textures</TITLE>
cogl_texture_3d_new_with_size
cogl_texture_3d_new_from_data
cogl_is_texture_3d
</SECTION>
<SECTION>
<FILE>cogl-shaders</FILE>
<TITLE>Shaders and Programmable Pipeline</TITLE>
CoglShaderType
cogl_create_shader
cogl_shader_ref
cogl_shader_unref
cogl_is_shader
cogl_shader_source
cogl_shader_compile
cogl_shader_get_info_log
cogl_shader_get_type
cogl_shader_is_compiled
<SUBSECTION>
cogl_create_program
cogl_program_ref
cogl_program_unref
cogl_is_program
cogl_program_attach_shader
cogl_program_link
cogl_program_use
cogl_program_get_uniform_location
cogl_program_uniform_1f
cogl_program_uniform_1i
cogl_program_uniform_float
cogl_program_uniform_int
cogl_program_uniform_matrix
</SECTION>
<SECTION>
<FILE>cogl-offscreen</FILE>
<TITLE>Offscreen Buffers</TITLE>
cogl_offscreen_new_to_texture
cogl_offscreen_ref
cogl_offscreen_unref
cogl_is_offscreen
cogl_set_framebuffer
cogl_push_framebuffer
cogl_pop_framebuffer
cogl_set_draw_buffer
cogl_pop_draw_buffer
cogl_push_draw_buffer
</SECTION>
<SECTION>
<FILE>cogl-fixed</FILE>
<TITLE>Fixed Point API</TITLE>
CoglFixed
COGL_FIXED_BITS
COGL_FIXED_Q
COGL_FIXED_MAX
COGL_FIXED_MIN
<SUBSECTION>
COGL_FIXED_FROM_FLOAT
COGL_FIXED_TO_FLOAT
COGL_FIXED_FROM_INT
COGL_FIXED_TO_INT
COGL_FIXED_FROM_DOUBLE
COGL_FIXED_TO_DOUBLE
COGL_FLOAT_TO_INT
COGL_FLOAT_TO_UINT
<SUBSECTION>
COGL_FIXED_EPSILON
COGL_FIXED_1
COGL_FIXED_0_5
COGL_FIXED_30
COGL_FIXED_45
COGL_FIXED_60
COGL_FIXED_90
COGL_FIXED_120
COGL_FIXED_180
COGL_FIXED_240
COGL_FIXED_255
COGL_FIXED_270
COGL_FIXED_360
<SUBSECTION>
COGL_FIXED_MUL
COGL_FIXED_DIV
COGL_FIXED_MUL_DIV
COGL_FIXED_FAST_DIV
COGL_FIXED_FAST_MUL
COGL_FIXED_FRACTION
COGL_FIXED_FLOOR
COGL_FIXED_CEIL
<SUBSECTION>
COGL_FIXED_2_PI
COGL_FIXED_PI
COGL_FIXED_PI_2
COGL_FIXED_PI_4
COGL_RADIANS_TO_DEGREES
<SUBSECTION>
COGL_SQRTI_ARG_10_PERCENT
COGL_SQRTI_ARG_5_PERCENT
COGL_SQRTI_ARG_MAX
cogl_sqrti
<SUBSECTION>
cogl_fixed_atan2
cogl_fixed_atan
cogl_fixed_cos
cogl_fixed_log2
cogl_fixed_pow
cogl_fixed_pow2
cogl_fixed_sin
cogl_fixed_sqrt
cogl_fixed_tan
<SUBSECTION>
CoglAngle
COGL_ANGLE_FROM_DEG
COGL_ANGLE_FROM_DEGX
COGL_ANGLE_TO_DEG
COGL_ANGLE_TO_DEGX
cogl_angle_cos
cogl_angle_sin
cogl_angle_tan
<SUBSECTION Private>
cogl_double_to_fixed
cogl_double_to_int
cogl_double_to_unit
</SECTION>
<SECTION>
<FILE>cogl-color</FILE>
<TITLE>Color Type</TITLE>
CoglColor
cogl_color_new
cogl_color_copy
cogl_color_free
cogl_color_set_from_4ub
cogl_color_set_from_4f
<SUBSECTION>
cogl_color_get_red
cogl_color_get_green
cogl_color_get_blue
cogl_color_get_alpha
<SUBSECTION>
cogl_color_get_red_byte
cogl_color_get_green_byte
cogl_color_get_blue_byte
cogl_color_get_alpha_byte
<SUBSECTION>
cogl_color_get_red_float
cogl_color_get_green_float
cogl_color_get_blue_float
cogl_color_get_alpha_float
<SUBSECTION>
cogl_color_set_red
cogl_color_set_green
cogl_color_set_blue
cogl_color_set_alpha
<SUBSECTION>
cogl_color_set_red_byte
cogl_color_set_green_byte
cogl_color_set_blue_byte
cogl_color_set_alpha_byte
<SUBSECTION>
cogl_color_set_red_float
cogl_color_set_green_float
cogl_color_set_blue_float
cogl_color_set_alpha_float
<SUBSECTION>
cogl_color_premultiply
cogl_color_unpremultiply
cogl_color_equal
</SECTION>
<SECTION>
<FILE>cogl-vertex-buffer</FILE>
<TITLE>Vertex Buffers</TITLE>
cogl_vertex_buffer_new
cogl_vertex_buffer_get_n_vertices
cogl_vertex_buffer_ref
cogl_vertex_buffer_unref
cogl_vertex_buffer_add
cogl_vertex_buffer_delete
cogl_vertex_buffer_submit
cogl_vertex_buffer_disable
cogl_vertex_buffer_enable
CoglVerticesMode
cogl_vertex_buffer_draw
cogl_is_vertex_buffer
<SUBSECTION>
CoglIndicesType
cogl_vertex_buffer_indices_new
cogl_vertex_buffer_draw_elements
cogl_vertex_buffer_indices_get_for_quads
cogl_is_vertex_buffer_indices
<SUBSECTION Private>
cogl_vertex_buffer_indices_get_type
</SECTION>
<SECTION>
<FILE>cogl-matrix</FILE>
<TITLE>Matrices</TITLE>
CoglMatrix
cogl_matrix_init_identity
cogl_matrix_frustum
cogl_matrix_ortho
cogl_matrix_perspective
cogl_matrix_transform_point
cogl_matrix_multiply
cogl_matrix_rotate
cogl_matrix_translate
cogl_matrix_scale
cogl_matrix_init_from_array
cogl_matrix_get_array
cogl_matrix_get_inverse
</SECTION>
<SECTION>
<FILE>cogl-material</FILE>
<TITLE>Materials</TITLE>
cogl_material_new
cogl_material_copy
cogl_material_ref
cogl_material_unref
cogl_is_material
cogl_material_set_color
cogl_material_set_color4ub
cogl_material_set_color4f
cogl_material_get_color
cogl_material_set_ambient
cogl_material_get_ambient
cogl_material_set_diffuse
cogl_material_get_diffuse
cogl_material_set_ambient_and_diffuse
cogl_material_set_emission
cogl_material_get_emission
cogl_material_set_specular
cogl_material_get_specular
cogl_material_set_shininess
cogl_material_get_shininess
CoglMaterialAlphaFunc
cogl_material_set_alpha_test_function
COGL_BLEND_STRING_ERROR
CoglBlendStringError
cogl_material_set_blend
cogl_material_set_blend_constant
cogl_material_set_point_size
cogl_material_get_point_size
cogl_material_set_layer
cogl_material_remove_layer
cogl_material_set_layer_combine
cogl_material_set_layer_combine_constant
cogl_material_set_layer_matrix
cogl_material_set_layer_point_sprite_coords_enabled
cogl_material_get_layer_point_sprite_coords_enabled
cogl_material_get_layers
cogl_material_get_n_layers
CoglMaterialFilter
cogl_material_set_layer_filters
CoglMaterialLayerType
cogl_material_layer_get_type
cogl_material_layer_get_texture
cogl_material_layer_get_min_filter
cogl_material_layer_get_mag_filter
CoglMaterialWrapMode
cogl_material_set_layer_wrap_mode
cogl_material_set_layer_wrap_mode_s
cogl_material_set_layer_wrap_mode_t
cogl_material_layer_get_wrap_mode_s
cogl_material_layer_get_wrap_mode_t
<SUBSECTION Private>
cogl_blend_string_error_get_type
cogl_blend_string_error_quark
</SECTION>
<SECTION>
<FILE>cogl-buffer</FILE>
<TITLE>Buffers</TITLE>
cogl_is_buffer
cogl_buffer_get_size
CoglBufferUsageHint
cogl_buffer_set_usage_hint
cogl_buffer_get_usage_hint
CoglBufferUpdateHint
cogl_buffer_set_update_hint
cogl_buffer_get_update_hint
CoglBufferAccess
cogl_buffer_map
cogl_buffer_unmap
cogl_buffer_set_data
<SUBSECTION>
cogl_pixel_buffer_new
cogl_pixel_buffer_new_for_size
cogl_is_pixel_buffer
<SUBSECTION>
cogl_texture_new_from_buffer
<SUBSECTION Private>
cogl_buffer_access_get_type
cogl_buffer_update_hint_get_type
cogl_buffer_usage_hint_get_type
</SECTION>
<SECTION>
<FILE>cogl-vector</FILE>
<TITLE>Vectors</TITLE>
cogl_vector3_init
cogl_vector3_init_zero
cogl_vector3_equal
cogl_vector3_equal_with_epsilon
cogl_vector3_copy
cogl_vector3_free
cogl_vector3_invert
cogl_vector3_add
cogl_vector3_subtract
cogl_vector3_multiply_scalar
cogl_vector3_divide_scalar
cogl_vector3_normalize
cogl_vector3_magnitude
cogl_vector3_cross_product
cogl_vector3_dot_product
cogl_vector3_distance
</SECTION>