Exemplo n.º 1
0
from pyglet.gl import (
    GLdouble, GLenum, GLfloat, GLvoid,
    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_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),
Exemplo n.º 2
0
from sys import platform
from ctypes import CFUNCTYPE, POINTER, byref, cast
from ctypes import CFUNCTYPE as _CFUNCTYPE
from pyglet.gl import \
    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:
Exemplo n.º 3
0
from pyglet.gl import (
    GLdouble, GLenum, GLfloat, GLvoid,
    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_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),
Exemplo n.º 4
0
from sys import platform
from ctypes import CFUNCTYPE, POINTER, byref, cast
from ctypes import CFUNCTYPE as _CFUNCTYPE
from pyglet.gl import \
    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,