module GLU

Constants

GLU_AUTO_LOAD_MATRIX

NurbsProperty

GLU_BEGIN
GLU_CCW
GLU_CULLING
GLU_CW

TessContour

GLU_DISPLAY_MODE
GLU_DOMAIN_DISTANCE
GLU_EDGE_FLAG
GLU_END
GLU_ERROR
GLU_EXTENSIONS
GLU_EXTERIOR
GLU_EXT_nurbs_tessellator
GLU_EXT_object_space_tess

Extensions

GLU_FALSE

Boolean

GLU_FILL
GLU_FLAT
GLU_INCOMPATIBLE_GL_VERSION
GLU_INSIDE
GLU_INTERIOR
GLU_INVALID_ENUM

ErrorCode

GLU_INVALID_OPERATION
GLU_INVALID_VALUE
GLU_LINE
GLU_MAP1_TRIM_2

NurbsTrim

GLU_MAP1_TRIM_3
GLU_NONE
GLU_NURBS_BEGIN
GLU_NURBS_BEGIN_DATA
GLU_NURBS_BEGIN_DATA_EXT
GLU_NURBS_BEGIN_EXT
GLU_NURBS_COLOR
GLU_NURBS_COLOR_DATA
GLU_NURBS_COLOR_DATA_EXT
GLU_NURBS_COLOR_EXT
GLU_NURBS_END
GLU_NURBS_END_DATA
GLU_NURBS_END_DATA_EXT
GLU_NURBS_END_EXT
GLU_NURBS_ERROR

NurbsCallback

GLU_NURBS_ERROR1

NurbsError

GLU_NURBS_ERROR10
GLU_NURBS_ERROR11
GLU_NURBS_ERROR12
GLU_NURBS_ERROR13
GLU_NURBS_ERROR14
GLU_NURBS_ERROR15
GLU_NURBS_ERROR16
GLU_NURBS_ERROR17
GLU_NURBS_ERROR18
GLU_NURBS_ERROR19
GLU_NURBS_ERROR2
GLU_NURBS_ERROR20
GLU_NURBS_ERROR21
GLU_NURBS_ERROR22
GLU_NURBS_ERROR23
GLU_NURBS_ERROR24
GLU_NURBS_ERROR25
GLU_NURBS_ERROR26
GLU_NURBS_ERROR27
GLU_NURBS_ERROR28
GLU_NURBS_ERROR29
GLU_NURBS_ERROR3
GLU_NURBS_ERROR30
GLU_NURBS_ERROR31
GLU_NURBS_ERROR32
GLU_NURBS_ERROR33
GLU_NURBS_ERROR34
GLU_NURBS_ERROR35
GLU_NURBS_ERROR36
GLU_NURBS_ERROR37
GLU_NURBS_ERROR4
GLU_NURBS_ERROR5
GLU_NURBS_ERROR6
GLU_NURBS_ERROR7
GLU_NURBS_ERROR8
GLU_NURBS_ERROR9
GLU_NURBS_MODE
GLU_NURBS_MODE_EXT
GLU_NURBS_NORMAL
GLU_NURBS_NORMAL_DATA
GLU_NURBS_NORMAL_DATA_EXT
GLU_NURBS_NORMAL_EXT
GLU_NURBS_RENDERER
GLU_NURBS_RENDERER_EXT
GLU_NURBS_TESSELLATOR
GLU_NURBS_TESSELLATOR_EXT
GLU_NURBS_TEXTURE_COORD
GLU_NURBS_TEXTURE_COORD_DATA
GLU_NURBS_TEX_COORD_DATA_EXT
GLU_NURBS_TEX_COORD_EXT
GLU_NURBS_VERTEX
GLU_NURBS_VERTEX_DATA
GLU_NURBS_VERTEX_DATA_EXT
GLU_NURBS_VERTEX_EXT
GLU_OBJECT_PARAMETRIC_ERROR

NurbsSampling

GLU_OBJECT_PARAMETRIC_ERROR_EXT
GLU_OBJECT_PATH_LENGTH
GLU_OBJECT_PATH_LENGTH_EXT
GLU_OUTLINE_PATCH
GLU_OUTLINE_POLYGON

NurbsDisplay GLU_FILL

GLU_OUTSIDE

QuadricOrientation

GLU_OUT_OF_MEMORY
GLU_PARAMETRIC_ERROR
GLU_PARAMETRIC_TOLERANCE
GLU_PATH_LENGTH
GLU_POINT

QuadricDrawStyle

GLU_SAMPLING_METHOD
GLU_SAMPLING_TOLERANCE
GLU_SILHOUETTE
GLU_SMOOTH

QuadricNormal

GLU_TESS_BEGIN

TessCallback

GLU_TESS_BEGIN_DATA
GLU_TESS_BOUNDARY_ONLY
GLU_TESS_COMBINE
GLU_TESS_COMBINE_DATA
GLU_TESS_COORD_TOO_LARGE
GLU_TESS_EDGE_FLAG
GLU_TESS_EDGE_FLAG_DATA
GLU_TESS_END
GLU_TESS_END_DATA
GLU_TESS_ERROR
GLU_TESS_ERROR1

TessError

GLU_TESS_ERROR2
GLU_TESS_ERROR3
GLU_TESS_ERROR4
GLU_TESS_ERROR5
GLU_TESS_ERROR6
GLU_TESS_ERROR7
GLU_TESS_ERROR8
GLU_TESS_ERROR_DATA
GLU_TESS_MAX_COORD
GLU_TESS_MISSING_BEGIN_CONTOUR
GLU_TESS_MISSING_BEGIN_POLYGON
GLU_TESS_MISSING_END_CONTOUR
GLU_TESS_MISSING_END_POLYGON
GLU_TESS_NEED_COMBINE_CALLBACK
GLU_TESS_TOLERANCE
GLU_TESS_VERTEX
GLU_TESS_VERTEX_DATA
GLU_TESS_WINDING_ABS_GEQ_TWO
GLU_TESS_WINDING_NEGATIVE
GLU_TESS_WINDING_NONZERO
GLU_TESS_WINDING_ODD

TessWinding

GLU_TESS_WINDING_POSITIVE
GLU_TESS_WINDING_RULE

TessProperty

GLU_TRUE
GLU_UNKNOWN
GLU_U_STEP
GLU_VERSION

StringName

GLU_VERSION_1_1

Version

GLU_VERSION_1_2
GLU_VERSION_1_3
GLU_VERTEX
GLU_V_STEP

Public Class Methods

create_callback(sym, *opts, &blk) click to toggle source
# File lib/glu.rb, line 215
def self.create_callback(sym, *opts, &blk)
  return bind(@@glu_cb_signature[sym], opts, &blk)
end
import_symbols(output_error = false) click to toggle source
# File lib/glu.rb, line 303
def self.import_symbols(output_error = false)

  # function
  @@lib_signature.each do |sig|
    begin
      extern sig
    rescue
      $stderr.puts("[Warning] Failed to import #{sig}.") if output_error
    end
  end

  # Convert method names (e.g.: GLU.gluBeginCurve -> GLU.BeginCurve)
  self.singleton_methods(false).each do |method_name|
    m = singleton_method(method_name)
    if m.name.to_s.start_with? 'glu'
      modified_api = m.name.to_s[3..-1] # omit prefix "glu"
      define_singleton_method(modified_api, m) # define alias
    end
  end

  # Convert constant names (e.g.: GLU::GLU_TRUE -> GLU::TRUE)
  self.constants.each do |constant|
    cs = constant.to_s
    if cs[0..3] == "GLU_"
      if cs[4] =~ /\d/
        # We have to abandon name conversion like 'GL_2D, GL_3D_COLOR, GL_4_BYTES, etc.
        # Because constants can't start with a digit or underscore.
        # [Note] This rule has been inherited from Yoshi's very original ruby-opengl (confirmed with opengl-0.32g, 2004-07-17).
      else
        # Convert by omitting the 'GLU_' prefix
        const_set(cs[4..-1], GLU.const_get(constant))
      end
    end
  end

  @@glu_import_done = true
end
load_lib(lib_path = nil, output_error = false) click to toggle source

Load native library.

# File lib/glu.rb, line 224
def self.load_lib(lib_path = nil, output_error = false)
  if lib_path == nil
    lib_path = case GL.get_platform
               when :OPENGL_PLATFORM_WINDOWS
                 'C:/Windows/System32/GLU32.dll'
               when :OPENGL_PLATFORM_MACOSX
                 '/System/Library/Frameworks/OpenGL.framework/Libraries/libGLU.dylib'
               else
                 'libGLU.so' # not tested
               end
  end

  dlload(lib_path)

  import_symbols(output_error) unless @@glu_import_done
end