有键盘控制函数和颜色设置

#include<GL/glut.h>
#include<math.h>
int faces[6][4]={{0,3,2,1},{3,7,6,2},{7,4,5,6},{4,0,1,5},{1,2,6,5},{4,7,3,0}};//六个面,每个面有四个顶点GLfloat points[8][3]={{-0.5,-0.5,0.5},{-0.5,0.5,0.5},{0.5,0.5,0.5},{0.5,-0.5,0.5},{-0.5,-0.5,-0.5},{-0.5,0.5,-0.5},{0.5,0.5,-0.5},{0.5,-0.5,-0.5}};//每个顶点的位置
GLfloat faceColor[6][3]={{1.0,0.0,0.0},{0.0,1.0,0.0},{0.0,0.0,1.0},{1.0,1.0,0.0},{0.0,1.0,1.0},{1.0,0.0,1.0}};
GLfloat pointColor[8][3]={{1.0,0.0,0.0},{0.0,1.0,0.0},{0.0,0.0,1.0},{1.0,1.0,0.0},{0.0,1.0,1.0},{1.0,0.0,1.0},{0.5,0.5,1.0},{1.0,0.3,0.5}};
GLfloat r=1,theta=30,phi=30;
void drawFace(int*face){glBegin(GL_POLYGON);glColor3fv(pointColor[*face]);glVertex3fv(points[*face]);glColor3fv(pointColor[*(face+1)]);glVertex3fv(points[*(face+1)]);glColor3fv(pointColor[*(face+2)]);glVertex3fv(points[*(face+2)]);glColor3fv(pointColor[*(face+3)]);glVertex3fv(points[*(face+3)]);glEnd();  }void Cube(){glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1,1,-1,1,-1,5);
gluLookAt(r*sin(theta*3.14159/180)*sin(phi*3.14159/180),r*cos(theta*3.14159/180),r*sin(theta*3.14159/180)*cos(phi*3.14159/180),0,0,0,0,1,0);
int k;
for(k=0;k<6;k++){
glColor3fv( faceColor[k]);
drawFace(faces[k]);
}
glFlush();
}
void myKeyboard(unsigned char key,int x,int y){//键盘控制函数,控制视角变化switch(key)
{
case'A':
case'a':if(phi-1>-180)phi=phi-1;break;
case'D':
case'd':if(phi+1<180)phi=phi+1;break;
case'S':
case's':if(theta+1<180)theta=theta+1;break;
case'W':
case'w':if(theta-1>0)theta=theta-1;break;
case'G':
case'g':for(int i=0;i<8;i++){points[i][0]=points[i][0]+0.1;}break;
case'L':
case'l':for(int i=0;i<8;i++){points[i][0]=points[i][0]-0.1;}break;
}glutPostRedisplay();
}
void main(int argc, char** argv){glutInit(&argc, argv); //初始化GLUT库;glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);glutCreateWindow("hello"); // 创建窗口,标题为“hello" ;glEnable(GL_DEPTH_TEST);glMatrixMode(GL_PROJECTION);glLoadIdentity();glOrtho(-1,1,-1,1,-1,5);gluLookAt(r*sin(theta*3.14159/180)*sin(phi*3.14159/180),r*cos(theta*3.14159/180),r*sin(theta*3.14159/180)*cos(phi*3.14159/180),0,0,0,0,1,0);glutDisplayFunc(Cube); //用于绘制当前窗口;glutKeyboardFunc(myKeyboard); //指定键盘回调函数glutMainLoop();}

opengl绘制立方体相关推荐

  1. opengl绘制立方体(二)

    使用opengl绘制两个颜色不一样的立方体 #include "stdio.h" #include <GL/glew.h> #include <GLFW/glfw ...

  2. 使用opengl绘制立方体_一步步学OpenGL(25) -《Skybox天空盒子》

    教程 25 Skybox天空盒子 原文: http://ogldev.atspace.co.uk/www/tutorial25/tutorial25.html CSDN完整版专栏: https://b ...

  3. 使用opengl绘制立方体_opengl基本流程

    opengl渲染管线是一系列数据处理过程,作用是将应用程序的数据转换到最终渲染的图形.简单来说,opengl渲染流程主要包括顶点变换,图元装配,纹理或着色和光栅化四个阶段. 顶点变换:所有的图形在计算 ...

  4. android平台下OpenGL ES 3.0绘制立方体的几种方式

    OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...

  5. 【OpenGL ES】绘制立方体

    1 前言 本文主要介绍使用 OpenGL ES 绘制立方体,读者如果对 OpenGL ES 不太熟悉,请回顾以下内容: 绘制三角形 绘制彩色三角形 绘制正方形 绘制圆形 在绘制立方体的过程中,主要用到 ...

  6. OpenGL ES for Android 绘制立方体

    立方体有6个面,8个顶点,因此绘制立方体其实就是绘制6个面. 顶点shader attribute vec4 a_Position; attribute vec4 a_color; varying v ...

  7. 采用QT进行OpenGL开发(二)绘制立方体

    在OpenGL中三维实体会被拆分成一个个小的平面图形来进行绘制.比如我们绘制的立方体,可以拆分成六个平面来进行绘制.这里我们以一个带纹理的正方体来说明一下三维实体的绘制方法. 绘制立方体 由于正方体的 ...

  8. opengl绘制长方体线框_OpenGL绘制长方体

    #include   //引用相关包 void display(void) { glClear(GL_COLOR_BUFFER_BIT);  //清空颜色缓冲区 glColor3f(0,1,1);   ...

  9. Python+OpenGL进行立方体多纹理映射

    Python扩展库pyopengl完美地封装了OpenGL,从而使得可以使用Python编写计算机图形学程序.如果使用pip在线安装不成功的话,可以下载whl文件然后本地安装. 本文代码使用Pytho ...

  10. Android OpenGLES2.0(五)——绘制立方体

    上篇博客中我们提到了OpenGLES中绘制的两种方法,顶点法和索引法.之前我们所使用的都是顶点法,这次绘制立方体使用索引法来绘制立方体. 构建立方体 上篇博客讲到正方形的绘制,立方体是是由六个正方形组 ...

最新文章

  1. 顺序队列的表示和实现
  2. docker运行prometheus
  3. [EULAR文摘] 在总人群中监测ACPA能否预测早期关节炎
  4. eeprom的wp 引脚_EEPROM存储芯片24C02
  5. python如何获取url中的内容_python怎么提取url中的参数
  6. centos 7 安装golang遇到问题: No package golang available.
  7. 阿尔伯塔大学知名计算机工程学教授,关于加拿大阿尔伯塔大学电气与计算机工程学院教授来我校作学术报告的通知...
  8. 人生苦短,不光要用 Python,还要在 VSCode 里用 | 原力计划
  9. Hibernate的延迟加载问题
  10. webgis之相关工具
  11. jQuery和asp.net mvc相关资源链接
  12. 网络安全web渗透技术
  13. 倩女幽魂7月20日服务器维护,倩女幽魂手游2021年7月22日更新公告
  14. 百度网盘下载加速器--ENFI下载器、Speedkoala、PanDownload、SpeedPan
  15. SecureCRT连接交换机Console口
  16. 多看系统kindle最新版_谁说电气造价难?这样系统梳理一下简单多了!小白必看...
  17. prometheus入门实例
  18. 手游虚拟机服务器,手游剑侠情缘虚拟机镜像一键服务端+安卓客户端+远程工具+架设教程...
  19. 每日英语(2021-2-27)
  20. 如何设置 IntelliJ IDEA 主题和字体

热门文章

  1. 2021.11_Coggle组队学习_Linux命令
  2. 管理故事:孙权的用人哲学
  3. Python:实现max non adjacent sum最大非相邻和算法(附完整源码)
  4. 2017 CCCC预赛总结
  5. 串口协议和 stm32CubeMX实例、keil波形观测
  6. react.createContext
  7. np.take()函数用法 python numpy
  8. [附源码]Java计算机毕业设计SSM常见病辅助食疗系统
  9. 工作之余的抓包乐趣,fiddler抓包、Wireshark抓包
  10. 优化 WordPress 网站让百度快速收录