function Shader_Code_Painters(id)
% Function is written by D.Kroon University of Twente (April 2009)
% From id get the render data
StoreName=['OpenGL' num2str(id)];
data=getappdata(0,[StoreName '_data']);
% Allow to use GL functions without prefixing with Tao.Opengl.
import Tao.OpenGl.*
if(data.FirstRender)
% Load shaders
data.program_id=loadOpenGLShader('fragment_program.glsl','vertex_program.glsl');
% Use / Enable the shader code
Gl.glUseProgram(data.program_id);
% Store the render data
setappdata(0,[StoreName '_data'],data);
end
if(data.FirstRender), pause(0.5), end
% Set background clear color to blue
Gl.glClearColor(0.2, 0.2, 0.2, 0.0);
% Clear the color and depth buffer
Gl.glClear(int32(bitor(uint32(Gl.GL_COLOR_BUFFER_BIT),uint32(Gl.GL_DEPTH_BUFFER_BIT))));
% Set depth testing enabled
Gl.glEnable(Gl.GL_DEPTH_TEST)
cornersx=[-1 1 -1 1 -1 1 -1 1];
cornersy=[-1 -1 1 1 -1 -1 1 1];
cornersz=[-1 -1 -1 -1 1 1 1 1];
cornersxt=[0 1 0 1 0 1 0 1];
cornersyt=[0 0 1 1 0 0 1 1];
cornerszt=[0 0 0 0 1 1 1 1];
% Enable texture rendering
Gl.glEnable(Gl.GL_TEXTURE_3D);
if(data.FirstRender), pause(0.5), end
Gl.glBegin(Gl.GL_QUADS);
% 1e Face
Gl.glTexCoord3f(cornersxt(1), cornersyt(1), cornerszt(1));
Gl.glVertex3f(cornersx(1), cornersy(1), cornersz(1));
Gl.glTexCoord3f(cornersxt(2), cornersyt(2), cornerszt(2));
Gl.glVertex3f(cornersx(2), cornersy(2), cornersz(2));
Gl.glTexCoord3f(cornersxt(4), cornersyt(4), cornerszt(4));
Gl.glVertex3f(cornersx(4), cornersy(4), cornersz(4));
Gl.glTexCoord3f(cornersxt(3), cornersyt(3), cornerszt(3));
Gl.glVertex3f(cornersx(3), cornersy(3), cornersz(3));
% 2e Face
Gl.glTexCoord3f(cornersxt(7), cornersyt(7), cornerszt(7));
Gl.glVertex3f(cornersx(7), cornersy(7), cornersz(7));
Gl.glTexCoord3f(cornersxt(8), cornersyt(8), cornerszt(8));
Gl.glVertex3f(cornersx(8), cornersy(8), cornersz(8));
Gl.glTexCoord3f(cornersxt(6), cornersyt(6), cornerszt(6));
Gl.glVertex3f(cornersx(6), cornersy(6), cornersz(6));
Gl.glTexCoord3f(cornersxt(5), cornersyt(5), cornerszt(5));
Gl.glVertex3f(cornersx(5), cornersy(5), cornersz(5));
% 3e Face
Gl.glTexCoord3f(cornersxt(1), cornersyt(1), cornerszt(1));
Gl.glVertex3f(cornersx(1), cornersy(1), cornersz(1));
Gl.glTexCoord3f(cornersxt(5), cornersyt(5), cornerszt(5));
Gl.glVertex3f(cornersx(5), cornersy(5), cornersz(5));
Gl.glTexCoord3f(cornersxt(6), cornersyt(6), cornerszt(6));
Gl.glVertex3f(cornersx(6), cornersy(6), cornersz(6));
Gl.glTexCoord3f(cornersxt(2), cornersyt(2), cornerszt(2));
Gl.glVertex3f(cornersx(2), cornersy(2), cornersz(2));
% 4e Face
Gl.glTexCoord3f(cornersxt(3), cornersyt(3), cornerszt(3));
Gl.glVertex3f(cornersx(3), cornersy(3), cornersz(3));
Gl.glTexCoord3f(cornersxt(4), cornersyt(4), cornerszt(4));
Gl.glVertex3f(cornersx(4), cornersy(4), cornersz(4));
Gl.glTexCoord3f(cornersxt(8), cornersyt(8), cornerszt(8));
Gl.glVertex3f(cornersx(8), cornersy(8), cornersz(8));
Gl.glTexCoord3f(cornersxt(7), cornersyt(7), cornerszt(7));
Gl.glVertex3f(cornersx(7), cornersy(7), cornersz(7));
% 5e Face
Gl.glTexCoord3f(cornersxt(4), cornersyt(4), cornerszt(4));
Gl.glVertex3f(cornersx(4), cornersy(4), cornersz(4));
Gl.glTexCoord3f(cornersxt(2), cornersyt(2), cornerszt(2));
Gl.glVertex3f(cornersx(2), cornersy(2), cornersz(2));
Gl.glTexCoord3f(cornersxt(6), cornersyt(6), cornerszt(6));
Gl.glVertex3f(cornersx(6), cornersy(6), cornersz(6));
Gl.glTexCoord3f(cornersxt(8), cornersyt(8), cornerszt(8));
Gl.glVertex3f(cornersx(8), cornersy(8), cornersz(8));
% 6e Face
Gl.glTexCoord3f(cornersxt(3), cornersyt(3), cornerszt(3));
Gl.glVertex3f(cornersx(3), cornersy(3), cornersz(3));
Gl.glTexCoord3f(cornersxt(1), cornersyt(1), cornerszt(1));
Gl.glVertex3f(cornersx(1), cornersy(1), cornersz(1));
Gl.glTexCoord3f(cornersxt(5), cornersyt(5), cornerszt(5));
Gl.glVertex3f(cornersx(5), cornersy(5), cornersz(5));
Gl.glTexCoord3f(cornersxt(7), cornersyt(7), cornerszt(7));
Gl.glVertex3f(cornersx(7), cornersy(7), cornersz(7));
Gl.glEnd();
% Disable Texture rendering
Gl.glDisable(Gl.GL_TEXTURE_3D);
% Flush the pipeline, update the graphics buffer
Gl.glFlush();