Vuo  0.4.2
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Macros | Typedefs | Functions

Description

A graphics shader program, specifying how to render a 3D object.

Classes

struct  _VuoShader
 A graphics shader program, specifying how to render a 3D object. More...
 

Macros

#define VUOSHADER_GLSL_SOURCE(version, source)   "#version " #version "\n" #source
 A macro to facilitate defining a GLSL shader in a C source file.
 

Typedefs

typedef struct _VuoShaderVuoShader
 A graphics shader program, specifying how to render a 3D object.
 

Functions

void VuoShader_free (void *shader)
 Decrements the retain count of the OpenGL Texture Object associated with the specified VuoImage, and frees the texture VuoImage struct.
 
void VuoShader_printShaderInfoLog (GLuint obj)
 Prints GLSL debug information to the console.
 
void VuoShader_printProgramInfoLog (GLuint obj)
 Prints GLSL debug information to the console.
 
VuoShader VuoShader_make (const char *vertexShaderSource, const char *fragmentShaderSource)
 Compiles, links, and uploads the specified shader sources.
 
VuoShader VuoShader_valueFromString (const char *initializer)
 Unserializes the pointer in initializer.
 
char * VuoShader_stringFromValue (const VuoShader value)
 Serializes the pointer to the VuoShader object, since we need to preserve its reference count.
 
char * VuoShader_summaryFromValue (const VuoShader value)
 
VuoShader VuoShader_makeImageShader (void)
 Returns a shader that renders objects with an image (ignoring lighting), specified by uniform texture.
 
void VuoShader_resetTextures (VuoShader shader)
 Empties the list of textures associated with shader.
 
void VuoShader_addTexture (VuoShader shader, VuoImage texture, const char *uniformIdentifier)
 Adds to shader an association between texture and uniformIdentifier.
 

Class Documentation

struct _VuoShader
Class Members
unsigned int glFragmentShaderName
unsigned int glProgramName
VuoList_VuoInteger glTextureUniformLocations
unsigned int glVertexShaderName
VuoList_VuoImage textures

Typedef Documentation

typedef struct _VuoShader * VuoShader

A graphics shader program, specifying how to render a 3D object.

The struct is typedef'd to a pointer so that VuoShaders are reference-counted, enabling us to automatically delete the GL Program Objects when the last reference is released.

Function Documentation

void VuoShader_addTexture ( VuoShader  shader,
VuoImage  texture,
const char *  uniformIdentifier 
)

Adds to shader an association between texture and uniformIdentifier.

May be called from any thread (doesn't require an existing GL Context).

void VuoShader_free ( void *  shader)

Decrements the retain count of the OpenGL Texture Object associated with the specified VuoImage, and frees the texture VuoImage struct.

May be called from any thread (doesn't require an existing GL Context).

VuoShader VuoShader_make ( const char *  vertexShaderSource,
const char *  fragmentShaderSource 
)

Compiles, links, and uploads the specified shader sources.

The vertex shader must define:

uniform mat4 projectionMatrix;
uniform mat4 modelviewMatrix;
attribute vec4 position;
attribute vec4 normal;
attribute vec4 tangent;
attribute vec4 bitangent;
attribute vec4 textureCoordinate;

May be called from any thread (doesn't require an existing GL Context).

void VuoShader_printProgramInfoLog ( GLuint  obj)

Prints GLSL debug information to the console.

Must be called from a thread with an active GL Context.

void VuoShader_printShaderInfoLog ( GLuint  obj)

Prints GLSL debug information to the console.

Must be called from a thread with an active GL Context.

char * VuoShader_summaryFromValue ( const VuoShader  value)