资源简介
OPENGL学习材料,3D小雪人画面,非常适合初学者使用。O(∩_∩)O哈哈~

代码片段和文件信息
#include
#include
#include
static float angle=0.0ratio;
static float x=0.0fy=1.75fz=5.0f; //照相机所在位置
static float lx=0.0fly=0.0flz=-1.0f; //观察方向
static GLint snowman_display_list;
void DrawSnowman()
{
glColor3f(1.01.01.0);
//画身体
glTranslatef(0.0f0.75f0.0f); //坐标转换,用当前矩阵乘以参数指定的平移矩阵
glutSolidSphere(0.75f2020); //绘制实心球体。
//0.75f球体的半径;
//20球体围绕z轴(相对于经度线)分割的数目;
//20球体沿着z轴(相对于维度线)分割的数目
//glutWireSphere(GLdouble radiusGLint slicesGLint stacks)—绘制线框球体参数意义同上。
//画脑袋
glTranslatef(0.0f1.0f0.0f);
glutSolidSphere(0.25f2020);
//画眼睛
glPushMatrix();
glColor3f(0.0f0.0f0.0f);
glTranslatef(0.05f0.1f0.18f);
glutSolidSphere(0.05f1010);
glTranslatef(-0.1f0.0f0.0f);
glutSolidSphere(0.05f1010);
glPopMatrix();
//画鼻子
glColor3f(1.0f0.5f0.5f);
glRotatef(0.0f1.0f0.0f0.0f);
glutSolidCone(0.08f0.5f102); //绘制实心圆锥体
//0.08f圆锥体基底的半径;
//0.5f圆锥体的高度;
//10圆锥体围绕z轴的分割数;
//2圆锥体沿着z轴的分割数
//glutSolidTorus(GLdouble innerradiusGLdouble outerradiusGLint nslicesGLint nstacks)绘制实心圆环
//innerradius圆环内半径;
//outerradius圆环外半径;
//nslices沿着圆环方向的分割数;
//nstacks圆环的换线数
}
GLuint CreateDL()
{
GLuint SnowmanDL;
SnowmanDL=glGenLists(1);
// 开始显示列表
glNewList(SnowmanDLGL_COMPILE);
// call the function that contains the rendering commands
DrawSnowman();
// endList
glEndList();
return SnowmanDL;
}
void initScene()
{
glEnable(GL_DEPTH_TEST);
snowman_display_list =CreateDL();
}
void Resize(int wint h)
{
if(h==0)h=1;
ratio=1.0*w/h;
glMatrixMode(GL_PROJECTION); //指定哪一个矩阵式当前操作的矩阵。
//可选择的数值为:
//GL_PROJECTION对投影矩阵堆栈应用随后的矩阵操作
//GL_MODELVIEW对模型视图矩阵堆栈应用随后的矩阵操作
//GL_TEXTRUE对纹理矩阵堆栈应用随后的矩阵操作
glLoadIdentity(); //将当前矩阵设置为单位矩阵
glViewport(00wh);
gluPerspective(45ratio11000);//创建透视投影矩阵函数。
//45是y方向上可见区域的夹角(视场角),单位度;
//ratio纵横比,确定x方向的可见区域;
//(11000)从观察者到近修建平面和远修建平面的距离。
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(xyzx+lxy+lyz+lz0.01.00.0);//定义视景转换函数。
//(xyz)视点的位置;
//(lxlylz)参考点的位置;
//(0.01.00.0)向上矢量的方向
}
void renderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//画一个地面
glColor3f(0.9f 0.9f 0.9f);
glBegin(GL_QUADS);
glVertex3f(-100.0f 0.0f -100.0f);
glVertex3f(-100.0f 0.0f 100.0f);
glVertex3f( 100.0f 0.0f 100.0f);
glVertex3f( 100.0f 0.0f -100.0f);
glEnd();
//画36个雪人
for(int i = -3; i < 3; i++)
for(int j=-3; j < 3; j++)
{
glPushMatrix();
glTranslatef(i*10.00j * 10.0);
glCallList(snowman_display_list);;
glPopMatrix();
}
glutSwapBuf
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4522 2011-07-11 14:17 3D小雪人 VC6.0+OPENGL\woz.cpp
目录 0 2011-07-12 11:34 3D小雪人 VC6.0+OPENGL
----------- --------- ---------- ----- ----
4522 2
- 上一篇:keil.txt
- 下一篇:ComToKey源代码包含各种指令集的中文解码
相关资源
- 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曲线的不同姿态
评论
共有 条评论