| Version 5 (modified by , 12 years ago) (diff) | 
|---|
OpenGL hands-on tutorial
Legacy OpenGL
Create the following first.c using your favourite editor.
#include <GL/glut.h> void display() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 0.4, 1.0); glBegin(GL_LINES); glVertex2f(0.1, 0.1); glVertex3f(0.8, 0.8, 1.0); glEnd(); glutSwapBuffers(); } int main(int argc, char *argv[]) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE); glutCreateWindow("first.c GL code"); glutDisplayFunc(display); glutMainLoop(); return 0; }
Create Makefile to build your program.
CFLAGS=-Wall LDFLAGS=-lGL -lGLU -lglut -lGLEW ALL=first default: $(ALL) first : first.o clean: rm -rf *~ *.o $(ALL)
Beware that Makefile is TAB aware. So the last line should contain TAB indentation and not spacing.
Make and run the program with
make ./first
Try the same program in Python
from OpenGL.GLUT import * from OpenGL.GL import * import sys def display(): glClear(GL_COLOR_BUFFER_BIT) glColor3f(1.0, 0.4, 1.0) glBegin(GL_LINES) glVertex2f(0.1, 0.1) glVertex3f(0.8, 0.8, 1.0) glEnd() glutSwapBuffers() if __name__ == "__main__": glutInit(sys.argv) glutInitDisplayMode(GLUT_DOUBLE) glutCreateWindow("first.py GL code") glutDisplayFunc(display) glutMainLoop()
and run it with
python first.py
Exercise #1:
- Add RGB color to vertices with 
glColor3f(0.0, 0.4, 1.0);. - Replace single line drawing in 
display()with the following snippetand try to draw two wireframe triangles in a loop. Change primitive toGLfloat vertices[][2] = { { -0.90, -0.90 }, // Triangle 1 { 0.85, -0.90 }, { -0.90, 0.85 }, { 0.90, -0.85 }, // Triangle 2 { 0.90, 0.90 }, { -0.85, 0.90 } };
GL_LINE_LOOP. - Draw two primitives with 
GL_TRIANGLES. - Add different color to each vertex.
GLfloat color[][3] = { {1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {1, 1, 0}, {0, 1, 1}, {1, 0, 1}};
 - Replace loop with the following
How can we add color to vertices? See glColorPointer and
glVertexPointer(2, GL_FLOAT, 0, &vertices[0][0]); glEnableClientState(GL_VERTEX_ARRAY); glDrawArrays(GL_TRIANGLES, 0, 6); glDisableClientState(GL_VERTEX_ARRAY);
 
Attachments (24)
- 
    ex1-5.png (6.0 KB) - added by  12 years ago.
              
Exercise #1.5
 - 
    first.png (3.9 KB) - added by  12 years ago.
              
Legacy sample
 - 
    triangle.png (2.9 KB) - added by  12 years ago.
              
First GLSL example
 - 
    OpenGL-pipeline.svg (19.7 KB) - added by  12 years ago.
              
OpenL pipeline
 - 
    temperature.png (5.8 KB) - added by  12 years ago.
              
Temperature varying field
 - 
    teapot.png (6.2 KB) - added by  12 years ago.
              
Famous Utah teapot from GLUT
 - 
    trackball.h (3.2 KB) - added by  12 years ago.
              
Header for trackball
 - 
    trackball.c (8.9 KB) - added by  12 years ago.
              
Virtual trackball source for interactivity
 - 
    motorBike.obj.gz (3.6 MB) - added by  12 years ago.
              
Example mesh from OpenFOAM tutorials/incompressible/simpleFoam/motorBike/constant/triSurface
 - 
    motorBike-subset.png (66.4 KB) - added by  12 years ago.
              
Complete motorBike mesh in VisIt
 - 
    motorBike.obj (10.2 MB) - added by  12 years ago.
              
Example mesh from OpenFOAM tutorials/incompressible/simpleFoam/motorBike/constant/triSurface
 - 
    motorBike.stl.bz2 (9.4 MB) - added by  12 years ago.
              
STL example from 1.7.1/run/tutorials/incompressible/simpleFoam/motorBike/constant/triSurface
 - 
    copper-mix.png (30.7 KB) - added by  12 years ago.
              
Copper mix Gouraud shading of the Teapot
 - 
    point-cloud.png (26.7 KB) - added by  12 years ago.
              
Point cloud from single vertex array
 - 
    helmet.obj (303.4 KB) - added by  12 years ago.
              
Rider's helmet with center at (0.5, 0, 1.2)
 - 
    temperature.c (5.2 KB) - added by  12 years ago.
              
Exercise 2.2
 - 
    teapot.c (4.7 KB) - added by  12 years ago.
              
Extended teapot example
 - 
    wavefront.c (1.9 KB) - added by  12 years ago.
              
Wavefront converter
 - 
    motorbike-shadow.png (28.2 KB) - added by  12 years ago.
              
Garbled normals on some parts of motorbike
 - 
    motorbike-final.png (13.1 KB) - added by  12 years ago.
              
Tooned motorbike example
 - 
    motorbike.c (8.0 KB) - added by  12 years ago.
              
Final motorbike source
 - 
    p_yNormal.vtk (1.7 MB) - added by  12 years ago.
              
motorBike VTK data for pressure at cutting plane at time 500
 - 
    pressure.png (22.3 KB) - added by  12 years ago.
              
Pressure from p_yNormal.vtk
 - 
    pressure.c (6.7 KB) - added by  12 years ago.
              
Pressure example
 
