• NeHe_005_绘制一个3D图形


    本课在介绍了怎样绘制一个真实3D图形。

    代码如下:

    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
    }

    <完>

  • 相关阅读:
    EZOJ #202
    EZOJ #201
    p5156 [USACO18DEC]Sort It Out
    p4363 [九省联考2018]一双木棋chess
    p2150 [NOI2015]寿司晚宴
    p5155 [USACO18DEC]Balance Beam
    p2414 [NOI2011]阿狸的打字机
    实验室断网的解决方案
    人需要看到未来
    门德尔松--罗辑思维
  • 原文地址:https://www.cnblogs.com/afarmer/p/1610925.html
Copyright © 2020-2023  润新知