资源简介
利用opengl使用Microsoft Visual Studio 2005编写出来的小程序,附带着源代码
代码片段和文件信息
#define MAX_POLYGONS 8
#define MAX_VERTICES 10
#define TRUE 1
#define FALSE 0
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
void myMouse(intintintint);
void myMotion(intint);
void myDisplay();
void Reshape(intint);
void color_menu(int);
void safe_menu(int);
void main_menu(int);
int pick_polygon(int xint y);
void myinit();
typedef struct polygon
{
int color;
bool used;
int xminxmaxyminymax;
float xcyc;
int nvertices;
int x[MAX_VERTICES];
int y[MAX_VERTICES];
}polygon;
bool picking = FALSE;
bool moving = FALSE;
bool changing = false;
bool del = false;
int in_polygon = -1;
int present_color = 0;
int fs;
ifstream fin;
ofstream fout;
GLsizei wh = 500ww = 500;
int draw_mode = 0;
GLfloat colors[8][3]={{0.00.00.0}{1.00.00.0}{0.01.00.0}{0.00.01.0}{0.01.01.0}{1.00.01.0}{1.01.00.0}{1.01.01.0}};
polygon polygons[MAX_POLYGONS];
void myReshape(int wint h)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0(GLdouble)w0.0(GLdouble)h);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glViewport(00wh);
ww = w;
wh = h;
}
void myinit()
{
int i;
glClearColor(1.01.01.01.0);
for(i=0;i polygons[i].used=FALSE;
}
void myMouse(int btnint stateint xint y)
{
int ij;
y = wh-y;
if(btn==GLUT_LEFT_BUTTON && state==GLUT_DOWN && !picking && !moving)
{
moving = FALSE;
if(in_polygon>=0)
{
if(polygons[in_polygon].nvertices==MAX_VERTICES)
{
printf(“exceeds maximum number vertices\n“);
exit(0);
}
i=polygons[in_polygon].nvertices;
polygons[in_polygon].x[i]=x;
polygons[in_polygon].y[i]=y;
polygons[in_polygon].nvertices++;
}
}
if(btn==GLUT_LEFT_BUTTON && state==GLUT_DOWN && picking && !moving)
{
picking= FALSE;
moving =FALSE;
j=pick_polygon(xy);
if(j>=0)
{
polygons[j].used=FALSE;
in_polygon=-1;
glutPostRedisplay();
}
}
}
int pick_polygon(int xint y)
{
int i;
for(i=0;i {
if(polygons[i].used)
if((x>=polygons[i].xmin)&&(x<=polygons[i].xmax)&&(y>=polygons[i].ymin)&&(y<=polygons[i].ymax))
{
in_polygon=i;
moving = TRUE;
return(i);
}
}
printf(“not in a polygon\n“);
return(-1);
}
void myMotion(int xint y)
{
float dxdy;
int ij;
if(moving)
{
y = wh -y;
j = pick_polygon(xy);
if(j<0)
{
printf(“not in a polygon\n“);
return;
}
dx=x-polygons[j].xc;
dy=y-polygons[j].yc;
for(i=0;i {
polygons[j].x[i]+=dx;
polygons[j].y[i]+=dy;
}
polygons[j].xc+=dx;
polygons[j].yc+=dy;
if(dx>0)
polygons[j].xmax+=dx;
else
polygons[j].xmin+=dx;
if(dy>0)
polygons[j].ymax+=dy;
else
polygons[j].ymin+=dy;
glutPostRedisplay
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7278 2013-11-13 19:59 test02.cpp
文件 47616 2013-11-17 17:40 实验模板.doc
文件 61440 2013-11-17 17:33 实验二(2).exe
----------- --------- ---------- ----- ----
116334 3
- 上一篇:中国软件文档国家标准
- 下一篇:小程序离职交接文档
相关资源
- OpenGL实现3DS文件中的模型自由旋转
- opengl画球,递归细分
- OpenGL教室
- 3DS文件导入OpenGL并动态显示源码
- OpenGL使用Window API绘制矢量字体非常简
- 计算机图形学四面体几何变换.doc
- 交互式计算机图形学-基于OpenGL的自顶
- 《实战OPENGL三维可视化系统开发与源
- Qt加OpenGL实现鼠标控制视角
- OpenGLSETest.zip
- QTopengl模块使用demo
- QT使用openglES模块做的立方体程序
- OpenGL坦克大战2D游戏文档包含所有模块
- opengl下的贪吃蛇
- 华南理工大学实验——OpenGL Shader导入
- OpenGL透视投影小程序源码
- OpenGL纹理贴图.jpg格式图片小程序源码
- QT5.7+OPENGL画正方体
- OpenGL实现多边形扫描转换的扫描线算
- OpenGL鼠标点选平移物体
- 基于opengl es 的显示gif的
- OpenGL编程指南(第八版)中文高清晰
- OpenGL精美房屋,落雪其上
- OpenGL光照,多种情况下的建立
- vlc opengl播放视频
- Opengl写的3d人物模型
- OPENGL学习 3D小雪人
- opengl动态云彩的模拟
- nvidia-opengl-rdp 英伟达显卡 rdp 远程桌面
- OpenGL模型视图矩阵演示
评论
共有 条评论