OpenGL编程指南10:组合运动示例1—创建太阳系模型
1.程序代码:
#include <vgl.h> static int year =0, day =0;void init(void) {glClearColor(0.0,0.0,1.0,0.0); //清除背景底色glShadeModel(GL_FLAT); } void display(void) {glClear(GL_COLOR_BUFFER_BIT);glColor3f(0.5,0.5,0.5); //相当于画笔glPushMatrix(); glRotatef((GLfloat)year, 0.0, 1.0, 0.0);glutWireSphere(1,30,24); //sun: radius longtitude latitudeglPopMatrix(); glPushMatrix();glRotatef((GLfloat)year,-1,1,0);glTranslatef(3.0, 0.0, 0.0); glTranslatef(0.0, 3.0, 0.0); glRotatef((GLfloat)day, -1.0, 1.0, 0.0);glutWireSphere(0.3,10,8);glPopMatrix();glPushMatrix();glRotatef((GLfloat)year,1,1,0);glTranslatef(2.0,0.0,0.0); glTranslatef(0.0,-2.0,0.0); glRotatef((GLfloat)day,1,1,0);glutWireSphere(0.3,10,8);glPopMatrix();glutSwapBuffers(); }void reshape(int w,int h) {glViewport(0,0,(GLsizei)w,(GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(60,(GLfloat)w/(GLfloat)h,1.0,20.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();gluLookAt(0.0,0.0,6.0,0.0,0.0,0.0,0.0,1.0,0.0 ); } void keyboard(unsigned char key, int x,int y) {switch(key){case 'd': day = (day+10) %360;glutPostRedisplay();break;case 'D': day = (day-10) %360;glutPostRedisplay();break;case 'y': year = (year+5) %360;glutPostRedisplay();break;case 'Y': year = (year-5) %360;glutPostRedisplay();break;default:break;} } int main(int argc, char** argv) {glutInit(&argc,argv);glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);glutInitWindowSize(400,400);glutInitWindowPosition(200,200);glutCreateWindow(argv[0]);init();glutDisplayFunc(display);glutReshapeFunc(reshape);glutKeyboardFunc(keyboard);glutMainLoop();return 0; }
2.说出结果
OpenGL编程指南10:组合运动示例1—创建太阳系模型相关推荐
- OpenGL编程指南11:组合运动示例2—创建机器人手臂模型
1.源代码: #include <vgl.h>static int shoulder = 0, elbow = 0; void init(void) {glClearColor(0.0,0 ...
- 《OpenGL编程指南》一第2章 着色器基础
本节书摘来自华章出版社<OpenGL编程指南>一书中的第2章,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 第2章 着色 ...
- OpenGL编程指南7:视图-
1.前言 计算机图形学的要点就是创建三维物体的二维图像(图像必须是二维的,因为他是在平面的屏幕上显示的).但是,当我们决定怎样在屏幕上绘图时,必须使用三维坐标的方式考虑. 为了把一个物体的三维坐标变成 ...
- OpenGL编程指南4:双缓冲实现运行
1.前言 绘制一个旋转的方块,主要为了说明glutSwapBuffers()函数的用法. 同时也为了学习如何使用GLUT控制输入设备,并打开或关闭空闲处理函数. 2.OpenGL编程及程序剖析 /** ...
- 《OpenGL编程指南(原书第8版)》——计算着色器
原文 http://www.csdn.net/article/2014-11-21/2822754 主题 OpenGL 数学 概述 由于图形处理器每秒能够进行数以亿计次的计算,它已成为一种性能十分惊 ...
- 《OpenGL编程指南》一3.2 OpenGL缓存数据
本节书摘来自华章出版社<OpenGL编程指南>一书中的第3章,第3.2节,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 ...
- OpenGL深入探索——《OpenGL编程指南(原书第8版)》——计算着色器
转载自 <OpenGL编程指南(原书第8版)>--计算着色器 概述 由于图形处理器每秒能够进行数以亿计次的计算,它已成为一种性能十分惊人的器件.过去,这种处理器主要被设计用于承担实时图形渲 ...
- OpenGL编程指南8-Transform Feedback例子理解
transform feedback 是,OpenGL管线中,的,顶点处理阶段结束之后,图元装配和光栅化之前的一个步骤.transform feedback,可以重新捕获即将装配为图元(点.线段.三角 ...
- OpenGL编程指南5:学习绘制不同风格的曲线
1.不同风格曲线绘制 #include <vgl.h> //宏定义;当定义的宏不能用一行表达完整时,可以用"\"表示下一行继续 #define drawOneLine( ...
最新文章
- 计算机二级是立刻知道成绩单,可以在公布前知道计算机二级考成绩吗
- 关于Zookeeper
- 2017-06-18 前端日报
- 品牌保量技术在阿里妈妈外投场景的应用
- c语言入口参数和出口参数,麻烦帮忙指出一下这个函数的入口参数和出口参数呀!...
- vmware vcenter orchestrator configuration提示“用户名密码错误或登录失败超过次数被锁定”...
- TCP连接发送窗口问题思考
- 现代电力系统分析[简答】
- SEM医械研发:常见医用塑料种类、特性与选用知识汇总
- UE4-使用WebBrowser插件打开720云全景图
- 1、STM32通过软件IIC连接ADXL345(ADXL345使用遇到的一些坑)
- qt几种常见的打包安装程序工具
- Robot Framework(三):RIDE工具简介
- Ipone桌面计算机没了,苹果电脑重启软件不见了怎么办
- endnote中科大版是什么意思_ios14.2rc是什么意思 ios14.2rc版是原来的“GM”版吗
- 洛谷-P1478-陶陶摘苹果(升级版)
- 用HALL 库配置GPIO以及相关寄存器
- 解决vs2013编译时scanf报错的方法
- 第一节云计算课程的感想
- 4.1.3 消费者轮询的流程
热门文章
- Memcached - In Action
- 详解 WSUS 部署
- nyoj 1216 整理图书(dp)
- poj-Scout YYF I
- List去重为什么要写equals(),hashCode()方法
- dedecms原理及使用
- 【转】MySQL sql_mode 说明(及处理一起 sql_mode 引发的问题)
- BZOJ4723[POI2017]Flappy Bird——模拟
- Missing artifact com.sun:tools:jar 1.5.0 终极解决方法
- UVA 1151	Buy or Build MST(最小生成树)