sig
  type t
  external create' : unit -> Osg.Camera.t = "camera_create"
  external to_node : Osg.Camera.t -> Osg.Node.t = "camera_to_node"
  external to_group : Osg.Camera.t -> Osg.Group.t = "camera_to_group"
  external to_transform : Osg.Camera.t -> Osg.Transform.t
    = "camera_to_transform"
  external to_cull_settings : Osg.Camera.t -> Osg.Cull_settings.t
    = "camera_to_cull_settings"
  external get_projection_matrix : Osg.Camera.t -> Osg.Matrix.t
    = "camera_get_projection_matrix"
  external get_view_matrix : Osg.Camera.t -> Osg.Matrix.t
    = "camera_get_view_matrix"
  external get_viewport : Osg.Camera.t -> Osg.Viewport.t
    = "camera_get_viewport"
  external set_projection_matrix : Osg.Camera.t -> Osg.Matrix.t -> unit
    = "camera_set_projection_matrix"
  external set_view_matrix : Osg.Camera.t -> Osg.Matrix.t -> unit
    = "camera_set_view_matrix"
  external set_viewport : Osg.Camera.t -> Osg.Viewport.t -> unit
    = "camera_set_viewport"
  val gl_COLOR_BUFFER_BIT : int
  val gl_DEPTH_BUFFER_BIT : int
  val gl_ACCUM_BUFFER_BIT : int
  val gl_STENCIL_BUFFER_BIT : int
  external set_clear_mask : Osg.Camera.t -> int -> unit
    = "camera_set_clear_mask"
  type transform_order = PRE_MULTIPLY | POST_MULTIPLY
  external set_transform_order :
    Osg.Camera.t -> Osg.Camera.transform_order -> unit
    = "camera_set_transform_order"
  external set_clear_color : Osg.Camera.t -> Osg.Vec4.t -> unit
    = "camera_set_clear_color"
  val set_compute_near_far_mode :
    Osg.Camera.t -> Osg.Cull_settings.compute_near_far_mode -> unit
  val set_reference_frame :
    Osg.Camera.t -> Osg.Transform.reference_frame -> unit
  type render_order = PRE_RENDER | NESTED_RENDER | POST_RENDER
  external set_render_order : Osg.Camera.t -> Osg.Camera.render_order -> unit
    = "camera_set_render_order"
  type render_target_implementation =
      FRAME_BUFFER_OBJECT
    | PIXEL_BUFFER_RTT
    | PIXEL_BUFFER
    | FRAME_BUFFER
    | SEPARATE_WINDOW
  external set_render_target_implementation :
    Osg.Camera.t -> Osg.Camera.render_target_implementation -> unit
    = "camera_set_render_target_implementation"
  type buffer_component =
      DEPTH_BUFFER
    | STENCIL_BUFFER
    | COLOR_BUFFER
    | COLOR_BUFFER0
    | COLOR_BUFFER1
    | COLOR_BUFFER2
    | COLOR_BUFFER3
    | COLOR_BUFFER4
    | COLOR_BUFFER5
    | COLOR_BUFFER6
    | COLOR_BUFFER7
  external attach_texture :
    Osg.Camera.t -> Osg.Camera.buffer_component -> Osg.Texture.t -> unit
    = "camera_attach_texture"
  val create_internal :
    (Osg.Camera.t -> 'a) ->
    ?projection_matrix:Osg.Matrix.t ->
    ?view_matrix:Osg.Matrix.t ->
    ?viewport:Osg.Viewport.t ->
    ?clear_mask:int ->
    ?transform_order:Osg.Camera.transform_order ->
    ?clear_color:Osg.Vec4.t ->
    ?compute_near_far_mode:Osg.Cull_settings.compute_near_far_mode ->
    ?reference_frame:Osg.Transform.reference_frame ->
    ?render_order:Osg.Camera.render_order ->
    ?render_target_implementation:Osg.Camera.render_target_implementation ->
    ?textures:(Osg.Camera.buffer_component * Osg.Texture.t) list ->
    ?children:Osg.Node.t list -> unit -> 'a
  val create :
    ?projection_matrix:Osg.Matrix.t ->
    ?view_matrix:Osg.Matrix.t ->
    ?viewport:Osg.Viewport.t ->
    ?clear_mask:int ->
    ?transform_order:Osg.Camera.transform_order ->
    ?clear_color:Osg.Vec4.t ->
    ?compute_near_far_mode:Osg.Cull_settings.compute_near_far_mode ->
    ?reference_frame:Osg.Transform.reference_frame ->
    ?render_order:Osg.Camera.render_order ->
    ?render_target_implementation:Osg.Camera.render_target_implementation ->
    ?textures:(Osg.Camera.buffer_component * Osg.Texture.t) list ->
    ?children:Osg.Node.t list -> unit -> Osg.Node.t
  val labl_create :
    ?projection_matrix:Osg.Matrix.t ->
    ?view_matrix:Osg.Matrix.t ->
    ?viewport:Osg.Viewport.t ->
    ?clear_mask:int ->
    ?transform_order:Osg.Camera.transform_order ->
    ?clear_color:Osg.Vec4.t ->
    ?compute_near_far_mode:Osg.Cull_settings.compute_near_far_mode ->
    ?reference_frame:Osg.Transform.reference_frame ->
    ?render_order:Osg.Camera.render_order ->
    ?render_target_implementation:Osg.Camera.render_target_implementation ->
    ?textures:(Osg.Camera.buffer_component * Osg.Texture.t) list ->
    ?children:Osg.Node.t list -> unit -> Osg.Camera.t
end