计算机图形学OpenGL——键盘控制三维汽车
来源:互联网 发布:婴儿面膜淘宝授权书 编辑:程序博客网 时间:2024/06/06 00:46
计算机图形学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;}
0 0
- 计算机图形学OpenGL——键盘控制三维汽车
- 计算机图形学——OpenGL基本使用
- 计算机图形学——OpenGL之光照
- 计算机图形学——OpenGL光照模型
- 计算机图形学实验————漫游三维迷宫
- 计算机图形学——OpenGL开发库开发库
- 计算机图形学——OpenGL学习系列之Graphics2D
- 计算机图形学——OpenGL学习系列之Graphics3D
- OpenGL的计算机图形学
- 计算机图形学 OPENGL学习
- OPENGL-学习计算机图形学
- 计算机图形学基础知识-三维变换
- 计算机图形学基础-三维变换
- [OpenGL] 初识OpenGL,计算机图形学
- 【计算机图形学】OpenGL入门1——第一个OpenGL程序
- 计算机图形学实验教程(OpenGL)
- 学习计算机图形学OpenGL绘图
- 计算机图形学-OpenGL-绘制五角星
- 工作压力与情绪管理
- Mybatis3源码分析(09)-SqlSession创建及简要说明
- 关于web性能的思考与分享[08]雅虎14条军规—高性能网站建设指南
- 读《暗时间》(刘未鹏)若章有感
- Altium Designer(Protel)网络连接方式Port和Net Label详解
- 计算机图形学OpenGL——键盘控制三维汽车
- 在Unity中接入Xbox360手柄
- block
- JZOJ3226. 【HBOI2013】ALO
- Kaggle 机器学习竞赛冠军及优胜者的源代码汇总
- C# 非顶端窗口截图
- Mysql用户权限
- Delete Node in a Linked List
- 给UILable中的文字添加删除线样式