资源简介
opengl绘制两个行星以及一个恒星,利用键盘和鼠标来进行互动,入门级的代码。
代码片段和文件信息
#include
#include
#include
#include
#include
static int year = 0 day = 0 time = 0 day2 = 0 year2 = 0 time2 = 0;
/*
初始化操作
*/
void init() {
//设置清屏色
glClearColor(0.0f 0.0f 0.0f 0.0f);
//设置着色模式,填充色与顶点一致
glShadeModel(GL_FLAT);
}
void sun() {
glColor3f(1.0 1.0 0.0);
//复制当前矩阵并保存到栈顶
glPushMatrix();
glRotatef((GLfloat)time 0.0f 1.0f 0.0f);
//渲染一个太阳,半径1.0f
glutWireSphere(1.0f 20.0f 16.0f);
glPopMatrix();
}
void planet1() {
glColor3f(0.0 0.5 1.0);
glPushMatrix();
//绕y轴旋转year度,此时地球的局部坐标系统与全局坐标系统不一致,表现出公转
glRotatef((GLfloat)year 0.0f 1.0f 0.0f);
//沿x轴方向移动2个单位长度,此时地球的局部坐标系统已经与全局的坐标系统偏移
glTranslatef(2.0f 0.0f 0.0f);
//沿y轴旋转day度,此时地球的局部坐标系统与全局坐标系统一致,表现出自转
glRotatef((GLfloat)day 0.0f 1.0f 0.0f);
glutWireSphere(0.2f 10.0f 8.0f);
//弹出栈顶矩阵
glPopMatrix();
}
void planet2() {
glColor3f(1.0 0.5 1.0);
glPushMatrix();
glRotatef((GLfloat)year2 0.0f 1.0f 0.0f);
glTranslatef(4.0f 0.0f 0.0f);
glRotatef((GLfloat)day2 0.0f 1.0f 0.0f);
//绘制第二个地球,半径0.2f
glutWireSphere(0.2f 10.0f 8.0f);
glPopMatrix();
}
/*
展示绘制效果
*/
void display() {
//清理颜色缓冲区
glClear(GL_COLOR_BUFFER_BIT);
//设置绘制颜色
sun();
planet1();
planet2();
//弹出栈顶矩阵
glPopMatrix();
//交换缓冲区数据
glutSwapBuffers();
//强制完成绘制指令
glFlush();
}//第一个行星和恒星
/*
调整窗口尺寸
*/
void reshape(int width int height) {
//设置视口矩形区域,在默认情况下,视口被设置为占据打开窗口的整个像素矩形
//glViewport(0 0 (GLsizei)width (GLsizei)height);
//之后的矩阵操作定义为投影矩阵操作
glMatrixMode(GL_PROJECTION);
//等于是将之前矩阵变换导致变化过的栈顶矩阵重新归位,置为单位矩阵!等于是之前的矩阵变换带来的影响到此为止了!
glLoadIdentity();
//创建一个表示对称透视视图平截头体的矩阵
//设置眼睛睁开的角度,视景体的宽高比,近截面的距离,远截面的距离
gluPerspective(60.0f (GLfloat)width / (GLfloat)height 1.0f 20.0f);
//之后的矩阵操作定义为模型视图矩阵操作
glMatrix
- 上一篇:《C语言程序开发范例宝典》光盘源码
- 下一篇:大一上学期C++程序设计复习资料
相关资源
- 安卓c语言开发SDL2+opengles
- 交互式计算机图形学 第六版 OpenGL源代
- VC++基于OpenGL模拟的一个3维空间模型
- opengl绘制汽车.cpp
- opengl实现水流效果sph
- opengl源代码,全是精华!
- OpenGL迷宫山东大学图形学实验三
- opengl的立方体消隐算法
- vc++ opengl代码爆炸
- 我见过最漂亮的CS仿真程序openGL和C+
- 广东某工业大学的openGL课程设计
- 使用OpenGL实现多个小球在密闭空间内
- 利用openGL和C++实现光线跟踪绘图的完
- OpenGl C++太阳系小行星运行系统 可切换
- vc++和OpenGL实现三维地形实时动态显示
- C++实现利用OpenGL实现三维绘图
- 太阳、地球、月亮之间的运动图Open
- MFC 单文档 实现opengl 三维旋转 缩放
- OPENGL的烟花程序(代码)
- MFC+OpenGL三维建模与动画显示
- 基于opengl粒子系统实现喷泉的模拟
- 一个基于openGL的太阳系模型,太阳地
- vc6.0+opengl纯色五角星填充
- vc6.0+opengl动态绘制五角星
- NeHe_OpenGL教程完整版 里面有地址可以
- OpenGL简单——实现立方体贴上不同纹
- MFC实现dem的读取与现实
- VC++ OpenGL三维地形漫游
- OpenGL实现三维地形实时动态显示
- VC++中Opengl实现建筑物虚拟漫游
评论
共有 条评论