下面是OpenGLDraw的事件响应函数,相对上节主要增加了对

InBlock.gif public void Color( double red, double green, double blue)
InBlock.gif        SharpGL.OpenGL 的成员

的函数的应用,该函数是个重载函数,目前只用到上面提到的这个形式,即以RGB为参数进行着色。

下面是OpenGLDraw的事件响应函数:

InBlock.gif                 private void openGLControl1_OpenGLDraw( object sender, PaintEventArgs e)
InBlock.gif                {
InBlock.gif
InBlock.gif                         //    Get the OpenGL object, just to clean up the code.
InBlock.gif                        SharpGL.OpenGL gl = this.openGLControl1.OpenGL;
InBlock.gif
InBlock.gif                        gl.Clear(OpenGL.COLOR_BUFFER_BIT | OpenGL.DEPTH_BUFFER_BIT);   // Clear The Screen And The Depth Buffer
InBlock.gif                        gl.LoadIdentity();           // Reset The View
InBlock.gif                        gl.Translate(-1.5f, 0.0f, -6.0f);         // Move Left And Into The Screen
InBlock.gif
InBlock.gif                        gl.Begin(OpenGL.TRIANGLES);           // Start Drawing The Pyramid
InBlock.gif
InBlock.gif                        gl.Color(1.0f, 0.0f, 0.0f);       // Red
InBlock.gif                        gl.Vertex(0.0f, 1.0f, 0.0f);       // Top Of Triangle (Front)
InBlock.gif                        gl.Color(0.0f, 1.0f, 0.0f);       // Green
InBlock.gif                        gl.Vertex(-1.0f, -1.0f, 0.0f);       // Left Of Triangle (Front)
InBlock.gif                        gl.Color(0.0f, 0.0f, 1.0f);       // Blue
InBlock.gif                        gl.Vertex(1.0f, -1.0f, 0.0f);       // Right Of Triangle (Front)
InBlock.gif
InBlock.gif                        gl.End();             // Done Drawing The Pyramid
InBlock.gif
InBlock.gif                        gl.Translate(3f, 0.0f, 0.0f);         // Move Right And Into The Screen
InBlock.gif
InBlock.gif
InBlock.gif                        gl.Begin(OpenGL.QUADS);           // Start Drawing The Cube
InBlock.gif
InBlock.gif                        gl.Color(0.5f, 0.5f, 1.0f);       // Set The Color To Green
InBlock.gif                        gl.Vertex(-1.0f, 1.0f, 0.0f);       // Top Right Of The Quad (Top)
InBlock.gif                        gl.Vertex(1.0f, 1.0f, 0.0f);       // Top Left Of The Quad (Top)
InBlock.gif                        gl.Vertex(1.0f, -1.0f, 0.0f);       // Bottom Left Of The Quad (Top)
InBlock.gif                        gl.Vertex(-1.0f, -1.0f, 0.0f);       // Bottom Right Of The Quad (Top)
InBlock.gif
InBlock.gif
InBlock.gif                        gl.End();             // Done Drawing The Q
InBlock.gif
InBlock.gif                        gl.Flush();   
InBlock.gif                }

显示效果如下图:

 

源代码