Code covered by the BSD License  

Highlights from
OpenGL .NET Examples

image thumbnail
from OpenGL .NET Examples by Dirk-Jan Kroon
Matlab OpenGL .NET code and examples for R2009a and above

Painters(id)
function 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)
   I=imread('texture.png');
   data.TextureID=loadOpenGLTexture(I,Gl.GL_RGB,Gl.GL_RGB8,'linear');
   % Store the render data
   setappdata(0,[StoreName '_data'],data);
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];

% Select our texture
Gl.glBindTexture(Gl.GL_TEXTURE_2D, data.TextureID);
   
% Enable texture rendering
Gl.glEnable(Gl.GL_TEXTURE_2D);

Gl.glBegin(Gl.GL_QUADS);
    % 1e Face
    Gl.glTexCoord2f(0,0);	
    Gl.glVertex3f(cornersx(1), cornersy(1), cornersz(1));
    Gl.glTexCoord2f(1,0);		
    Gl.glVertex3f(cornersx(2), cornersy(2), cornersz(2));				
    Gl.glTexCoord2f(1,1);
    Gl.glVertex3f(cornersx(4), cornersy(4), cornersz(4));				
    Gl.glTexCoord2f(0,1);				
    Gl.glVertex3f(cornersx(3), cornersy(3), cornersz(3));		
    % 2e Face
    Gl.glTexCoord2f(0,0);	
    Gl.glVertex3f(cornersx(7), cornersy(7), cornersz(7));				
    Gl.glTexCoord2f(1,0);		
    Gl.glVertex3f(cornersx(8), cornersy(8), cornersz(8));				
    Gl.glTexCoord2f(1,1);
    Gl.glVertex3f(cornersx(6), cornersy(6), cornersz(6));				
    Gl.glTexCoord2f(0,1);				
    Gl.glVertex3f(cornersx(5), cornersy(5), cornersz(5));

    % 3e Face
    Gl.glTexCoord2f(0,0);	
    Gl.glVertex3f(cornersx(1), cornersy(1), cornersz(1));				
    Gl.glTexCoord2f(1,0);		
    Gl.glVertex3f(cornersx(5), cornersy(5), cornersz(5));				
    Gl.glTexCoord2f(1,1);
    Gl.glVertex3f(cornersx(6), cornersy(6), cornersz(6));				
    Gl.glTexCoord2f(0,1);				
    Gl.glVertex3f(cornersx(2), cornersy(2), cornersz(2));
    
    % 4e Face
    Gl.glTexCoord2f(0,0);	
    Gl.glVertex3f(cornersx(3), cornersy(3), cornersz(3));				
    Gl.glTexCoord2f(1,0);		
    Gl.glVertex3f(cornersx(4), cornersy(4), cornersz(4));				
    Gl.glTexCoord2f(1,1);
    Gl.glVertex3f(cornersx(8), cornersy(8), cornersz(8));				
    Gl.glTexCoord2f(0,1);				
    Gl.glVertex3f(cornersx(7), cornersy(7), cornersz(7));
    
    % 5e Face
    Gl.glTexCoord2f(0,0);	
    Gl.glVertex3f(cornersx(4), cornersy(4), cornersz(4));				
    Gl.glTexCoord2f(1,0);		
    Gl.glVertex3f(cornersx(2), cornersy(2), cornersz(2));				
    Gl.glTexCoord2f(1,1);
    Gl.glVertex3f(cornersx(6), cornersy(6), cornersz(6));				
    Gl.glTexCoord2f(0,1);				
    Gl.glVertex3f(cornersx(8), cornersy(8), cornersz(8));

    % 6e Face
    Gl.glTexCoord2f(0,0);	
    Gl.glVertex3f(cornersx(3), cornersy(3), cornersz(3));				
    Gl.glTexCoord2f(1,0);		
    Gl.glVertex3f(cornersx(1), cornersy(1), cornersz(1));				
    Gl.glTexCoord2f(1,1);
    Gl.glVertex3f(cornersx(5), cornersy(5), cornersz(5));				
    Gl.glTexCoord2f(0,1);				
    Gl.glVertex3f(cornersx(7), cornersy(7), cornersz(7));

Gl.glEnd(); 

% Disable Texture rendering
Gl.glDisable(Gl.GL_TEXTURE_2D);

% Flush the pipeline, update the graphics buffer
Gl.glFlush();


Contact us at files@mathworks.com