资源简介

广东工业大学计算机图形学实验.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_framework.cpp

     文件       3533  2011-05-11 14:14  广东工业大学计算机图形学实验\实验2\cg_exp2_framework.dsp

     文件        559  2011-05-11 14:53  广东工业大学计算机图形学实验\实验2\cg_exp2_framework.dsw

     文件      41984  2011-05-11 14:57  广东工业大学计算机图形学实验\实验2\cg_exp2_framework.ncb

     文件      48640  2011-05-11 14:57  广东工业大学计算机图形学实验\实验2\cg_exp2_framework.opt

     文件       1515  2011-05-11 14:56  广东工业大学计算机图形学实验\实验2\cg_exp2_framework.plg

     文件     196692  2011-05-11 14:56  广东工业大学计算机图形学实验\实验2\Debug\cg_exp2_framework.exe

     文件     248364  2011-05-11 14:56  广东工业大学计算机图形学实验\实验2\Debug\cg_exp2_framework.ilk

     文件      16893  2011-05-11 14:56  广东工业大学计算机图形学实验\实验2\Debug\cg_exp2_framework.obj

     文件    1936748  2011-05-11 14:16  广东工业大学计算机图形学实验\实验2\Debug\cg_exp2_framework.pch

     文件     467968  2011-05-11 14:56  广东工业大学计算机图形学实验\实验2\Debug\cg_exp2_framework.pdb

     文件      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个文件信息

评论

共有 条评论