using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tao.FreeGlut;
using Tao.OpenGl;
// draws jet
// working 2008/10/6 18:36
namespace AljoTestOpenGL1
{
class Program
{
private static void Init()
{
// pagina 196
float[] ambientlight = { 1.0f, 1.0f, 1.0f, 1.0f };
Gl.glEnable(Gl.GL_DEPTH_TEST);
Gl.glEnable(Gl.GL_CULL_FACE);
Gl.glFrontFace(Gl.GL_CCW);
Gl.glEnable(Gl.GL_LIGHTING);
Gl.glLightModelfv(Gl.GL_LIGHT_MODEL_AMBIENT, ambientlight);
Gl.glEnable(Gl.GL_COLOR_MATERIAL);
Gl.glColorMaterial(Gl.GL_FRONT, Gl.GL_AMBIENT_AND_DIFFUSE);
Gl.glClearColor(0.5f, 0.5f, 1.0f, 1.0f);
}
private static void Reshape(int w, int h)
{
if (h == 0) h = 1;
Gl.glMatrixMode(Gl.GL_PROJECTION);
Gl.glLoadIdentity();
Glu.gluPerspective(45.0, (double)w / (double)h, 0.1, 500.0);
Gl.glMatrixMode(Gl.GL_MODELVIEW);
}
private static void Display()
{
float[] ambientlight = { 0.75f, 0.75f, 0.75f, 1.0f };
float[] gray = { 0.75f, 0.75f, 0.75f, 1.0f };
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
Gl.glLoadIdentity();
Glu.gluLookAt(0.0, 150.0, 100.0, 0, 0, 0, 0, 1.0, 0);
// pagina 194
Gl.glShadeModel(Gl.GL_SMOOTH);
Gl.glEnable(Gl.GL_LIGHTING);
Gl.glEnable(Gl.GL_COLOR_MATERIAL);
Gl.glColorMaterial(Gl.GL_FRONT, Gl.GL_AMBIENT_AND_DIFFUSE);
Gl.glColor3f(0.75f, 0.75f, 0.75f);
Gl.glLightModelfv(Gl.GL_LIGHT_MODEL_AMBIENT, ambientlight);
Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_AMBIENT_AND_DIFFUSE, gray);
Gl.glRotatef(-45.0f, 1.0f, 0.0f, 0.0f);
Gl.glRotatef(20.0f, 0.0f, 1.0f, 0.0f);
Gl.glRotatef(30.0f, 0.0f, 0.0f, 1.0f);
Gl.glBegin(Gl.GL_TRIANGLES);
Gl.glVertex3f(0.0f, 0.0f, 60.0f);
Gl.glVertex3f(-15.0f, 0.0f, 30.0f);
Gl.glVertex3f(15.0f, 0.0f, 30.0f);
// Black
Gl.glColor3ub(0, 0, 0);
Gl.glVertex3f(15.0f, 0.0f, 30.0f);
Gl.glVertex3f(0.0f, 15.0f, 30.0f);
Gl.glVertex3f(0.0f, 0.0f, 60.0f);
// Red
Gl.glColor3ub(255, 0, 0);
Gl.glVertex3f(0.0f, 0.0f, 60.0f);
Gl.glVertex3f(0.0f, 15.0f, 30.0f);
Gl.glVertex3f(-15.0f, 0.0f, 30.0f);
// Body of the Plane ////////////////////////
// Green
Gl.glColor3ub(0, 255, 0);
Gl.glVertex3f(-15.0f, 0.0f, 30.0f);
Gl.glVertex3f(0.0f, 15.0f, 30.0f);
Gl.glVertex3f(0.0f, 0.0f, -56.0f);
Gl.glColor3ub(255, 255, 0);
Gl.glVertex3f(0.0f, 0.0f, -56.0f);
Gl.glVertex3f(0.0f, 15.0f, 30.0f);
Gl.glVertex3f(15.0f, 0.0f, 30.0f);
Gl.glColor3ub(0, 255, 255);
Gl.glVertex3f(15.0f, 0.0f, 30.0f);
Gl.glVertex3f(-15.0f, 0.0f, 30.0f);
Gl.glVertex3f(0.0f, 0.0f, -56.0f);
///////////////////////////////////////////////
// Left wing
// Large triangle for bottom of wing
Gl.glColor3ub(128, 128, 128);
Gl.glVertex3f(0.0f, 2.0f, 27.0f);
Gl.glVertex3f(-60.0f, 2.0f, -8.0f);
Gl.glVertex3f(60.0f, 2.0f, -8.0f);
Gl.glColor3ub(64, 64, 64);
Gl.glVertex3f(60.0f, 2.0f, -8.0f);
Gl.glVertex3f(0.0f, 7.0f, -8.0f);
Gl.glVertex3f(0.0f, 2.0f, 27.0f);
Gl.glColor3ub(192, 192, 192);
Gl.glVertex3f(60.0f, 2.0f, -8.0f);
Gl.glVertex3f(-60.0f, 2.0f, -8.0f);
Gl.glVertex3f(0.0f, 7.0f, -8.0f);
// Other wing top section
Gl.glColor3ub(64, 64, 64);
Gl.glVertex3f(0.0f, 2.0f, 27.0f);
Gl.glVertex3f(0.0f, 7.0f, -8.0f);
Gl.glVertex3f(-60.0f, 2.0f, -8.0f);
// Tail section///////////////////////////////
// Bottom of back fin
Gl.glColor3ub(255, 128, 255);
Gl.glVertex3f(-30.0f, -0.50f, -57.0f);
Gl.glVertex3f(30.0f, -0.50f, -57.0f);
Gl.glVertex3f(0.0f, -0.50f, -40.0f);
// top of left side
Gl.glColor3ub(255, 128, 0);
Gl.glVertex3f(0.0f, -0.5f, -40.0f);
Gl.glVertex3f(30.0f, -0.5f, -57.0f);
Gl.glVertex3f(0.0f, 4.0f, -57.0f);
// top of right side
Gl.glColor3ub(255, 128, 0);
Gl.glVertex3f(0.0f, 4.0f, -57.0f);
Gl.glVertex3f(-30.0f, -0.5f, -57.0f);
Gl.glVertex3f(0.0f, -0.5f, -40.0f);
// back of bottom of tail
Gl.glColor3ub(255, 255, 255);
Gl.glVertex3f(30.0f, -0.5f, -57.0f);
Gl.glVertex3f(-30.0f, -0.5f, -57.0f);
Gl.glVertex3f(0.0f, 4.0f, -57.0f);
// Top of Tail section left
Gl.glColor3ub(255, 0, 0);
Gl.glVertex3f(0.0f, 0.5f, -40.0f);
Gl.glVertex3f(3.0f, 0.5f, -57.0f);
Gl.glVertex3f(0.0f, 25.0f, -65.0f);
Gl.glColor3ub(255, 0, 0);
Gl.glVertex3f(0.0f, 25.0f, -65.0f);
Gl.glVertex3f(-3.0f, 0.5f, -57.0f);
Gl.glVertex3f(0.0f, 0.5f, -40.0f);
// Back of horizontal section
Gl.glColor3ub(128, 128, 128);
Gl.glVertex3f(3.0f, 0.5f, -57.0f);
Gl.glVertex3f(-3.0f, 0.5f, -57.0f);
Gl.glVertex3f(0.0f, 25.0f, -65.0f);
Gl.glEnd(); // Of Jet
Glut.glutSwapBuffers();
}
static void Main(string[] args)
{
Glut.glutInit();
Glut.glutInitDisplayMode(Glut.GLUT_DOUBLE | Glut.GLUT_RGB | Glut.GLUT_DEPTH);
Glut.glutInitWindowSize(600, 600);
Glut.glutCreateWindow("Aljo OpenGL Test 1");
Init();
Glut.glutDisplayFunc(new Glut.DisplayCallback(Display));
Glut.glutReshapeFunc(new Glut.ReshapeCallback(Reshape));
Glut.glutMainLoop();
}
}
}