func drawShip(angle gl.GLfloat) { gl.PushMatrix() gl.Translatef(x, y, 0.0) gl.Rotatef(angle, 0.0, 0.0, 1.0) if thrust { gl.Color3f(1.0, 0.0, 0.0) gl.Begin(gl.LINE_STRIP) gl.Vertex2f(-0.75, -0.5) gl.Vertex2f(-1.75, 0) gl.Vertex2f(-0.75, 0.5) gl.End() } gl.Color3f(1.0, 1.0, 0.0) gl.Begin(gl.LINE_LOOP) gl.Vertex2f(2.0, 0.0) gl.Vertex2f(-1.0, -1.0) gl.Vertex2f(-0.5, 0.0) gl.Vertex2f(-1.0, 1.0) gl.Vertex2f(2.0, 0.0) gl.End() if shield { gl.Color3f(0.1, 0.1, 1.0) gl.Begin(gl.LINE_LOOP) for rad := 0.0; rad < 12.0; rad += 1.0 { gl.Vertex2f( gl.GLfloat(2.3*math.Cos(2*float64(rad)/math.Pi)+0.2), gl.GLfloat(2.0*math.Sin(2*float64(rad)/math.Pi))) } gl.End() } gl.PopMatrix() }
func constrainedColor(constrain bool) { if constrain { // Green gl.Color3f(0, 1, 0) } else { // Red gl.Color3f(1, 0, 0) } }
func main() { var err os.Error if err = glfw.Init(); err != nil { fmt.Fprintf(os.Stderr, "%v\n", err) return } defer glfw.Terminate() // Open window with FSAA samples (if possible). glfw.OpenWindowHint(glfw.FsaaSamples, 4) if err = glfw.OpenWindow(400, 400, 0, 0, 0, 0, 0, 0, glfw.Windowed); err != nil { fmt.Fprintf(os.Stderr, "%v\n", err) return } defer glfw.CloseWindow() glfw.SetWindowTitle("Aliasing Detector") glfw.SetSwapInterval(1) if samples := glfw.WindowParam(glfw.FsaaSamples); samples != 0 { fmt.Fprintf(os.Stdout, "Context reports FSAA is supported with %d samples\n", samples) } else { fmt.Fprintf(os.Stdout, "Context reports FSAA is unsupported\n") } gl.MatrixMode(gl.PROJECTION) glu.Perspective(0, 1, 0, 1) for glfw.WindowParam(glfw.Opened) == 1 { time := float32(glfw.Time()) gl.Clear(gl.COLOR_BUFFER_BIT) gl.LoadIdentity() gl.Translatef(0.5, 0, 0) gl.Rotatef(time, 0, 0, 1) gl.Enable(GL_MULTISAMPLE_ARB) gl.Color3f(1, 1, 1) gl.Rectf(-0.25, -0.25, 0.25, 0.25) gl.LoadIdentity() gl.Translatef(-0.5, 0, 0) gl.Rotatef(time, 0, 0, 1) gl.Disable(GL_MULTISAMPLE_ARB) gl.Color3f(1, 1, 1) gl.Rectf(-0.25, -0.25, 0.25, 0.25) glfw.SwapBuffers() } }
func display() { gl.Clear(gl.COLOR_BUFFER_BIT) gl.Begin(gl.TRIANGLES) gl.Color3f(0.0, 0.0, 1.0) /* blue */ gl.Vertex2i(0, 0) gl.Color3f(0.0, 1.0, 0.0) /* green */ gl.Vertex2i(200, 200) gl.Color3f(1.0, 0.0, 0.0) /* red */ gl.Vertex2i(20, 200) gl.End() gl.Flush() /* Single buffered, so needs a flush. */ }
// Here goes our drawing code func drawGLScene() { // Clear the screen and depth buffer gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT) // Move left 1.5 units and into the screen 6.0 units. gl.LoadIdentity() gl.Translatef(-1.5, 0.0, -6.0) gl.Rotatef(float32(rtri), 0.0, 1.0, 0.0) // Rotate the triangle on the Y axis gl.Begin(gl.TRIANGLES) // Draw triangles gl.Color3f(1.0, 0.0, 0.0) // Set The Color To Red gl.Vertex3f(0.0, 1.0, 0.0) // top gl.Color3f(0.0, 1.0, 0.0) // Set The Color To Red gl.Vertex3f(-1.0, -1.0, 0.0) // bottom left gl.Color3f(0.0, 0.0, 1.0) // Set The Color To Red gl.Vertex3f(1.0, -1.0, 0.0) // bottom right gl.End() // finish drawing the triangle // Move right 3 units gl.LoadIdentity() gl.Translatef(1.5, 0.0, -6.0) gl.Color3f(0.5, 0.5, 1.0) // Set The Color To Blue One Time Only gl.Rotatef(float32(rquad), 1.0, 0.0, 0.0) // rotate the quad on the X axis gl.Begin(gl.QUADS) // draw quads gl.Vertex3f(-1.0, 1.0, 0.0) // top left gl.Vertex3f(1.0, 1.0, 0.0) // top right gl.Vertex3f(1.0, -1.0, 0.0) // bottom right gl.Vertex3f(-1.0, -1.0, 0.0) // bottom left gl.End() // done drawing the quad // Draw to the screen sdl.GL_SwapBuffers() rtri += 0.2 // Increase The Rotation Variable For The Triangle rquad -= 0.15 // Decrease The Rotation Variable For The Quad // Gather our frames per second frames++ t := sdl.GetTicks() if t-t0 >= 5000 { seconds := (t - t0) / 1000.0 fps := frames / seconds fmt.Println(frames, "frames in", seconds, "seconds =", fps, "FPS") t0 = t frames = 0 } }
func DrawAABB(aabb Drawable, t float32, program gl.Program) { box := aabb.GetBox3D() nverts, normals := GetVerts() if box.Animator != nil { box.Animator(&box, t) } drawPos := box.Pos drawColor := box.Color drawSize := box.Size program.GetUniformLocation("SizeVec").Uniform3f(drawSize.X, drawSize.Y, drawSize.Z) program.GetUniformLocation("PosVec").Uniform3f(drawPos.X, drawPos.Y, drawPos.Z) gl.Color3f(drawColor.X, drawColor.Y, drawColor.Z) gl.EnableClientState(gl.VERTEX_ARRAY) gl.VertexPointer(3, 0, nverts) gl.EnableClientState(gl.NORMAL_ARRAY) gl.NormalPointer(0, normals) gl.DrawArrays(gl.QUADS, 0, 24) gl.DisableClientState(gl.NORMAL_ARRAY) gl.DisableClientState(gl.VERTEX_ARRAY) for it := aabb.GetChildren(); it != nil; it = it.Next() { DrawAABB(it.Value.(Drawable), t, program) } }
func drawBullets() { gl.Begin(gl.POINTS) gl.Color3f(1.0, 0.0, 1.0) for i := 0; i < MAX_BULLETS; i++ { if bullet[i].inuse { gl.Vertex2f(bullet[i].x, bullet[i].y) } } gl.End() }
func main() { glut.Init() glut.InitDisplayMode(glut.SINGLE | glut.RGB) glut.InitWindowSize(465, 250) glut.CreateWindow("GLUT bitmap & stroke font example") gl.ClearColor(1.0, 1.0, 1.0, 1.0) gl.Color3f(0, 0, 0) gl.LineWidth(3.0) glut.DisplayFunc(display) glut.ReshapeFunc(reshape) glut.MainLoop() }
func draw(triangles p2t.TriArray) { gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT) for i := 0; i < len(triangles); i++ { var t = triangles[i] var a = t.Point[0] var b = t.Point[1] var c = t.Point[2] // Red gl.Color3f(1, 0, 0) gl.Begin(gl.LINE_LOOP) gl.Vertex2f(float32(a.X), float32(a.Y)) gl.Vertex2f(float32(b.X), float32(b.Y)) gl.Vertex2f(float32(c.X), float32(c.Y)) gl.End() } sdl.GL_SwapBuffers() }
// Here goes our drawing code func drawGLScene() { // Clear the screen and depth buffer gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT) // Move left 1.5 units and into the screen 6.0 units. gl.LoadIdentity() gl.Translatef(-1.5, 0.0, -6.0) gl.Rotatef(float32(rtri), 0.0, 1.0, 0.0) // Rotate the triangle on the Y axis gl.Begin(gl.TRIANGLES) // Draw triangles gl.Color3f(1.0, 0.0, 0.0) /* Red */ gl.Vertex3f(0.0, 1.0, 0.0) /* Top Of Triangle (Front) */ gl.Color3f(0.0, 1.0, 0.0) /* Green */ gl.Vertex3f(-1.0, -1.0, 1.0) /* Left Of Triangle (Front) */ gl.Color3f(0.0, 0.0, 1.0) /* Blue */ gl.Vertex3f(1.0, -1.0, 1.0) /* Right Of Triangle (Front) */ gl.Color3f(1.0, 0.0, 0.0) /* Red */ gl.Vertex3f(0.0, 1.0, 0.0) /* Top Of Triangle (Right) */ gl.Color3f(0.0, 0.0, 1.0) /* Blue */ gl.Vertex3f(1.0, -1.0, 1.0) /* Left Of Triangle (Right) */ gl.Color3f(0.0, 1.0, 0.0) /* Green */ gl.Vertex3f(1.0, -1.0, -1.0) /* Right Of Triangle (Right) */ gl.Color3f(1.0, 0.0, 0.0) /* Red */ gl.Vertex3f(0.0, 1.0, 0.0) /* Top Of Triangle (Back) */ gl.Color3f(0.0, 1.0, 0.0) /* Green */ gl.Vertex3f(1.0, -1.0, -1.0) /* Left Of Triangle (Back) */ gl.Color3f(0.0, 0.0, 1.0) /* Blue */ gl.Vertex3f(-1.0, -1.0, -1.0) /* Right Of Triangle (Back) */ gl.Color3f(1.0, 0.0, 0.0) /* Red */ gl.Vertex3f(0.0, 1.0, 0.0) /* Top Of Triangle (Left) */ gl.Color3f(0.0, 0.0, 1.0) /* Blue */ gl.Vertex3f(-1.0, -1.0, -1.0) /* Left Of Triangle (Left) */ gl.Color3f(0.0, 1.0, 0.0) /* Green */ gl.Vertex3f(-1.0, -1.0, 1.0) /* Right Of Triangle (Left) */ gl.End() // finish drawing the triangle // Move right 3 units gl.LoadIdentity() gl.Translatef(1.5, 0.0, -7.0) gl.Rotatef(float32(rquad), 1.0, 1.0, 1.0) // rotate the quad on the X axis gl.Begin(gl.QUADS) // draw quads gl.Color3f(0.0, 1.0, 0.0) // Set The Color To Green gl.Vertex3f(1.0, 1.0, -1.0) // Top Right Of The Quad (Top) gl.Vertex3f(-1.0, 1.0, -1.0) // Top Left Of The Quad (Top) gl.Vertex3f(-1.0, 1.0, 1.0) // Bottom Left Of The Quad (Top) gl.Vertex3f(1.0, 1.0, 1.0) // Bottom Right Of The Quad (Top) gl.Color3f(1.0, 0.5, 0.0) // Set The Color To Orange gl.Vertex3f(1.0, -1.0, 1.0) // Top Right Of The Quad (Bottom) gl.Vertex3f(-1.0, -1.0, 1.0) // Top Left Of The Quad (Bottom) gl.Vertex3f(-1.0, -1.0, -1.0) // Bottom Left Of The Quad (Bottom) gl.Vertex3f(1.0, -1.0, -1.0) // Bottom Right Of The Quad (Bottom) gl.Color3f(1.0, 0.0, 0.0) // Set The Color To Red gl.Vertex3f(1.0, 1.0, 1.0) // Top Right Of The Quad (Front) gl.Vertex3f(-1.0, 1.0, 1.0) // Top Left Of The Quad (Front) gl.Vertex3f(-1.0, -1.0, 1.0) // Bottom Left Of The Quad (Front) gl.Vertex3f(1.0, -1.0, 1.0) // Bottom Right Of The Quad (Front) gl.Color3f(1.0, 1.0, 0.0) // Set The Color To Yellow gl.Vertex3f(1.0, -1.0, -1.0) // Bottom Left Of The Quad (Back) gl.Vertex3f(-1.0, -1.0, -1.0) // Bottom Right Of The Quad (Back) gl.Vertex3f(-1.0, 1.0, -1.0) // Top Right Of The Quad (Back) gl.Vertex3f(1.0, 1.0, -1.0) // Top Left Of The Quad (Back) gl.Color3f(0.0, 0.0, 1.0) // Set The Color To Blue gl.Vertex3f(-1.0, 1.0, 1.0) // Top Right Of The Quad (Left) gl.Vertex3f(-1.0, 1.0, -1.0) // Top Left Of The Quad (Left) gl.Vertex3f(-1.0, -1.0, -1.0) // Bottom Left Of The Quad (Left) gl.Vertex3f(-1.0, -1.0, 1.0) // Bottom Right Of The Quad (Left) gl.Color3f(1.0, 0.0, 1.0) // Set The Color To Violet gl.Vertex3f(1.0, 1.0, -1.0) // Top Right Of The Quad (Right) gl.Vertex3f(1.0, 1.0, 1.0) // Top Left Of The Quad (Right) gl.Vertex3f(1.0, -1.0, 1.0) // Bottom Left Of The Quad (Right) gl.Vertex3f(1.0, -1.0, -1.0) // Bottom Right Of The Quad (Right) gl.End() // done drawing the quad // Draw to the screen sdl.GL_SwapBuffers() rtri += 0.2 // Increase The Rotation Variable For The Triangle rquad -= 0.15 // Decrease The Rotation Variable For The Quad // Gather our frames per second frames++ t := sdl.GetTicks() if t-t0 >= 5000 { seconds := (t - t0) / 1000.0 fps := frames / seconds fmt.Println(frames, "frames in", seconds, "seconds =", fps, "FPS") t0 = t frames = 0 } }
func drawCubes(v *Vector3) { gl.LoadIdentity() // gl.Translatef( -1.5, 0.0, -6.0 ) gl.Translatef(gl.GLfloat(v.X), gl.GLfloat(v.Y), gl.GLfloat(v.Z)) /* Rotate The Triangle On The Y axis ( NEW ) */ gl.Rotatef(rtri, 0.0, 1.0, 0.0) gl.Begin(gl.TRIANGLES) /* Drawing Using Triangles */ gl.Color3f(1.0, 0.0, 0.0) /* Red */ gl.Vertex3f(0.0, 1.0, 0.0) /* Top Of Triangle (Front) */ gl.Color3f(0.0, 1.0, 0.0) /* Green */ gl.Vertex3f(-1.0, -1.0, 1.0) /* Left Of Triangle (Front) */ gl.Color3f(0.0, 0.0, 1.0) /* Blue */ gl.Vertex3f(1.0, -1.0, 1.0) /* Right Of Triangle (Front) */ gl.Color3f(1.0, 0.0, 0.0) /* Red */ gl.Vertex3f(0.0, 1.0, 0.0) /* Top Of Triangle (Right) */ gl.Color3f(0.0, 0.0, 1.0) /* Blue */ gl.Vertex3f(1.0, -1.0, 1.0) /* Left Of Triangle (Right) */ gl.Color3f(0.0, 1.0, 0.0) /* Green */ gl.Vertex3f(1.0, -1.0, -1.0) /* Right Of Triangle (Right) */ gl.Color3f(1.0, 0.0, 0.0) /* Red */ gl.Vertex3f(0.0, 1.0, 0.0) /* Top Of Triangle (Back) */ gl.Color3f(0.0, 1.0, 0.0) /* Green */ gl.Vertex3f(1.0, -1.0, -1.0) /* Left Of Triangle (Back) */ gl.Color3f(0.0, 0.0, 1.0) /* Blue */ gl.Vertex3f(-1.0, -1.0, -1.0) /* Right Of Triangle (Back) */ gl.Color3f(1.0, 0.0, 0.0) /* Red */ gl.Vertex3f(0.0, 1.0, 0.0) /* Top Of Triangle (Left) */ gl.Color3f(0.0, 0.0, 1.0) /* Blue */ gl.Vertex3f(-1.0, -1.0, -1.0) /* Left Of Triangle (Left) */ gl.Color3f(0.0, 1.0, 0.0) /* Green */ gl.Vertex3f(-1.0, -1.0, 1.0) /* Right Of Triangle (Left) */ gl.End() /* Finished Drawing The Triangle */ rtri = rtri + 0.2 return /* Move Right 3 Units */ gl.LoadIdentity() gl.Translatef(1.5, 0.0, -6.0) /* Rotate The Quad On The X axis ( NEW ) */ gl.Rotatef(rquad, 1.0, 0.0, 0.0) /* Set The Color To Blue One Time Only */ gl.Color3f(0.5, 0.5, 1.0) gl.Begin(gl.QUADS) /* Draw A Quad */ gl.Color3f(0.0, 1.0, 0.0) /* Set The Color To Green */ gl.Vertex3f(1.0, 1.0, -1.0) /* Top Right Of The Quad (Top) */ gl.Vertex3f(-1.0, 1.0, -1.0) /* Top Left Of The Quad (Top) */ gl.Vertex3f(-1.0, 1.0, 1.0) /* Bottom Left Of The Quad (Top) */ gl.Vertex3f(1.0, 1.0, 1.0) /* Bottom Right Of The Quad (Top) */ gl.Color3f(1.0, 0.5, 0.0) /* Set The Color To Orange */ gl.Vertex3f(1.0, -1.0, 1.0) /* Top Right Of The Quad (Botm) */ gl.Vertex3f(-1.0, -1.0, 1.0) /* Top Left Of The Quad (Botm) */ gl.Vertex3f(-1.0, -1.0, -1.0) /* Bottom Left Of The Quad (Botm) */ gl.Vertex3f(1.0, -1.0, -1.0) /* Bottom Right Of The Quad (Botm) */ gl.Color3f(1.0, 0.0, 0.0) /* Set The Color To Red */ gl.Vertex3f(1.0, 1.0, 1.0) /* Top Right Of The Quad (Front) */ gl.Vertex3f(-1.0, 1.0, 1.0) /* Top Left Of The Quad (Front) */ gl.Vertex3f(-1.0, -1.0, 1.0) /* Bottom Left Of The Quad (Front) */ gl.Vertex3f(1.0, -1.0, 1.0) /* Bottom Right Of The Quad (Front) */ gl.Color3f(1.0, 1.0, 0.0) /* Set The Color To Yellow */ gl.Vertex3f(1.0, -1.0, -1.0) /* Bottom Left Of The Quad (Back) */ gl.Vertex3f(-1.0, -1.0, -1.0) /* Bottom Right Of The Quad (Back) */ gl.Vertex3f(-1.0, 1.0, -1.0) /* Top Right Of The Quad (Back) */ gl.Vertex3f(1.0, 1.0, -1.0) /* Top Left Of The Quad (Back) */ gl.Color3f(0.0, 0.0, 1.0) /* Set The Color To Blue */ gl.Vertex3f(-1.0, 1.0, 1.0) /* Top Right Of The Quad (Left) */ gl.Vertex3f(-1.0, 1.0, -1.0) /* Top Left Of The Quad (Left) */ gl.Vertex3f(-1.0, -1.0, -1.0) /* Bottom Left Of The Quad (Left) */ gl.Vertex3f(-1.0, -1.0, 1.0) /* Bottom Right Of The Quad (Left) */ gl.Color3f(1.0, 0.0, 1.0) /* Set The Color To Violet */ gl.Vertex3f(1.0, 1.0, -1.0) /* Top Right Of The Quad (Right) */ gl.Vertex3f(1.0, 1.0, 1.0) /* Top Left Of The Quad (Right) */ gl.Vertex3f(1.0, -1.0, 1.0) /* Bottom Left Of The Quad (Right) */ gl.Vertex3f(1.0, -1.0, -1.0) /* Bottom Right Of The Quad (Right) */ gl.End() /* Done Drawing The Quad */ rquad -= 0.15 }
func drawCube(v *Vector3) { gl.LoadIdentity() // gl.Translatef( -1.5, 0.0, -6.0 ) gl.Translatef(gl.GLfloat(v.X), gl.GLfloat(v.Y), gl.GLfloat(v.Z)) /* Rotate The Triangle On The Y axis ( NEW ) */ // gl.Rotatef( rtri, 0.0, 1.0, 0.0 ); gl.Begin(gl.TRIANGLES) /* Drawing Using Triangles */ gl.Color3f(1.0, 0.0, 0.0) /* Red */ gl.Vertex3f(0.0, 1.0, 0.0) /* Top Of Triangle (Front) */ gl.Color3f(0.0, 1.0, 0.0) /* Green */ gl.Vertex3f(-1.0, -1.0, 1.0) /* Left Of Triangle (Front) */ gl.Color3f(0.0, 0.0, 1.0) /* Blue */ gl.Vertex3f(1.0, -1.0, 1.0) /* Right Of Triangle (Front) */ gl.Color3f(1.0, 0.0, 0.0) /* Red */ gl.Vertex3f(0.0, 1.0, 0.0) /* Top Of Triangle (Right) */ gl.Color3f(0.0, 0.0, 1.0) /* Blue */ gl.Vertex3f(1.0, -1.0, 1.0) /* Left Of Triangle (Right) */ gl.Color3f(0.0, 1.0, 0.0) /* Green */ gl.Vertex3f(1.0, -1.0, -1.0) /* Right Of Triangle (Right) */ gl.Color3f(1.0, 0.0, 0.0) /* Red */ gl.Vertex3f(0.0, 1.0, 0.0) /* Top Of Triangle (Back) */ gl.Color3f(0.0, 1.0, 0.0) /* Green */ gl.Vertex3f(1.0, -1.0, -1.0) /* Left Of Triangle (Back) */ gl.Color3f(0.0, 0.0, 1.0) /* Blue */ gl.Vertex3f(-1.0, -1.0, -1.0) /* Right Of Triangle (Back) */ gl.Color3f(1.0, 0.0, 0.0) /* Red */ gl.Vertex3f(0.0, 1.0, 0.0) /* Top Of Triangle (Left) */ gl.Color3f(0.0, 0.0, 1.0) /* Blue */ gl.Vertex3f(-1.0, -1.0, -1.0) /* Left Of Triangle (Left) */ gl.Color3f(0.0, 1.0, 0.0) /* Green */ gl.Vertex3f(-1.0, -1.0, 1.0) /* Right Of Triangle (Left) */ gl.End() /* Finished Drawing The Triangle */ rtri = rtri + 0.2 }
func drawMass(m *phys.Mass, dsz gl.GLfloat) { gl.LoadIdentity() // gl.Translatef( -1.5, 0.0, -6.0 ) v := m.Pos gl.Translatef(gl.GLfloat(v.X), gl.GLfloat(v.Y), gl.GLfloat(v.Z)) /* Rotate The Triangle On The Y axis ( NEW ) */ // gl.Rotatef( rtri, 0.0, 1.0, 0.0 ); gl.Begin(gl.TRIANGLES) /* Drawing Using Triangles */ gl.Color3f(dsz, 0.0, 0.0) /* Red */ gl.Vertex3f(0.0, dsz, 0.0) /* Top Of Triangle (Front) */ gl.Color3f(0.0, dsz, 0.0) /* Green */ gl.Vertex3f(-dsz, -dsz, dsz) /* Left Of Triangle (Front) */ gl.Color3f(0.0, 0.0, dsz) /* Blue */ gl.Vertex3f(dsz, -dsz, dsz) /* Right Of Triangle (Front) */ gl.Color3f(dsz, 0.0, 0.0) /* Red */ gl.Vertex3f(0.0, dsz, 0.0) /* Top Of Triangle (Right) */ gl.Color3f(0.0, 0.0, dsz) /* Blue */ gl.Vertex3f(dsz, -dsz, dsz) /* Left Of Triangle (Right) */ gl.Color3f(0.0, dsz, 0.0) /* Green */ gl.Vertex3f(dsz, -dsz, -dsz) /* Right Of Triangle (Right) */ gl.Color3f(dsz, 0.0, 0.0) /* Red */ gl.Vertex3f(0.0, dsz, 0.0) /* Top Of Triangle (Back) */ gl.Color3f(0.0, dsz, 0.0) /* Green */ gl.Vertex3f(dsz, -dsz, -dsz) /* Left Of Triangle (Back) */ gl.Color3f(0.0, 0.0, dsz) /* Blue */ gl.Vertex3f(-dsz, -dsz, -dsz) /* Right Of Triangle (Back) */ gl.Color3f(dsz, 0.0, 0.0) /* Red */ gl.Vertex3f(0.0, dsz, 0.0) /* Top Of Triangle (Left) */ gl.Color3f(0.0, 0.0, dsz) /* Blue */ gl.Vertex3f(-dsz, -dsz, -dsz) /* Left Of Triangle (Left) */ gl.Color3f(0.0, dsz, 0.0) /* Green */ gl.Vertex3f(-dsz, -dsz, dsz) /* Right Of Triangle (Left) */ gl.End() /* Finished Drawing The Triangle */ }