電腦圖形學OpenGL——鍵盤控制三維汽車

來源:互聯網
上載者:User

                           電腦圖形學OpenGL

                                                                                                                           — —鍵盤控制三維汽車

       最終實現效果:

     

   

  

   原始碼:

#include "stdafx.h"#include <windows.h>#include <gl/gl.h>#include <gl/glu.h>#include <gl/glut.h>#include <math.h>static GLfloat xRot = 0.0f;static GLfloat yRot = 0.0f;void Display(void){   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    glPushMatrix();   glRotatef(xRot, 1.0f, 0.0f, 0.0f);  //繞x軸旋轉glRotatef(yRot, 0.0f, 1.0f, 0.0f);  //繞y軸旋轉//車下半部glBegin(GL_POLYGON);glColor3f(0.1, 0.1, 0.8);glVertex3f(-40.0f,0.0f,15.0f);glVertex3f(40.0f,0.0f,15.0f);glColor3f(1, 0.5, 0.8);glVertex3f(40.0f,-15.0f,15.0f);glVertex3f(-40.0f,-15.0f,15.0f);glEnd();glBegin(GL_POLYGON);glColor3f(0.3, 0.2, 0.5);glVertex3f(40.0f,0.0f,-15.0f);glVertex3f(40.0f,0.0f,15.0f);glVertex3f(40.0f,-15.0f,15.0f);glVertex3f(40.0f,-15.0f,-15.0f);glEnd();glBegin(GL_POLYGON);glColor3f(0.3, 0.1, 0.3);glVertex3f(-40.0f,0.0f,-15.0f);glVertex3f(-40.0f,0.0f,15.0f);glVertex3f(-40.0f,-15.0f,15.0f);glVertex3f(-40.0f,-15.0f,-15.0f);glEnd();    glBegin(GL_POLYGON);glColor3f(0.1, 0.1, 0.8);glVertex3f(-40.0f,0.0f,-15.0f);glVertex3f(40.0f,0.0f,-15.0f);glColor3f(1, 0.5, 0.8);glVertex3f(40.0f,-15.0f,-15.0f);glVertex3f(-40.0f,-15.0f,-15.0f);glEnd();glBegin(GL_POLYGON);glColor3f(0, 0, 1);glVertex3f(-40.0f,0.0f,15.0f);glVertex3f(-40.0f,0.0f,-15.0f);glVertex3f(40.0f,0.0f,-15.0f);glVertex3f(40.0f,0.0f,15.0f);glEnd();glBegin(GL_POLYGON);glColor3f(0.8, 0.5, 0.2);glVertex3f(-40.0f,-15.0f,15.0f);glVertex3f(-40.0f,-15.0f,-15.0f);glVertex3f(40.0f,-15.0f,-15.0f);glVertex3f(40.0f,-15.0f,15.0f);glEnd();//車上半部glBegin(GL_POLYGON);glColor3f(0, 0, 1);glVertex3f(-20.0f,0.0f,15.0f);glVertex3f(-10.0f,10.0f,15.0f);glVertex3f(20.0f,10.0f,15.0f);glVertex3f(25.0f,0.0f,15.0f);glEnd();glBegin(GL_POLYGON);glColor3f(0, 0, 1);glVertex3f(-20.0f,0.0f,-15.0f);glVertex3f(-10.0f,10.0f,-15.0f);glVertex3f(20.0f,10.0f,-15.0f);glVertex3f(25.0f,0.0f,-15.0f);glEnd();glBegin(GL_POLYGON);glColor3f(0, 1, 1);    glVertex3f(-10.0f,10.0f,15.0f);    glVertex3f(-10.0f,10.0f,-15.0f);glVertex3f(20.0f,10.0f,-15.0f);glVertex3f(20.0f,10.0f,15.0f);glEnd();    glBegin(GL_POLYGON);glColor3f(0.5, 0.8, 0.8);    glVertex3f(-10.0f,10.0f,15.0f);glVertex3f(-20.0f,0.0f,15.0f);glVertex3f(-20.0f,0.0f,-15.0f);    glVertex3f(-10.0f,10.0f,-15.0f);glEnd();glBegin(GL_POLYGON);glColor3f(0, 0.5, 0.5);glVertex3f(20.0f,10.0f,15.0f);glVertex3f(20.0f,10.0f,-15.0f);glVertex3f(25.0f,0.0f,-15.0f);glVertex3f(25.0f,0.0f,15.0f);glEnd();glBegin(GL_POLYGON);glColor3f(0, 0, 1);glVertex3f(-30.0f,-15.0f,15.0f);glVertex3f(-30.0f,-15.0f,-15.0f);glVertex3f(30.0f,-15.0f,-15.0f);glVertex3f(30.0f,-15.0f,15.0f);glEnd();//車輪glColor3f(1, 0, 0);glTranslated(-20.0f,-15.0f,15.0f);    glutSolidTorus(2,5,5,100);glTranslated(0.0f,0.0f,-30.0f);    glutSolidTorus(2,5,5,100);glTranslated(45.0f,0.0f,0.0f);    glutSolidTorus(2,5,5,100);glTranslated(0.0f,0.0f,30.0f);    glutSolidTorus(2,5,5,100);    glPopMatrix();glutSwapBuffers();   //交換緩衝}//定義鍵盤控制函數void SpecialKeys(int key, int x, int y){   if(key == GLUT_KEY_UP)xRot-= 5.0f;   if(key == GLUT_KEY_DOWN)xRot += 5.0f;if(key == GLUT_KEY_LEFT)yRot -= 5.0f;if(key == GLUT_KEY_RIGHT)yRot += 5.0f;glutPostRedisplay(); // 重新整理視窗}int main(int argc, char* argv[]){   glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);glutCreateWindow("車");glClearColor(0.0f, 0.0f, 0.0f, 1.0f );glEnable(GL_DEPTH_TEST);glShadeModel(GL_SMOOTH);glMatrixMode(GL_PROJECTION);glLoadIdentity();glOrtho (-100, 100, -100, 100,-100, 100);glutSpecialFunc(SpecialKeys);  //註冊功能鍵回呼函數glutDisplayFunc(Display);glutMainLoop();return 0;}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.