From BlenderWiki

Jump to: navigation, search
Note: This is an archived version of the Blender Developer Wiki. The current and active wiki is available on wiki.blender.org.

The Pixels Aspect

Header File: GPU_pixels.h

This aspect is meant to replace Bitmap and DrawPixels. However, it is different enough from OpenGL that all of the module's symbols have been prefixed with GPU_.

Switching

void GPU_pixels_begin(void);
void GPU_pixels_end  (void);

Instead of using the GPU_aspect_begin function to switch into the Pixel aspect, this call has been wrapped with GPU_pixels_begin. Similarly with GPU_pixels_end. These functions take care of ending the previous aspect (assumed to be Basic) and starting the Font aspect.

Unlike the other aspects these begin/end wrapper functions are somewhat smart about default state and will automatically return OpenGL to its default PixelStore state when GPU_pixels_end is called.

Pixels

typedef struct GPUbitmap {
	GLsizei        width, height;
	GLsizei        xorig, yorig;
	const GLubyte* bitmap;
} GPUbitmap;
 
typedef struct GPUpixels {
	GLsizei       width, height;
	GLenum        format;
	GLenum        type;
	const GLvoid* pixels;
} GPUpixels;
void GPU_bitmap(GPUbitmap* bitmap);
void GPU_pixels(GPUpixels* pixels);

Position

void GPU_pixels_pos_2f(GLfloat x, GLfloat y);
void GPU_pixels_pos_3f(GLfloat x, GLfloat y, GLfloat z);

Format

void GPU_pixels_format(GLenum pname, GLint param);
GL_UNPACK_ROW_LENGTH
GL_UNPACK_SWAP_BYTES
GL_UNPACK_ALIGNMENT

The parameters passed to GPU_pixels_format control how data is read by GPU_pixels and GPU_pixels_cache.

Caching

Normally DrawPixels does not cache pixel data on the graphics card, leading to inefficiencies.

void GPU_bitmap_cache  (GPUbitmap* bitmap);
void GPU_pixels_cache  (GPUpixels* pixels);
 
void GPU_bitmap_uncache(GPUbitmap* bitmap);
void GPU_pixels_uncache(GPUpixels* pixels);

Zoom

void GPU_pixels_zoom(GLfloat xfactor, GLfloat yfactor);
void GPU_get_pixels_zoom(GLfloat* xfactor_out, GLfloat *yfactor_out);

The zoom factor passed into GPU_pixels_zoom has an effect similar to PixelZoom.

Other Parameters

void GPU_pixels_uniform_1f(GLenum pname, GLfloat param);
GL_RED_SCALE  
GL_RED_BIAS   
GL_GREEN_SCALE
GL_GREEN_BIAS 
GL_BLUE_SCALE 
GL_BLUE_BIAS  
GL_ALPHA_SCALE
GL_ALPHA_BIAS

The parameters passed to GPU_pixels_uniform_1f modify the color of the pixels drawn to the screen.