示例#1
0
def glGetTexImage( target, level,format,type, outputType=str ):
	"""Get a texture-level as an image
	
	target -- enum constant for the texture engine to be read 
	level -- the mip-map level to read 
	format -- image format to read out the data 
	type -- data-type into which to read the data
	
	outputType -- default (str) provides string output of the 
		results iff OpenGL.UNSIGNED_BYTE_IMAGES_AS_STRING is True 
		and type == GL_UNSIGNED_BYTE.  Any other value will cause 
		output in the default array output format.
	
	returns the pixel data array in the format defined by the 
	format, type and outputType
	"""
	from OpenGL.GL import glget
	dims = [glget.glGetTexLevelParameteriv( target, level, simple.GL_TEXTURE_WIDTH )]
	if target != simple.GL_TEXTURE_1D:
		dims.append( glget.glGetTexLevelParameteriv( target, level, simple.GL_TEXTURE_HEIGHT ) )
		if target != simple.GL_TEXTURE_2D:
			dims.append( glget.glGetTexLevelParameteriv( target, level, simple.GL_TEXTURE_DEPTH ) )
	array = images.SetupPixelRead( format, tuple(dims), type )
	arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ images.TYPE_TO_ARRAYTYPE.get(type,type) ]
	simple.glGetTexImage( 
		target, level, format, type, ctypes.c_void_p( arrayType.dataPointer(array)) 
	)
	if outputType is str:
		return images.returnFormat( array, type )
	else:
		return array
示例#2
0
	def glGetTexImage( target, level,format,type=type ):
		"""Get a texture-level as an image"""
		from OpenGL.GL import glget
		dims = [glget.glGetTexLevelParameteriv( target, level, simple.GL_TEXTURE_WIDTH )]
		if target != simple.GL_TEXTURE_1D:
			dims.append( glget.glGetTexLevelParameteriv( target, level, simple.GL_TEXTURE_HEIGHT ) )
			if target != simple.GL_TEXTURE_2D:
				dims.append( glget.glGetTexLevelParameteriv( target, level, simple.GL_TEXTURE_DEPTH ) )
		array = images.SetupPixelRead( format, tuple(dims), type )
		arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ images.TYPE_TO_ARRAYTYPE.get(type,type) ]
		simple.glGetTexImage( 
			target, level, format, type, ctypes.c_void_p( arrayType.dataPointer(array)) 
		)
		return array
 def glGetCompressedTexImageARB( target, level, img=None ):
     """Retrieve a compressed texture image"""
     if img is None:
         length = glget.glGetTexLevelParameteriv(
             target, 0,
             GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB,
         )
         img = arrays.ArrayDataType.zeros( (length,), constants.GL_UNSIGNED_BYTE )
     return glGetCompressedTexImageARB(target, 0, img);