您的位置:首页 > 其它

NeHe_005_绘制一个3D图形

2009-11-25 23:34 387 查看
本课在介绍了怎样绘制一个真实3D图形。

代码如下:

[code]int DrawGLScene(GLvoid)                  // Here's Where We Do All The Drawing
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);   // Clear The Screen And The Depth Buffer
glLoadIdentity();                     // Reset The Current Modelview Matrix

//
//TODO:the code of openGL
//
glTranslatef(-1.5f,0.0f,-6.0f);   // Move Left 1.5 Units And Into The Screen 6.0

glRotatef(rtri,0.0f,1.0f,0.0f);        // Rotate The Triangle On The Y axis
glBegin(GL_TRIANGLES);                // Drawing Using Triangles
glColor3f(1.0f,0.0f,0.0f);            // Red
glVertex3f( 0.0f, 1.0f, 0.0f);        // Top Of Triangle (Front)
glColor3f(0.0f,1.0f,0.0f);            // Green
glVertex3f(-1.0f,-1.0f, 1.0f);            // Left Of Triangle (Front)
glColor3f(0.0f,0.0f,1.0f);            // Blue
glVertex3f( 1.0f,-1.0f, 1.0f);            // Right Of Triangle (Front)

glColor3f(1.0f,0.0f,0.0f);            // Red
glVertex3f( 0.0f, 1.0f, 0.0f);            // Top Of Triangle (Right)
glColor3f(0.0f,0.0f,1.0f);            // Blue
glVertex3f( 1.0f,-1.0f, 1.0f);            // Left Of Triangle (Right)
glColor3f(0.0f,1.0f,0.0f);            // Green
glVertex3f( 1.0f,-1.0f, -1.0f);       // Right Of Triangle (Right)

glColor3f(1.0f,0.0f,0.0f);            // Red
glVertex3f( 0.0f, 1.0f, 0.0f);            // Top Of Triangle (Back)
glColor3f(0.0f,1.0f,0.0f);            // Green
glVertex3f( 1.0f,-1.0f, -1.0f);            // Left Of Triangle (Back)
glColor3f(0.0f,0.0f,1.0f);            // Blue
glVertex3f(-1.0f,-1.0f, -1.0f);            // Right Of Triangle (Back)

glColor3f(1.0f,0.0f,0.0f);            // Red
glVertex3f( 0.0f, 1.0f, 0.0f);            // Top Of Triangle (Left)
glColor3f(0.0f,0.0f,1.0f);            // Blue
glVertex3f(-1.0f,-1.0f,-1.0f);            // Left Of Triangle (Left)
glColor3f(0.0f,1.0f,0.0f);            // Green
glVertex3f(-1.0f,-1.0f, 1.0f);            // Right Of Triangle (Left)
glEnd();

glLoadIdentity();                    // Reset The Current Modelview Matrix
glTranslatef(1.5f,0.0f,-7.0f);  // Move Right 1.5 Units And Into The Screen 6.0
glRotatef(rquad,1.0f,0.0f,0.0f);    // Rotate The Quad On The X axis ( NEW )
glBegin(GL_QUADS);                    // Start Drawing A Quad
glColor3f(0.0f,1.0f,0.0f);            // Set The Color To Green
glVertex3f( 1.0f, 1.0f,-1.0f);            // Top Right Of The Quad (Top)
glVertex3f(-1.0f, 1.0f,-1.0f);            // Top Left Of The Quad (Top)
glVertex3f(-1.0f, 1.0f, 1.0f);            // Bottom Left Of The Quad (Top)
glVertex3f( 1.0f, 1.0f, 1.0f);            // Bottom Right Of The Quad (Top)

glColor3f(1.0f,0.5f,0.0f);            // Set The Color To Orange
glVertex3f( 1.0f,-1.0f, 1.0f);            // Top Right Of The Quad (Bottom)
glVertex3f(-1.0f,-1.0f, 1.0f);            // Top Left Of The Quad (Bottom)
glVertex3f(-1.0f,-1.0f,-1.0f);            // Bottom Left Of The Quad (Bottom)
glVertex3f( 1.0f,-1.0f,-1.0f);            // Bottom Right Of The Quad (Bottom)

glColor3f(1.0f,0.0f,0.0f);            // Set The Color To Red
glVertex3f( 1.0f, 1.0f, 1.0f);            // Top Right Of The Quad (Front)
glVertex3f(-1.0f, 1.0f, 1.0f);            // Top Left Of The Quad (Front)
glVertex3f(-1.0f,-1.0f, 1.0f);            // Bottom Left Of The Quad (Front)
glVertex3f( 1.0f,-1.0f, 1.0f);            // Bottom Right Of The Quad (Front)

glColor3f(1.0f,1.0f,0.0f);            // Set The Color To Yellow
glVertex3f( 1.0f,-1.0f,-1.0f);            // Bottom Left Of The Quad (Back)
glVertex3f(-1.0f,-1.0f,-1.0f);            // Bottom Right Of The Quad (Back)
glVertex3f(-1.0f, 1.0f,-1.0f);            // Top Right Of The Quad (Back)
glVertex3f( 1.0f, 1.0f,-1.0f);            // Top Left Of The Quad (Back)

glColor3f(0.0f,0.0f,1.0f);            // Set The Color To Blue
glVertex3f(-1.0f, 1.0f, 1.0f);            // Top Right Of The Quad (Left)
glVertex3f(-1.0f, 1.0f,-1.0f);            // Top Left Of The Quad (Left)
glVertex3f(-1.0f,-1.0f,-1.0f);            // Bottom Left Of The Quad (Left)
glVertex3f(-1.0f,-1.0f, 1.0f);            // Bottom Right Of The Quad (Left)

glColor3f(1.0f,0.0f,1.0f);            // Set The Color To Violet
glVertex3f( 1.0f, 1.0f,-1.0f);            // Top Right Of The Quad (Right)
glVertex3f( 1.0f, 1.0f, 1.0f);            // Top Left Of The Quad (Right)
glVertex3f( 1.0f,-1.0f, 1.0f);            // Bottom Left Of The Quad (Right)
glVertex3f( 1.0f,-1.0f,-1.0f);            // Bottom Right Of The Quad (Right)
glEnd();                        // Done Drawing The Quad

rtri+=1.0f;         // Increase The Rotation Variable For The Triangle ( NEW )
rquad-=1.0f;        // Decrease The Rotation Variable For The Quad     ( NEW )

if(rtri>=360.0f)rtri-=360.0f;
if(rquad>=360.0f)rquad-=360.0f;

return TRUE;                        // Keep Going
}


[/code]

<完>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: