labwindows三维opengl编程代码

上传人:大米 文档编号:476472171 上传时间:2024-02-26 格式:DOC 页数:6 大小:61.50KB
返回 下载 相关 举报
labwindows三维opengl编程代码_第1页
第1页 / 共6页
labwindows三维opengl编程代码_第2页
第2页 / 共6页
labwindows三维opengl编程代码_第3页
第3页 / 共6页
labwindows三维opengl编程代码_第4页
第4页 / 共6页
labwindows三维opengl编程代码_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《labwindows三维opengl编程代码》由会员分享,可在线阅读,更多相关《labwindows三维opengl编程代码(6页珍藏版)》请在金锄头文库上搜索。

1、/ File Name: OpenGLwithCVI.c/ Date: 2001-8-20/ Content:在CVI下使用OpenGL绘制三维物体,并作运动。/ Notes:在项目文件中需要加入两个静态库: glu32.lib 和/ opengl32.lib ,它们位于目录下,/ 还需要添加一个文件 cviogl.fp ,它位于目录下。/ 头文件/#include #include #include #include #include #include #include cviogl.h/ 定义默认值/#define DFLT_VIEW_LATITUDE 45.0#define DFLT_L

2、IGHT_LATITUDE 45.0#define DFLT_VIEW_LONGITUDE 45.0#define DFLT_VIEWPOINT_X 0.0#define DFLT_VIEWPOINT_Y 0.0#define DFLT_VIEWPOINT_Z 0.0#define DFLT_VIEW_DISTANCE 10.0/ 全局变量/int mainPanel;int picCtrl;int quitBtn;int OpenglCtrl;int timerCtrl; unsigned long Time=0; GLUquadricObj *object;/ 偏转角度typedef st

3、ructdouble RotatX;double RotatY; angle;angle MyAngle;/ 函数原型/int CVICALLBACK Quit( int panelHandle, int controlID,int event, void *callbackData, int eventData1,int eventData2);int CVICALLBACK timerPlot (int panel, int control, int event, void *callbackData, int eventData1, int eventData2);int CVICALL

4、BACK OGLCallback(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);void InitOGLControl(void);void DrawImage(int fastFlag);void RenderImage(int fastFlag);/ 主程序入口点/int main (int argc, char *argv)if (InitCVIRTE (0, argv, 0) = 0) return -1; /* out of memory */ 创建面板ma

5、inPanel = NewPanel (0, OpenGL 演示, VAL_AUTO_CENTER, VAL_AUTO_CENTER, 500, 400);/ 添加图形控件picCtrl = NewCtrl (mainPanel, CTRL_PICTURE, , 8, 8); SetCtrlAttribute (mainPanel, picCtrl, ATTR_HEIGHT, 450); SetCtrlAttribute (mainPanel, picCtrl, ATTR_WIDTH, 384);/将图形控件转换为 Ope nGL控件,并添加处理函数OpenglCtrl = OGLConver

6、tCtrl (mainPanel, picCtrl); InstallCtrlCallback (mainPanel, OpenglCtrl, OGLCallback, 0);/ 初始化OpenGL控件InitOGLControl();OGLRefreshGraph (mainPanel, OpenglCtrl);/ 添加退出按钮,并安装其回调函数quitBtn = NewCtrl (mainPanel, CTRL_SQUARE_COMMAND_BUTTON, 退出, 466, 8); InstallCtrlCallback (mainPanel, quitBtn, Quit, 0);/ 添加

7、定时器控件,并安装其回调函数timerCtrl = NewCtrl (mainPanel, CTRL_TIMER, , 466, 8);SetCtrlAttribute (mainPanel, timerCtrl, ATTR_ENABLED, 1);SetCtrlAttribute (mainPanel, timerCtrl, ATTR_INTERVAL, 0.05);InstallCtrlCallback (mainPanel, timerCtrl, timerPlot, 0);/ 显示主面板DisplayPanel (mainPanel);/ 进入 UI 循环RunUserInterfac

8、e ();/ 退出的清理工作OGLDiscardCtrl (mainPanel, OpenglCtrl);DiscardPanel (mainPanel);return 0;/ Quit() :退出函数/int CVICALLBACK Quit( int panelHandle, int controlID,int event, void *callbackData, int eventData1,int eventData2)switch (event)case EVENT_COMMIT:QuitUserInterface (0);break;return 0;/InitOGLControl

9、():初始化 OpenGL控件/void InitOGLControl(void)/ 设置系统光照属性 OGLSetCtrlAttribute(mainPanel,OpenglCtrl,OGLATTR_LIGHTING_ENABLE, 1);OGLSetCtrlAttribute(mainPanel,OpenglCtrl,OGLATTR_LIGHT_SELECT, 1);OGLSetCtrlAttribute(mainPanel,OpenglCtrl,OGLATTR_LIGHT_ENABLE, 1);OGLSetCtrlAttribute(mainPanel,OpenglCtrl,OGLATT

10、R_LIGHT_DISTANCE, 2.0);OGLSetCtrlAttribute (mainPanel, OpenglCtrl,OGLATTR_LIGHT_LATITUDE, DFLT_LIGHT_LATITUDE);/ 设置视点位置(mainPanel,OpenglCtrl,OGLATTR_PROJECTION_TYPE,OGLSetCtrlAttributeOGLVAL_ORTHOGRAPHIC);OGLSetCtrlAttribute (mainPanel,OpenglCtrl,OGLATTR_ENABLE_PAN_ZOOM_ROTATE, 1);OGLSetCtrlAttribut

11、e(mainPanel,OpenglCtrl,OGLATTR_VIEW_DIRECTION,OGLVAL_USER_DEFINED);OGLSetCtrlAttribute(mainPanel,OpenglCtrl,OGLATTR_VIEW_LATITUDE,DFLT_VIEW_LATITUDE);OGLSetCtrlAttribute(mainPanel,OpenglCtrl,OGLATTR_VIEW_LONGITUDE,DFLT_VIEW_LONGITUDE);OGLSetCtrlAttribute(mainPanel,OpenglCtrl,OGLATTR_VIEW_CENTERX,DFL

12、T_VIEWPOINT_X);OGLSetCtrlAttribute (mainPanel,OpenglCtrl,OGLATTR_VIEW_CENTERY,DFLT_VIEWPOINT_Y); OGLSetCtrlAttribute(mainPanel,OpenglCtrl,OGLATTR_VIEW_CENTERZ,DFLT_VIEWPOINT_Z); OGLSetCtrlAttribute(mainPanel,OpenglCtrl,OGLATTR_VIEW_DISTANCE,DFLT_VIEW_DISTANCE);/ 屏蔽 cviogl.fp 的 3D 绘图属性OGLSetCtrlAttri

13、bute (mainPanel, OpenglCtrl, OGLATTR_PLOTTING_ENABLE, OGLVAL_FALSE);OGLSetCtrlAttribute (mainPanel, OpenglCtrl, OGLATTR_ENABLE_PROPERTY_POPUP, OGLVAL_FALSE);/ RenderImage():纹理设置/void RenderImage(int fastFlag)GLfloat specularLight0 =1.0f, 1.0f, 1.0f, 1.0f; glPushAttrib(GL_ALL_ATTRIB_BITS); glMatrixMo

14、de(GL_PROJECTION);glPushMatrix();glMatrixMode(GL_MODELVIEW);glPushMatrix();glEnable(GL_DEPTH_TEST);glShadeModel(GL_SMOOTH);glEnable(GL_COLOR_MATERIAL);glEnable(GL_BLEND);glEnable(GL_LINE_SMOOTH); glColorMaterial(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE); glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specularLight0); glMateriali(GL_FRONT_AND_BACK, GL_SHININESS, 128);DrawImage(fastFlag);glPopMatrix();glMatrixMode(GL_PROJECTION);glPopMatrix();glPopAttrib();glFlush();/ DrawImage():绘图/void DrawImage(int fastFlag)object = gluNewQuadric();glPushMatrix();glRotatef(MyAngle.RotatX,0.0,0.0,1.0); /

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号