资源简介
计算机图形学 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配置资源文件,含32/64位
- GLPrint_demo
- PCL+Qt可视化,鼠标点拾取
- 圆球圆环构造opengl函数
- opengl画圆柱体直接函数法,逼近法
- openGl立方体纹理贴图
- OpenGL 库glut读取obj文件并使用显示列表
- 3DsMAX人体骨骼模型可用于OPENGL读取处
- gultopengl开发安装包
- opengl实现的飞机
- opengl 绘制 棱锥
- opengl光照小
- 无法打开包括文件 gl glaux.h No such fi
- openGL打包库
- opengl+vc写的太阳系演示源代码包含三
- OpenGL、FreeType 中文纹理绘制
- OpenGL 房子小院
- 基于OpenGL的贝塞尔曲线算法的实现
- 一个3d 飞机模型 可用opengl读取
- 基于openGL、pygame增强现实的视频实现
- Opengl 开发库, 动态链接库文件,op
- OpenGL战斗机飞行实现
- Opengl-光照球体
- OpenGL法向量计算
- GLUT库(glut.h、glut32.dll、glut32.lib)
- opengl的鼠标画线,圆,矩形,还有个
-
The Tao fr
amework 2.1.0 - OPENGL绘制三维地形图
- OpenGL实现对三维对象的旋转、平移和
- 在opengl里读取catia文件
评论
共有 条评论