资源简介
广东工业大学计算机图形学实验.rar 供实验参考!

代码片段和文件信息
// Demo of OpenGL Transforms
#include
#include
#include
static int width height; // 窗口尺寸
static bool wireframe = false; // 线框渲染模式标志
static bool projective = true; // 透视投影标志
static bool left_btn_down = false; // 鼠标左键按下标志
static bool rotate_scene = false; // 旋转场景标志
static GLfloat rot_x = 0.0f; // 摄像机x轴旋转量
static GLfloat rot_y = 0.0f; // 摄像机y轴旋转量
static GLfloat spin = 0.0; // 公转旋转角度
static int mouse_last_x mouse_last_y; // 鼠标上次的屏幕投影坐标
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); // 清除颜色和深度缓存
glPushMatrix(); // 将当前ModelView矩阵M压栈
glLoadIdentity();
glTranslatef(0 0 -5);// 设定摄像机位置(观察坐标系)
// 旋转场景
glRotatef( rot_x 1 0 0 );
glRotatef( rot_y 0 1 0 );
glColor3f(0.0 0.0 1.0);
glutWireTorus(0.2 0.5 30 10);// 绘制物体
glColor3f(1.0 0.5 0.0);
//在场景中增加一个橙色立方体
glRotatef( spin 0 1 0 );
glTranslatef( 2 0 0 );
glRotatef( spin*5 0 1 0 );
glutWireCube( 0.5 );
glPopMatrix(); // ModelView出栈
glutSwapBuffers(); // 交换前后颜色缓存
}
void init()
{
glClearColor(0.0 0.0 0.0 1.0); // 设定颜色缓存的默认值(黑色)
glClearDepth(1.0); // 设定深度缓存的默认值(1为最远)
glEnable(GL_DEPTH_TEST); // 打开深度检测
glDepthFunc(GL_LEQUAL); // 设定深度检测模式:保留较近值
glShadeModel(GL_SMOOTH); // 采用光滑渲染模型,或可采用GL_FLAT
}
void spinDisplay()
{
spin = spin + 0.01;
if (spin > 360.0)
spin = spin - 360.0;
glutPostRedisplay();
}
void resize(int w int h)
{
width = w;
height = h;
// 设定视区
int mx = w > h ? w : h; // mx = max(w h)
glViewport((w - mx) / 2 (h - mx) / 2 mx mx);
glMatrixMode(GL_PROJECTION); // 选择“投影矩阵”模式
glLoadIdentity(); // 将投影矩阵归一化
// 根据投影模式设定相应的投影矩阵P
if (projective) // 透视投影
gluPerspective(45.0f 1 0.01 100);
else // 平行投影
glOrtho(-2 2 -2 2 -10 10);
glMatrixMode(GL_MODELVIEW); // 选择ModelView矩阵模式
glLoadIdentity(); // 将ModelView矩阵M归一化
}
void mouse(int button int state int x int y)
{
switch(button)
{
case GLUT_LEFT_BUTTON:
if (state == GLUT_DOWN)
{
left_btn_down = true;
// 记录下当前鼠标位置
mouse_last_x = x;
mouse_last_y = y;
}
else if (state == GLUT_UP)
left_btn_down = false;
break;
case GLUT_MIDDLE_BUTTON:
if (state == GLUT_DOWN) /*按下中键开始或停止旋转*/
rotate_scene = !rotate_scene;
if ( rotate_scene )
glutIdleFunc(spinDisplay);
else
glutIdleFunc(0);
break;
default:
break;
}
}
void mousemoving(int x int y)
{
if (left_btn_down)
{
// 将当前鼠标位置和按下左键时的鼠标位置做比较
rot_y += x - mouse_last_x;
rot_x += y - mouse_last_y;
// 更新鼠标位置
mouse_last_x = x;
mouse_last_y = y;
}
glutPostRedisplay();
}
void keyboard(unsigned char key int xmouse int ymouse)
{
switch (key)
{
case ‘p‘: case ‘P‘:
projective = !projective;
glMatrixMode(GL_PROJECTION); // 选择“投影矩阵”模式
glLoadIdentity(); // 将投影矩阵归一化
// 根据投影模式设定相应
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 560724 2011-04-01 21:45 广东工业大学计算机图形学实验\freeglut.zip
文件 148520 2011-03-17 15:01 广东工业大学计算机图形学实验\GLUT.rar
文件 1603 2011-03-02 21:06 广东工业大学计算机图形学实验\VC中配置OpenGL.txt
文件 92672 2011-04-28 14:07 广东工业大学计算机图形学实验\实验1.ppt
文件 4507 2011-05-11 14:52 广东工业大学计算机图形学实验\实验2\cg_exp2_fr
文件 3533 2011-05-11 14:14 广东工业大学计算机图形学实验\实验2\cg_exp2_fr
文件 559 2011-05-11 14:53 广东工业大学计算机图形学实验\实验2\cg_exp2_fr
文件 41984 2011-05-11 14:57 广东工业大学计算机图形学实验\实验2\cg_exp2_fr
文件 48640 2011-05-11 14:57 广东工业大学计算机图形学实验\实验2\cg_exp2_fr
文件 1515 2011-05-11 14:56 广东工业大学计算机图形学实验\实验2\cg_exp2_fr
文件 196692 2011-05-11 14:56 广东工业大学计算机图形学实验\实验2\Debug\cg_exp2_fr
文件 248364 2011-05-11 14:56 广东工业大学计算机图形学实验\实验2\Debug\cg_exp2_fr
文件 16893 2011-05-11 14:56 广东工业大学计算机图形学实验\实验2\Debug\cg_exp2_fr
文件 1936748 2011-05-11 14:16 广东工业大学计算机图形学实验\实验2\Debug\cg_exp2_fr
文件 467968 2011-05-11 14:56 广东工业大学计算机图形学实验\实验2\Debug\cg_exp2_fr
文件 82944 2011-05-11 14:56 广东工业大学计算机图形学实验\实验2\Debug\vc60.idb
文件 53248 2011-05-11 14:56 广东工业大学计算机图形学实验\实验2\Debug\vc60.pdb
文件 266752 2009-03-01 11:00 广东工业大学计算机图形学实验\实验2\freeglut.dll
文件 111104 2011-05-11 13:07 广东工业大学计算机图形学实验\实验2\实验2.ppt
文件 2183 2011-04-28 14:03 广东工业大学计算机图形学实验\实验3\Debug\StdAfx.obj
文件 200783 2011-05-25 15:28 广东工业大学计算机图形学实验\实验3\Debug\test.exe
文件 253752 2011-05-25 15:28 广东工业大学计算机图形学实验\实验3\Debug\test.ilk
文件 13906 2011-05-25 15:28 广东工业大学计算机图形学实验\实验3\Debug\test.obj
文件 203728 2011-04-28 14:03 广东工业大学计算机图形学实验\实验3\Debug\test.pch
文件 467968 2011-05-25 15:28 广东工业大学计算机图形学实验\实验3\Debug\test.pdb
文件 41984 2011-05-25 15:28 广东工业大学计算机图形学实验\实验3\Debug\vc60.idb
文件 53248 2011-05-25 15:28 广东工业大学计算机图形学实验\实验3\Debug\vc60.pdb
文件 169984 1998-08-18 16:25 广东工业大学计算机图形学实验\实验3\glut.dll
文件 21440 1998-08-18 16:24 广东工业大学计算机图形学实验\实验3\glut.h
文件 79654 1998-08-18 16:25 广东工业大学计算机图形学实验\实验3\glut.lib
............此处省略58个文件信息
- 上一篇:最小二乘法 参数辨识
- 下一篇:远程抄表系统
相关资源
- 04741计算机网络原理知识点整理.docx(
- 2018全国大学生计算机博弈大赛 棋谱
- GBT 15532-2008 计算机软件测试规范
- 计算机图形学 边填充算法实现代码
- 嵌入式图形界面MiniGUI的示例程序9例
- 计算机图形学课设 画板
- 硕士计算机英文文献翻译(中英对比
- 加密cad图形的lisp文件
- 20篇关于计算机的毕业设计外文翻译
- 校园网络规划与设计课程设计
- 一个比较完整的开源cad 图形程序
- 计算机专业基础综合知识
- 计算机软件工程研究生专业毕业设计
- 华北科技学院计算机系认识实习报告
- 北京邮电大学 计算机院 复试机试
- 广东工业大学操作系统实验四文件系
- 广东工业大学汇编实验二用表格形式
- c 图形面积计算 利用继承与多态
- SOCKET 网络编程 计算机网络 作业 客户
- vc利用MFC底层开发的二维GIS管理软件,
- 简单的交互式图形系统的实现
- 简易绘图程序(计算机图形学课程设
- 公务员计算机专业考试要点整理
- 一套非常实用的综合布线方案文档(
- 计算机网络课程设计—ARQ协议模拟实
- 计算机图形学(openGL)代码
- 图形学集成程序dda、中点算法、多边
- 计算机图形实验(哈尔滨工程大学)
- 湖南省计算机等级二级考试excel题集锦
- 浙江工业大学计算机考研题
评论
共有 条评论