def gluUnProject4(baseFunction, winX, winY, winZ, clipW, model=None, proj=None, view=None, near=0.0, far=1.0): """Convenience wrapper for gluUnProject Automatically fills in the model, projection and viewing matrices if not provided. returns (objX,objY,objZ) doubles """ if model is None: model = GL.glGetDoublev(GL.GL_MODELVIEW_MATRIX) if proj is None: proj = GL.glGetDoublev(GL.GL_PROJECTION_MATRIX) if view is None: view = GL.glGetIntegerv(GL.GL_VIEWPORT) objX = _simple.GLdouble(0.0) objY = _simple.GLdouble(0.0) objZ = _simple.GLdouble(0.0) objW = _simple.GLdouble(0.0) result = baseFunction(winX, winY, winZ, model, proj, view, ctypes.byref(objX), ctypes.byref(objY), ctypes.byref(objZ), ctypes.byref(objW)) if not result: raise ValueError("""Projection failed!""") return objX.value, objY.value, objZ.value, objW.value
def gluGetTessProperty(baseFunction, tess, which, data=None): """Retrieve single double for a tessellator property""" if data is None: data = _simple.GLdouble(0.0) baseFunction(tess, which, data) return data.value else: return baseFunction(tess, which, data)
def gluProject(baseFunction, objX, objY, objZ, model=None, proj=None, view=None): """Convenience wrapper for gluProject Automatically fills in the model, projection and viewing matrices if not provided. returns (winX,winY,winZ) doubles """ if model is None: model = GL.glGetDoublev(GL.GL_MODELVIEW_MATRIX) if proj is None: proj = GL.glGetDoublev(GL.GL_PROJECTION_MATRIX) if view is None: view = GL.glGetIntegerv(GL.GL_VIEWPORT) winX = _simple.GLdouble(0.0) winY = _simple.GLdouble(0.0) winZ = _simple.GLdouble(0.0) result = baseFunction( objX, objY, objZ, model, proj, view, winX, winY, winZ, ) # On Ubuntu 9.10 we see a None come out of baseFunction, # despite it having a return-type specified of GLint! if result is not None and result != _simple.GLU_TRUE: raise ValueError("""Projection failed!""") return winX.value, winY.value, winZ.value
def gluProject(baseFunction, objX, objY, objZ, model=None, proj=None, view=None): """Convenience wrapper for gluProject Automatically fills in the model, projection and viewing matrices if not provided. returns (winX,winY,winZ) doubles """ if model is None: model = GL.glGetDoublev(GL.GL_MODELVIEW_MATRIX) if proj is None: proj = GL.glGetDoublev(GL.GL_PROJECTION_MATRIX) if view is None: view = GL.glGetIntegerv(GL.GL_VIEWPORT) winX = simple.GLdouble(0.0) winY = simple.GLdouble(0.0) winZ = simple.GLdouble(0.0) result = baseFunction( objX, objY, objZ, model, proj, view, winX, winY, winZ, ) if not result: raise ValueError("""Projection failed!""") return winX.value, winY.value, winZ.value