资源简介
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源代码包含各种指令集的中文解码
相关资源
- Unity3d Shader代码提示加高亮 一键安装
- 施加环形锚杆的FISH命令流
- opengl动态云彩的模拟
- nvidia-opengl-rdp 英伟达显卡 rdp 远程桌面
- 水波纹water 3D.unitypackage
- OpenGL模型视图矩阵演示
- 基于VC_的OpenGL三维动画仿真及场景漫
- 最新Kinect v2 with MS-SDK 2.10.1 for Unity3D
- Unity3D地下守护神ARPG开发三部曲视频教
- Ogre 3d 1.7 beginner Guide 源码
- D3D11纹理基础
- D3D11绘图基础:旋转的彩色立方体
- D3D11初始化代码
- OpenGL仿微信视频聊天
- OpenGL预览摄像头
- unity3d 类似LOL的游戏源码
- OpenGl 会走路的机器人
- ANSYS Q3D Extractor 简明教程
- opengl 做的很漂亮的一棵树,用分形算
- 3ds模型导入opengl,实现旋转平移缩放
- opengl中点画圆法
- opengl编程指南第7版源代码
- 3D酷炫屏幕保护程序OpenGL
- 基于VTK的人头骨3D图像
- 一款3D骰子游戏服务器
- magicCubeModel
- LitJson修改版,Unity支持float数据类型
- OpenCV 3d结构光扫描
- OpenGL文件.zip
- 3dsmax2018keygen64.rar
评论
共有 条评论