Beispiel #1
0
    gluErrorString, gluNewTess, gluTessBeginContour, gluTessBeginPolygon,
    gluTessCallback, gluTessEndContour, gluTessEndPolygon, gluTessNormal,
    gluTessProperty, gluTessVertex,
    GLU_TESS_BEGIN, GLU_TESS_COMBINE, GLU_TESS_END, GLU_TESS_ERROR,
    GLU_TESS_VERTEX, GLU_TESS_WINDING_ODD, GLU_TESS_WINDING_RULE,
)


class TesselateError(Exception):
    pass


tess = gluNewTess()
gluTessNormal(tess, 0, 0, 1)
default_winding_rule = GLU_TESS_WINDING_ODD
gluTessProperty(tess, GLU_TESS_WINDING_RULE, default_winding_rule)


if sys.platform == 'win32':
    from ctypes import WINFUNCTYPE
    c_functype = WINFUNCTYPE
else:
    c_functype = CFUNCTYPE


callback_types = {
    GLU_TESS_VERTEX: c_functype(None, POINTER(GLvoid)),
    GLU_TESS_BEGIN: c_functype(None, GLenum),
    GLU_TESS_END: c_functype(None),
    GLU_TESS_ERROR: c_functype(None, GLenum),
    GLU_TESS_COMBINE: c_functype(
    gluErrorString, gluNewTess, gluTessBeginContour, gluTessBeginPolygon,
    gluTessCallback, gluTessEndContour, gluTessEndPolygon, gluTessNormal,
    gluTessProperty, gluTessVertex,
    GLU_TESS_BEGIN, GLU_TESS_COMBINE, GLU_TESS_END, GLU_TESS_ERROR,
    GLU_TESS_VERTEX, GLU_TESS_WINDING_ODD, GLU_TESS_WINDING_RULE,
)


class TesselateError(Exception):
    pass


tess = gluNewTess()
gluTessNormal(tess, 0, 0, 1)
default_winding_rule = GLU_TESS_WINDING_ODD
gluTessProperty(tess, GLU_TESS_WINDING_RULE, default_winding_rule)


if sys.platform == 'win32':
    from ctypes import WINFUNCTYPE
    c_functype = WINFUNCTYPE
else:
    c_functype = CFUNCTYPE


callback_types = {
    GLU_TESS_VERTEX: c_functype(None, POINTER(GLvoid)),
    GLU_TESS_BEGIN: c_functype(None, GLenum),
    GLU_TESS_END: c_functype(None),
    GLU_TESS_ERROR: c_functype(None, GLenum),
    GLU_TESS_COMBINE: c_functype(
Beispiel #3
0
    GLdouble, GLvoid, GLenum, GLfloat, pointer, \
    gluNewTess, gluTessProperty, gluTessNormal, gluTessCallback, gluTessVertex, \
    gluTessBeginPolygon, gluTessEndPolygon, \
    gluTessBeginContour, gluTessEndContour, \
    GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_NONZERO, \
    GLU_TESS_VERTEX, GLU_TESS_BEGIN, GLU_TESS_END, GLU_TESS_ERROR, GLU_TESS_COMBINE, \
    GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP, GL_TRIANGLES, GL_LINE_LOOP

if platform == "win32":
    from ctypes import WINFUNCTYPE as CFUNCTYPE

_tessellator = gluNewTess()

# Winding rule determines the regions that should be filled and those that should remain unshaded.
# Winding direction is determined by the normal.
gluTessProperty(_tessellator, GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_NONZERO)
gluTessNormal(_tessellator, 0, 0, 1)

# As tessellation proceeds, callback routines are called in a manner 
# similar to OpenGL commands glBegin(), glEdgeFlag*(), glVertex*(), and glEnd().
# The callback functions must be C functions so we need to cast our Python callbacks to C.
_tessellate_callback_type = {
    GLU_TESS_VERTEX  : CFUNCTYPE(None, POINTER(GLvoid)),
    GLU_TESS_BEGIN   : CFUNCTYPE(None, GLenum),
    GLU_TESS_END     : CFUNCTYPE(None),
    GLU_TESS_ERROR   : CFUNCTYPE(None, GLenum),
    GLU_TESS_COMBINE : CFUNCTYPE(None, 
        POINTER(GLdouble), 
        POINTER(POINTER(GLvoid)), 
        POINTER(GLfloat), 
        POINTER(POINTER(GLvoid))) 
Beispiel #4
0
    GLdouble, GLvoid, GLenum, GLfloat,  \
    gluNewTess, gluTessProperty, gluTessNormal, gluTessCallback, gluTessVertex, \
    gluTessBeginPolygon, gluTessEndPolygon, \
    gluTessBeginContour, gluTessEndContour, \
    GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_NONZERO, \
    GLU_TESS_VERTEX, GLU_TESS_BEGIN, GLU_TESS_END, GLU_TESS_ERROR, GLU_TESS_COMBINE, \
    GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP, GL_TRIANGLES, GL_LINE_LOOP

if platform == "win32":
    from ctypes import WINFUNCTYPE as CFUNCTYPE

_tessellator = gluNewTess()

# Winding rule determines the regions that should be filled and those that should remain unshaded.
# Winding direction is determined by the normal.
gluTessProperty(_tessellator, GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_NONZERO)
gluTessNormal(_tessellator, 0, 0, 1)

# As tessellation proceeds, callback routines are called in a manner
# similar to OpenGL commands glBegin(), glEdgeFlag*(), glVertex*(), and glEnd().
# The callback functions must be C functions so we need to cast our Python callbacks to C.
_tessellate_callback_type = {
    GLU_TESS_VERTEX:
    CFUNCTYPE(None, POINTER(GLvoid)),
    GLU_TESS_BEGIN:
    CFUNCTYPE(None, GLenum),
    GLU_TESS_END:
    CFUNCTYPE(None),
    GLU_TESS_ERROR:
    CFUNCTYPE(None, GLenum),
    GLU_TESS_COMBINE:
Beispiel #5
0
    GL_TRIANGLES, GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP, 
    gluErrorString, gluNewTess, gluTessBeginContour, gluTessBeginPolygon,
    gluTessCallback, gluTessEndContour, gluTessEndPolygon, gluTessNormal,
    gluTessProperty, gluTessVertex, 
    GLU_TESS_BEGIN, GLU_TESS_COMBINE, GLU_TESS_END, GLU_TESS_ERROR,
    GLU_TESS_VERTEX, GLU_TESS_WINDING_NONZERO, GLU_TESS_WINDING_RULE,
)


class TesselateError(Exception):
    pass


tess = gluNewTess()
gluTessNormal(tess, 0, 0, 1)
gluTessProperty(tess, GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_NONZERO)


if sys.platform == 'win32':
    from ctypes import WINFUNCTYPE
    c_functype = WINFUNCTYPE
else:
    c_functype = CFUNCTYPE
    
 
callback_types = {
    GLU_TESS_VERTEX: c_functype(None, POINTER(GLvoid)),
    GLU_TESS_BEGIN: c_functype(None, GLenum),
    GLU_TESS_END: c_functype(None),
    GLU_TESS_ERROR: c_functype(None, GLenum),
    GLU_TESS_COMBINE: c_functype(