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_FUNCTIONS_MAP

Fiddle’s default ‘extern’ stores all methods into local variable ‘@func_map’, that makes difficult to ‘include GLFW’. So I override it and replace ‘@func_map’ into ‘GLFW_FUNCTIONS_MAP’. Ref.: /lib/ruby/2.0.0/fiddle/import.rb

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 243
def self.create_callback( sym, *opts, &blk )
  return bind( @@glu_cb_signature[sym], opts, &blk )
end
extern(signature, *opts) click to toggle source
# File lib/glu.rb, line 14
  def self.extern(signature, *opts)
    symname, ctype, argtype = parse_signature(signature, @type_alias)
    opt = parse_bind_options(opts)
    f = import_function(symname, ctype, argtype, opt[:call_type])
    name = symname.gsub(/@.+/,'')
    GLU_FUNCTIONS_MAP[name] = f
    begin
      /^(.+?):(\d+)/ =~ caller.first
      file, line = $1, $2.to_i
    rescue
      file, line = __FILE__, __LINE__+3
    end
    args_str="*args"
    module_eval(<<-EOS, file, line)
      def #{name}(*args, &block)
        GLU_FUNCTIONS_MAP['#{name}'].call(*args,&block)
      end
    EOS
    module_function(name)
    f
  end
import_symbols() click to toggle source
# File lib/glu.rb, line 276
def self.import_symbols
  # function
  extern 'void gluBeginCurve (void*)'
  extern 'void gluBeginPolygon (void*)'
  extern 'void gluBeginSurface (void*)'
  extern 'void gluBeginTrim (void*)'
  # extern 'int gluBuild1DMipmapLevels (unsigned int, int, int, unsigned int, unsigned int, int, int, int, void*)' # Unavailable on Windows
  extern 'int gluBuild1DMipmaps (unsigned int, int, int, unsigned int, unsigned int,  void*)'
  # extern 'int gluBuild2DMipmapLevels (unsigned int, int, int, int, unsigned int, unsigned int, int, int, int,  void*)' # Unavailable on Windows
  extern 'int gluBuild2DMipmaps (unsigned int, int, int, int, unsigned int, unsigned int,  void*)'
  # extern 'int gluBuild3DMipmapLevels (unsigned int, int, int, int, int, unsigned int, unsigned int, int, int, int,  void*)' # Unavailable on Windows
  # extern 'int gluBuild3DMipmaps (unsigned int, int, int, int, int, unsigned int, unsigned int,  void*)' # Unavailable on Windows
  # extern 'unsigned char gluCheckExtension ( unsigned char*,  unsigned char*)' # Unavailable on Windows
  extern 'void gluCylinder (void*, double, double, double, int, int)'
  extern 'void gluDeleteNurbsRenderer (void*)'
  extern 'void gluDeleteQuadric (void*)'
  extern 'void gluDeleteTess (void*)'
  extern 'void gluDisk (void*, double, double, int, int)'
  extern 'void gluEndCurve (void*)'
  extern 'void gluEndPolygon (void*)'
  extern 'void gluEndSurface (void*)'
  extern 'void gluEndTrim (void*)'
  extern 'unsigned char* gluErrorString (unsigned int)'
  extern 'void gluGetNurbsProperty (void*, unsigned int, float*)'
  extern 'unsigned char* gluGetString (unsigned int)'
  extern 'void gluGetTessProperty (void*, unsigned int, double*)'
  extern 'void gluLoadSamplingMatrices (void*,  float *,  float *,  int *)'
  extern 'void gluLookAt (double, double, double , double, double , double, double , double, double)'
  extern 'void* gluNewNurbsRenderer ()'
  extern 'void* gluNewQuadric ()'
  extern 'void* gluNewTess ()'
  extern 'void gluNextContour (void*, unsigned int)'
  extern 'void gluNurbsCallback (void*, unsigned int, void*)'
  # extern 'void gluNurbsCallbackData (void*, void*)' # Unavailable on Windows
  # extern 'void gluNurbsCallbackDataEXT (void*, void*)' # Unavailable on Windows
  extern 'void gluNurbsCurve (void*, int, float *, int, float* , int, unsigned int)'
  extern 'void gluNurbsProperty (void*, unsigned int, float)'
  extern 'void gluNurbsSurface (void*, int, float*, int, float*, int, int, float*, int, int, unsigned int)'
  extern 'void gluOrtho2D (double, double, double, double)'
  extern 'void gluPartialDisk (void*, double, double, int, int, double, double)'
  extern 'void gluPerspective (double, double, double, double)'
  extern 'void gluPickMatrix (double, double, double, double, int *)'
  extern 'int gluProject (double, double, double,  double *,  double *, int *, double*, double*, double*)'
  extern 'void gluPwlCurve (void*, int, float*, int, unsigned int)'
  extern 'void gluQuadricCallback (void*, unsigned int, void*)'
  extern 'void gluQuadricDrawStyle (void*, unsigned int)'
  extern 'void gluQuadricNormals (void*, unsigned int)'
  extern 'void gluQuadricOrientation (void*, unsigned int)'
  extern 'void gluQuadricTexture (void*, unsigned char)'
  extern 'int gluScaleImage (unsigned int, int, int, unsigned int,  void*, int, int, unsigned int, void*)'
  extern 'void gluSphere (void*, double, int, int)'
  extern 'void gluTessBeginContour (void*)'
  extern 'void gluTessBeginPolygon (void*, void*)'
  extern 'void gluTessCallback (void*, unsigned int, void*)'
  extern 'void gluTessEndContour (void*)'
  extern 'void gluTessEndPolygon (void*)'
  extern 'void gluTessNormal (void*, double, double, double)'
  extern 'void gluTessProperty (void*, unsigned int, double)'
  extern 'void gluTessVertex (void*, double *, void*)'
  extern 'int gluUnProject (double, double, double,  double *,  double *,  int *, double*, double*, double*)'
  # extern 'int gluUnProject4 (double, double, double, double,  double *,  double *,  int *, double, double, double*, double*, double*, double*)' # Unavailable on Windows

  @@glu_import_done = true
end
load_dll(lib = nil, path = nil) click to toggle source
# File lib/glu.rb, line 271
def self.load_dll(lib = nil, path = nil)
   puts "Warning GLU.load_dll is deprecated, use GLU.load_lib instead"
  self.load_lib(lib, path)
end
load_lib(lib = nil, path = nil) click to toggle source

Load native library.

# File lib/glu.rb, line 252
def self.load_lib(lib = nil, path = nil)
  if lib == nil && path == nil
    case OpenGL.get_platform
    when :OPENGL_PLATFORM_WINDOWS
      lib, path = 'GLU32.dll', 'C:/Windows/System32'
    when :OPENGL_PLATFORM_MACOSX
      lib, path = 'libGLU.dylib', '/System/Library/Frameworks/OpenGL.framework/Libraries'
    else
      lib = 'libGLU.so'
    end
  end
  if path
    dlload (path + '/' + lib)
  else
    dlload (lib)
  end
  import_symbols() unless @@glu_import_done
end