资源简介
一个用OpenGL写的3D很萌的企鹅,实现了鼠标控制旋转,键盘o和p设置正交投影和透视投影。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#define PI 3.141592
static float c= PI/180.0f; //弧度和角度转换参数
static int du = 90oldmy = -1oldmx = -1; //du是视点绕y轴的角度opengl里默认y轴是上方向
static float r = 2.0fh = 0.0f; //r是视点绕y轴的半径h是视点高度即在y轴
static float width = 500 height = 500;
static bool isPers = true;
void init()
{
glClearColor (1.0 1.0 1.0 1.0);
glShadeModel (GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINTGL_NICEST);
const GLfloat light_ambient[] = { 0.1f 0.1f 0.1f 1.0f };
const GLfloat light_diffuse[] = { 1.0f 1.0f 1.0f 1.0f };
const GLfloat light_specular[] = { 1.0f 1.0f 1.0f 1.0f };
const GLfloat light_position[] = { 0.5f 0.5f -0.5f 1.0f };
const GLfloat mat_ambient[] = { 0.5f 0.5f 0.5f 1.0f };
const GLfloat mat_diffuse[] = { 0.5f 0.5f 0.5f 1.0f };
const GLfloat mat_specular[] = { 0.3f 0.3f 0.3f 1.0f };
const GLfloat high_shininess[] = { 100.0f };
glEnable(GL_LIGHT0);
glEnable(GL_NORMALIZE);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
glLightfv(GL_LIGHT0 GL_AMBIENT light_ambient);
glLightfv(GL_LIGHT0 GL_DIFFUSE light_diffuse);
glLightfv(GL_LIGHT0 GL_SPECULAR light_specular);
glLightfv(GL_LIGHT0 GL_POSITION light_position);
glMaterialfv(GL_FRONT GL_AMBIENT mat_ambient);
glMaterialfv(GL_FRONT GL_DIFFUSE mat_diffuse);
glMaterialfv(GL_FRONT GL_SPECULAR mat_specular);
glMaterialfv(GL_FRONT GL_SHININESS high_shininess);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_COLOR_MATERIAL);
//关闭背面顶点的计算
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE GL_FALSE);
}
void display()
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
if(isPers){
gluPerspective(50 1 1 10);
gluLookAt( r * cos(c * du) h r * sin(c * du)
0 0 0
0 1 0);
} else {
glLoadIdentity();
gluOrtho2D(-(GLdouble) height/height (GLdouble) height/height -(GLdouble) height/height (GLdouble) height/height);
}
static int list = 0;
if( list == 0 )
{
// 嘴的数组
GLfloat PointA[] = {0 0.0 0.28}
PointB[] = {-0.15 0.1 0.28}
PointC[] = {0.15 0.1 0.28}
PointD[] = {0 0.1 0.45}
PointE[] = {0 0.15 0.28};
GLfloat ColorR[] = {0 0 1};
// 组成嘴的六个三角形
glNewList(list GL_COMPILE);
glColor3f(1 0.6 0);
glBegin(GL_TRIANGLES);
// 平面BDC
glColor3f(1 0.6 0);
glVertex3fv(PointC);
glColor3f(1 1.0 0);
glVertex3fv(PointD);
glColor3f(1 0.6 0);
glVertex3fv(PointB);
// 平面ADB
glColor3f(1 0.6 0);
glVertex3fv(PointA);
glColor3f(1 0.6 0);
glVertex3fv(PointB);
glColor3f(1 0.8 0);
glVertex3fv(PointD);
// 平面ACD
glColor3f(1 1.0 0);
glVertex3fv(PointD);
glColor3f(1 0.6 0);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 75776 2013-10-13 22:28 Debug\Homework.exe
文件 1462432 2013-10-13 22:28 Debug\Homework.ilk
文件 896000 2013-10-13 22:28 Debug\Homework.pdb
文件 572 2013-10-13 22:28 Homework\Debug\cl.command.1.tlog
文件 22226 2013-10-13 22:28 Homework\Debug\CL.read.1.tlog
文件 264 2013-10-13 22:28 Homework\Debug\CL.write.1.tlog
文件 53 2013-10-13 22:28 Homework\Debug\Homework.lastbuildstate
文件 1226 2013-10-13 22:28 Homework\Debug\Homework.log
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
文件 2 2013-10-13 22:28 Homework\Debug\li
............此处省略73个文件信息
- 上一篇:5G十个应用场景
- 下一篇:稀有资源宏华at2000印花分色软件
相关资源
- OSG 72集视频教程和资料140620
- OpenGL参考手册
- The Secret Path 3D 3D魔方迷宫[源码][scra
-
Actionsc
ript 1.0实现能跟随鼠标运动的 - Qt Creator opengl实现四元数鼠标控制轨迹
- Unity3D登录界面工程
- 3DWebGIS 3DWebGIS
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 3des加解密_C 实现
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- unity3d反编译工具
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- Quest3D 2个动画相机切换实例
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- FLAC3D数值模拟的边坡稳定性
-
UnityWebPla
yerFull - Scratch:3d飞行模拟器 .sb3
- OPENGL实现世界上最小的3D游戏
- 亲子嘉年华路演活动模型
- 基于GTP修正的R3DGM建模与可视化方法
- 通过3D打印样品发现NMR曲线的不同姿态
川公网安备 51152502000135号
评论
共有 条评论