资源简介
计算机图形学 OpenGL 实验七 顶点数组 拾取

代码片段和文件信息
#include
#include
#include
#include
bool selected[20]={false};
float center[] = {0 -0.8 -6};
float eye[] = {0 1.2 2};
float fTranslate;
float fRotate = 156.5f;
float fScale = 1.0f; // set inital scale value to 1.0f
bool bPersp = false;//注意要转换成 正投影下才能 进行拾取!!!
bool bAnim = false;
bool bWire = false;
int wHeight = 0;
int wWidth = 0;
GLint dl = 0;
void Draw_Leg();
int drawMode = 0;
#define SIZE 512
#define N 5
GLuint selectBuf[SIZE];
GLint hits=0;
extern void drawNaive();
extern void drawVA();
extern GLint Gen3DobjectList();
void drawDL() {
glCallList(dl);
}
void drawBunny()
{
glRotatef(90 1 0 0);
glScalef(3 3 3);
if (drawMode == 0)
drawNaive();
else if (drawMode == 1)
drawVA();
else
drawDL();
}
void Draw_Desk()
{
glPushMatrix();
glTranslatef(0 0 3.5);
glScalef(5 4 1);
glutSolidCube(1.0);
glPopMatrix();
glPushMatrix();
glTranslatef(1.5 1 1.5);
Draw_Leg();
glPopMatrix();
glPushMatrix();
glTranslatef(-1.5 1 1.5);
Draw_Leg();
glPopMatrix();
glPushMatrix();
glTranslatef(1.5 -1 1.5);
Draw_Leg();
glPopMatrix();
glPushMatrix();
glTranslatef(-1.5 -1 1.5);
Draw_Leg();
glPopMatrix();
}
void render(bool s)
{
GLfloat mat[4];
if(s){
mat[0] = 0; mat[1] = 0; mat[2] = 1; mat[3] = 1.0;
glMaterialfv(GL_FRONT GL_AMBIENT mat);
}
else{
mat[0] = 0; mat[1] = 0; mat[2] = 0; mat[3] = 1.0;
glMaterialfv(GL_FRONT GL_AMBIENT mat);
}
}
void Draw_Scene(GLenum mode)
{
if (mode == GL_SELECT)
glLoadName(1);
glPushMatrix();
glTranslatef(-1 -1 5.5);
render(selected[1]);
drawBunny();
glPopMatrix();
if (mode == GL_SELECT)
glLoadName(2);
glPushMatrix();
glTranslatef(0 -1 5.5);
render(selected[2]);
drawBunny();
glPopMatrix();
if (mode == GL_SELECT)
glLoadName(3);
glPushMatrix();
glTranslatef(1 -1 5.5);
render(selected[3]);
drawBunny();
glPopMatrix();
if (mode == GL_SELECT)
glLoadName(4);
glPushMatrix();
glTranslatef(-1 1 5.5);
render(selected[4]);
drawBunny();
glPopMatrix();
if (mode == GL_SELECT)
glLoadName(5);
glPushMatrix();
glTranslatef(0 1 5.5);
render(selected[5]);
drawBunny();
glPopMatrix();
if (mode == GL_SELECT)
glLoadName(6);
glPushMatrix();
glTranslatef(1 1 5.5);
render(selected[6]);
drawBunny();
glPopMatrix();
if (mode == GL_SELECT)
glLoadName(7);
glPushMatrix();
glTranslatef(-1 0 5.5);
render(selected[7]);
drawBunny();
glPopMatrix();
if (mode == GL_SELECT)
glLoadName(8);
glPushMatrix();
glTranslatef(0 0 5.5);
render(selected[8]);
drawBunny();
glPopMatrix();
if (mode == GL_SELECT)
glLoadName(9);
glPushMatrix();
glTranslatef(1 0 5.5);
render(selected[9]);
drawBunny();
glPopMatrix();
if (mode == GL_SELECT)
glLoadName(10);
glPushMatrix();
glTranslatef(-1 -1 7.5);
r
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2011-11-30 19:09 Exp7\
目录 0 2011-11-30 19:09 Exp7\Exp7\
文件 879 2011-05-05 13:08 Exp7\Exp7.sln
文件 13312 2011-05-19 15:16 Exp7\Exp7.suo
文件 8912 2011-05-19 15:16 Exp7\Exp7\all-bunny.cpp
文件 931863 2011-05-05 22:26 Exp7\Exp7\bunny.cpp
文件 3262 2011-05-05 13:14 Exp7\Exp7\Exp7.vcxproj
文件 1036 2011-05-05 13:14 Exp7\Exp7\Exp7.vcxproj.filters
相关资源
- OpenGL参考手册
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- OPENGL实现世界上最小的3D游戏
- VS2012OpenGL配置所需要的全部libdllh文件
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl程序-会跳舞的骷髅
- opengl实现三维网格光顺Laplacian算法
- opengl——爆炸
- OpenGL三维地形建模
- opengl游戏编程徐明亮版(含源码)
- 用OPENGL画的一个简单的直升飞机
- opengl完美天空盒
- 3D绘图程序设计:使用Direct3D 10/9和Ope
- OpenGL绘制可运动自行车源程序.zip
- OpenGL实现飘动效果
- opengl室内场景的绘制,包括碰撞检测
评论
共有 条评论