在VC++6.0中实现对3D Max构造OpenGL模型的控制
如何在vc++6.0里面使用openGl
如何在vc++6.0里面使用openGl?你既可以建立Win32项目使用API,也可以建立MFC工程(一般不用MFC框架直接用API)我给你一个例子吧,建立Win32空项目,添加一个cpp文件,编译执行就行了(这是一个经典的opengl框架了)代码如下:#pragma comment(lib,"opengl32.lib")#pragma comment(lib,"glu32.lib")#pragma comment(lib,"glaux.lib")#include <windows.h>#include <gl/gl.h>#include <gl/glu.h>#include <gl/glaux.h>HDC hDC=NULL;HGLRC hRC=NULL;HWND hWnd=NULL;HINSTANCE hInstance;BOOL keys[256];BOOL active=TRUE;BOOL fullscreen=TRUE;GLfloat rtri;GLfloat rquad;LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);GLvoid ResizeGLScene(GLsizei width,GLsizei height){if(height==0)height=1;glViewport(0,0,width,height);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);glMatrixMode(GL_MODELVIEW);glLoadIdentity();}int InitGL(GLvoid){glShadeModel(GL_SMOOTH);glClearColor(0.0f,0.0f,0.0f,0.5f);glClearDepth(1.0f);glEnable(GL_DEPTH_TEST);glDepthFunc(GL_LEQUAL);glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST); return TRUE;}int DrawGLScene(GLvoid){glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glLoadIdentity();glTranslatef(-1.5f,0.0f,-6.0f);glRotatef(rtri,0.0f,1.0f,0.0f);glBegin(GL_TRIANGLES);glColor3f(1.0f,0.0f,0.0f);glVertex3f(0.0f,1.0f,0.0f);glColor3f(0.0f,1.0f,0.0f);glVertex3f(-1.0f,-1.0f,1.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f(1.0f,-1.0f,1.0f);glColor3f(1.0f,0.0f,0.0f);glVertex3f(0.0f,1.0f,0.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f(1.0f,-1.0f,1.0f);glColor3f(0.0f,1.0f,0.0f);glVertex3f(1.0f,-1.0f,-1.0f);glColor3f(1.0f,0.0f,0.0f);glVertex3f(0.0f,1.0f,0.0f);glColor3f(0.0f,1.0f,0.0f);glVertex3f(1.0f,-1.0f,-1.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f(-1.0f,-1.0f,-1.0f);glColor3f(1.0f,0.0f,0.0f);glVertex3f(0.0f,1.0f,0.0f);glVertex3f(-1.0f,-1.0f,-1.0f); glColor3f(0.0f,1.0f,0.0f); glVertex3f(-1.0f,-1.0f,1.0f); glEnd();glLoadIdentity(); glTranslatef(1.5f,0.0f,-7.0f); glRotatef(rquad,1.0f,1.0f,1.0f); glBegin(GL_QUADS); glColor3f(0.0f,1.0f,0.0f); glVertex3f(1.0f,1.0f,-1.0f); glVertex3f(-1.0f,1.0f,-1.0f); glVertex3f(-1.0f,1.0f,1.0f); glVertex3f(1.0f,1.0f,1.0f);glColor3f(1.0f,0.5f,0.0f); glVertex3f(1.0f,-1.0f,1.0f); glVertex3f(-1.0f,-1.0f,1.0f); glVertex3f(-1.0f,-1.0f,-1.0f); glVertex3f(1.0f,-1.0f,-1.0f);glColor3f(1.0f,0.0f,0.0f); glVertex3f(1.0f,1.0f,1.0f); glVertex3f(-1.0f,1.0f,1.0f); glVertex3f(-1.0f,-1.0f,1.0f); glVertex3f(1.0f,-1.0f,1.0f);glColor3f(1.0f,1.0f,0.0f);//glVertex3f(1.0f,-1.0f,-1.0f); //glVertex3f(-1.0f,-1.0f,-1.0f); //glVertex3f(-1.0f,1.0f,-1.0f); //glVertex3f(1.0f,1.0f,-1.0f); glVertex3f(-1.0f,1.0f,-1.0f); glVertex3f(1.0f,1.0f,-1.0f); glVertex3f(1.0f,-1.0f,-1.0f); glVertex3f(-1.0f,-1.0f,-1.0f);glColor3f(0.0f,0.0f,1.0f); glVertex3f(-1.0f,1.0f,1.0f); glVertex3f(-1.0f,1.0f,-1.0f); glVertex3f(-1.0f,-1.0f,-1.0f); glVertex3f(-1.0f,-1.0f,1.0f);glVertex3f(1.0f,1.0f,-1.0f);glVertex3f(1.0f,1.0f,1.0f);glVertex3f(1.0f,-1.0f,1.0f);glVertex3f(1.0f,-1.0f,-1.0f);glEnd();rtri+=0.2f;rquad-=0.15f;return TRUE;}GLvoid KillGLWindow(GLvoid){if(fullscreen){ChangeDisplaySettings(NULL,0);ShowCursor(TRUE);}if(hRC){if(!wglMakeCurrent(NULL,NULL))MessageBox(NULL,"释放DC或RC失败","关闭错误",MB_OK|MB_ICONINFORMA TION);if(!wglDeleteContext(hRC))MessageBox(NULL,"释放RC失败","关闭错误",MB_OK|MB_ICONINFORMATION); hRC=NULL;}if(hDC && !ReleaseDC(hWnd,hDC)){MessageBox(NULL,"释放DC失败","关闭错误",MB_OK|MB_ICONINFORMATION); hDC=NULL;}if(hWnd && !DestroyWindow(hWnd)){MessageBox(NULL,"释放窗口句柄失败","关闭错误",MB_OK|MB_ICONINFORMA TION); hWnd=NULL;}if(!UnregisterClass("OpenG",hInstance)){MessageBox(NULL,"不能注销窗口类","关闭错误",MB_OK|MB_ICONINFORMATION); hInstance=NULL;}}BOOL CreateGLWindow(char* title,int width,int height,int bits,BOOL fullscreenflag){GLuint PixelFormat;WNDCLASS wc;DWORD dwExStyle;DWORD dwStyle;RECT WindowRect;WindowRect.left=(long)0;WindowRect.right=(long)width;WindowRect.top=(long)0;WindowRect.bottom=(long)height;fullscreen=fullscreenflag;hInstance=GetModuleHandle(NULL);wc.style=CS_HREDRAW|CS_VREDRAW|CS_OWNDC;wc.lpfnWndProc=(WNDPROC)WndProc;wc.cbClsExtra=0;wc.cbWndExtra=0;wc.hInstance=hInstance;wc.hIcon=LoadIcon(NULL,IDI_WINLOGO);wc.hCursor=LoadCursor(NULL,IDC_ARROW);wc.hbrBackground=NULL;wc.lpszMenuName=NULL;wc.lpszClassName="OpenG";if(!RegisterClass(&wc)){MessageBox(NULL,"注册窗口失败","错误",MB_OK|MB_ICONINFORMATION); return FALSE;}if(fullscreen){DEVMODE dmScreenSettings;memset(&dmScreenSettings,0,sizeof(dmScreenSettings));dmScreenSettings.dmSize=sizeof(dmScreenSettings);dmScreenSettings.dmPelsWidth=width;dmScreenSettings.dmPelsHeight=height;dmScreenSettings.dmBitsPerPel=bits;dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;if(ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCE SSFUL){if(MessageBox(NULL,"全屏模式设置失败!\n使用窗口模式?","OpenGL 3D游戏编程",MB_YESNO|MB_ICONEXCLAMA TION)==IDYES){fullscreen=FALSE;}else{MessageBox(NULL,"程序将被关闭","错误",MB_OK|MB_ICONINFORMA TION);return FALSE;}}}if(fullscreen){dwExStyle=WS_EX_APPWINDOW;dwStyle=WS_POPUP;ShowCursor(FALSE);}else{dwExStyle=WS_EX_APPWINDOW|WS_EX_WINDOWEDGE;dwStyle=WS_OVERLAPPEDWINDOW;}AdjustWindowRectEx(&WindowRect,dwStyle,FALSE,dwExStyle);if(!(hWnd=CreateWindowEx(dwExStyle,"OpenG",title,dwStyle|WS_CLIPSIBLINGS|WS_CLIPCHILDREN,0,0,WindowRect.right-WindowRect.left,WindowRect.bottom-WindowRect.top,NULL,NULL,hInstance,NULL))){KillGLWindow();MessageBox(NULL,"窗口创建失败","错误",MB_OK|MB_ICONINFORMATION);return FALSE;}static PIXELFORMA TDESCRIPTOR pfd={sizeof(PIXELFORMA TDESCRIPTOR),1,PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER,PFD_TYPE_RGBA,bits,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,PFD_MAIN_PLANE,0,0,0,0};if(!(hDC=GetDC(hWnd))){KillGLWindow();MessageBox(NULL,"不能创建一个窗口设备描述表","错误",MB_OK|MB_ICONINFORMA TION);return FALSE;}if(!(PixelFormat=ChoosePixelFormat(hDC,&pfd))){KillGLWindow();MessageBox(NULL,"不能创建一个匹配的像素格式","错误",MB_OK|MB_ICONINFORMA TION);return FALSE;}if(!SetPixelFormat(hDC,PixelFormat,&pfd)){KillGLWindow();MessageBox(NULL,"不能设置像素格式","错误",MB_OK|MB_ICONINFORMATION); return FALSE;}if(!(hRC=wglCreateContext(hDC))){KillGLWindow();MessageBox(NULL,"不能创建OpenGL渲染描述表","错误",MB_OK|MB_ICONINFORMA TION);return FALSE;}if(!wglMakeCurrent(hDC,hRC)){KillGLWindow();MessageBox(NULL,"不能激活当前的OpenGL渲染描述表","错误",MB_OK|MB_ICONINFORMA TION);return FALSE;}ShowWindow(hWnd,SW_SHOW);SetForegroundWindow(hWnd);SetFocus(hWnd);ResizeGLScene(width,height);if(!InitGL()){KillGLWindow();MessageBox(NULL,"初始化失败","错误",MB_OK|MB_ICONINFORMA TION);return FALSE;}return TRUE;}LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){switch(uMsg){case WM_ACTIV ATE:{if(!HIWORD(wParam))active=TRUE;elseactive=FALSE;return 0;}case WM_SYSCOMMAND:{switch(wParam){case SC_SCREENSA VE:case SC_MONITORPOWER:return 0;}break;}case WM_CLOSE:{PostQuitMessage(0);return 0;}case WM_KEYDOWN:{keys[wParam]=TRUE;return 0;}case WM_KEYUP:{keys[wParam]=FALSE;return 0;}case WM_SIZE:{ResizeGLScene(LOWORD(lParam),HIWORD(lParam));return 0;}}return DefWindowProc(hWnd,uMsg,wParam,lParam);}int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){MSG msg;BOOL done=FALSE;if(MessageBox(NULL,"你想在全屏模式下运行吗?","设置全屏模式",MB_YESNO|MB_ICONQUESTION)==IDNO){fullscreen=FALSE;}if(!CreateGLWindow("Win32 SDK风格OpenGL程序框架",640,480,16,fullscreen)) return 0;while(!done){if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)){if(msg.message==WM_QUIT)done=TRUE;else{TranslateMessage(&msg);DispatchMessage(&msg);}}else{if(active){if(keys[VK_ESCAPE])done=TRUE;else{DrawGLScene();SwapBuffers(hDC);}}if(keys[VK_F1]){keys[VK_F1]=FALSE;KillGLWindow();fullscreen=!fullscreen;if(!CreateGLWindow("Win32 SDK风格OpenGL程序框架",640,480,16,fullscreen)) return 0;}}}KillGLWindow();return msg.wParam;}。
计算机科技与应用专业毕业论文--基于Opengl的3D游戏设计
摘要随着时代进步,从简单的色块堆砌而成的画面到数百万多边形组成的精细人物,游戏正展示给我们越来越真实且广阔的世界。
对于近几年游戏的发展来说,老式2D游戏的画面、游戏性、互动性已经无法满足各类玩家的需要,而3D游戏无论是在游戏画面的真实程度、操作的流畅程度、以及故事背景方面的优越性都非常突出。
在这种发展趋势下,2D游戏所占领的市场将会变得微乎其微,3D游戏的开发将会成为整个游戏制作领域的一种趋势。
针对于3D游戏开发,OpenGL作为一个3D的应用程序编程接口(API)来说,是非常合适的。
OpengGL作为与硬件无关的软件接口,只要操作系统使用了OpengGL适配器就可以打到相同的效果。
它又是一个开放图形库,在跨平台领域上非常便利。
并且它具有优良的移植性,是广大3D游戏开发者的首选。
本论文为利用OpengGL进行3D射击游戏的设计与开发,采用碰撞检测、粒子系统、MD2模型绘制、3D声效等技术,最终实现一个射击游戏。
关键词:游戏, 基于OpengGL,三维, 射击游戏Abstract: Along with the progress of the times,fine characters from simple color swatch built the picture to the millions of polygons, the game is to show us more and more real and the wide world.For the development of the game in recent years, the old 2D games' screen ,games andinteractive have been unable to meet all kinds of game player needs, while 3D regardless of the game on the game screen reality, smooth operation, and the background of the story of the superiority is very prominent.In this trend, 2D game occupied market will become very little, the development of 3D games will become the game made a trend in the field.For 3D game development, OpenGL as the application programming interface of a 3D (API), is a very suitable. OpengGL as the interface of the software and hardware independence, as long as the operating system uses the OpengGL adapter can reach the same effect. It is also an open graphics library, cross-platform in areas very convenient. And it has good transplantation, is the 3D game developer's choice.In this paper, the design and development of 3D shooting game is to use OpengGL, the collision detection, particle system, MD2 model, 3D sound rendering technology, the ultimate realization of a shooting game.Keywords game, OpengGL, 3D, shooting game目录1 引言 (1)1.1 课题的背景及意义 (1)1.2 毕业设计的任务 (1)1.3 国内外现状的研究 (2)1.4 开发技术与开发平台 (3)1.4.1 开发技术 (3)1.4.2 开发平台 (3)2 OpenGL简介与3D图形学相关 (5)2.1 OpenGL简介 (5)2.1.1 OpenGl特点 (5)2.1.2 OpenGL功能 (6)2.1.3 OpenGL渲染 (7)2.2 3D图形学相关 (8)2.2.1 向量与矩阵 (8)2.2.2 变换 (8)2.2.3 投影 (8)2.2.4 3D裁剪 (9)3 游戏设计 (11)3.1 游戏的组成 (11)3.2 游戏的结构 (11)3.3 本游戏设计 (12)4 关键技术 (15)4.1 摄像机漫游 (15)4.2 碰撞检测 (16)4.3 粒子爆炸 (19)4.4 云雾效果 (20)4.5 简易AI (21)4.6 3D模型 (23)4.7 3D音效 (26)4.8 游戏场景随机地形 (28)5 运行游戏 (30)结论 (36)参考文献 (37)致谢 .................................................................................................................................. 错误!未定义书签。
在VC中使用3DMAXSDK和OpenGL实现建模的方法_王彪
黑龙江商学院学报第16卷第3期 JOURNAL OF HEILONGJIANG INSTITUTE OF COMMERCE Vol.16 No.3 2000年9月 (NATURAL SCIENCES EDITION) Sep. 2000文章编号2000哈尔滨工业大学工程制图教研室150001探讨了在VC++中使用3DMAX SDK及OpenGL函数的方法加上OpenGL的光照和材质处理关键词3DMAX SDK求差 中图分类号A 1 前 言 目前加之Microsoft已把OpenGL集成到Windows98中OpenGL是一个工业标准的三维计算机图形软件接口它能够生成真彩的三维场景而且在其辅助函数库中还提供了绘制三维物体的子程序void auxSolidSphere (GLdouble radius);void auxSolidBox (GLdouble width, GLdoble height, GLdouble depth);但对于初学者来说要想利用这两个函数来求球与方体的差就比较困难了如果在Visual C++中使用3D MAX的基本几何形体则会使编程人员在极短的时间内达到编程目的及在应用程序执行时可能出现的几个问题将3D MAX SDK装入到微机中2000-07-19作者简介1962-男研究方向三维造型第3期王彪等点取Options进入Options对话框DirectoriesÔÚDirectories列表框中加入\3D MAX SDK/INCLUDE如图1所示a)将动态连接库加入到路经为Windows/system下b)将动态连接库加入到某文件的Debug中2.3 利用MFC提供的应用框架建立一个Windows用户界面要用MFC AppWizard来生成Windows应用程序的基本源文件消息处理和数据处理或者定义控件的属性最后把应用程序所要求的功能添加到类中My3d My3d程序的主要类及主要源文件如下CMy3dDoc视图类它指定用户以什么方式见到文档数据主边框窗口类用于管理应用程序窗口菜单栏状态栏应用程序类用于控制应用程序的所有对象并完成应用程序的初始化工作和46 黑龙江商学院学报2000年最后的清除工作是标准的头文件StdAfx.h和StdAfx.cppRes\My3d.icoÓ¦ÓóÌÐòͼ±ê°üº¬ÔÚ×ÊÔ´ÎļþMy3d.rc中应用程序必须包含相应的头文件和函数库文件#include“max.h”#include<GL/gl.h>#include<GL/glu.h>#include<GL/glaux.h>2.5 为了防问OpenGL和3D MAX SDK函数glu32.lib, glaux.lib, Geom.lib[3], Mesh.lib[3], Patch.lib[3], Core.lib[3]等文件加入到工程中去这些信息可帮助程序利用连接器访问动态连接库函数和表示要用到的3D MAX SDK和OpenGL库函数打开Project\Settings如图2所示第3期王彪等差的布尔运算被封装在函数CalcBoolop (mesh &mesh, Mesh &mesh1, Mesh &mesh2, int op)[32]中Mesh &mesh1, Mesh &mesh2为进行布尔运算前的两个实体的数据结构并MESHBOOL UNION实体间的交运算MESHBOOL DIFFERENCE½á¹¹²»¶ÔʹÓõıäÁ¿Ã»ÓнøÐж¨ÒåÒÔ¼°À¨ºÅ´îÅä²»¶ÔµÈµÈ´íÎó4.2 语句错误没有而Linking出错说明可能缺少函数库4.3 如果Compiling和Linking均通过与系统相连的设备不能正常运转则可能需要加入动态连接库如果问题还不能解决则可能是你所装入的3D MAX SDK中的函数所需要的动态连接库与你所添加的动态连接库不相匹配查明相应的3D MAX版本下转51页第3期徐耀群等詹叔浩. 求解Packing问题的拟物方法[J]. 应用数学学报许如初. 支持求解圆形Packing问题的两个拟人策略[J]. 中国科学29蒋慰孙. 混沌优化方法及应用[J]. 控制理论及应用14. [5] 卢侃等. 混沌动力学[M]. 上海1990.Find Solution of Circle Packing Problem by Using ChaosOptimrzlation MethodXu Yao-qun1, Wang Hong-bin2, Cao Xiao-hua3(1.Basic Course Department, Heilongjiang Commerce Institute, Harbin, 150076, China; 2.Department of Mathmatic, Harbin Institute of Technology, Harbin, 150001, China; 3.Department of Adlilt Education, Heilongjiang Commerce Institute, Harbin, 150076, china)Abstract This paper has found solation of circle packing problem by using chaos optimization method, and given a new idea for solving this problem.Key words Packing problem; NP-complete problem; chaos algorithm(上接47页)加入该版本的动态连接库作者在进行课题研究时发现3D MAX 3.0中的SDK函数要与3D MAX 1.0或3D MAX 1.1的动态连接库要相搭配使用[1] 贾志刚.精通OpenGL[M]. 北京:电子工业出版社,1998.3[2] 木林森,高峰霞,奚红宇.Visual C++5.0使用与开发[M] .北京1997[3] Microsoft Corporation. 3D Studio Max Software Development Kit. Yost Group, Inc., 1996A Modeling Method of Using 3DMAX SDK and OpenGL in VC++Wang Biao Gong Na(Harbin Institute of Technology, Engineering Drawings Dep.Harbin, 150001, China)Abstract: This paper is concerned with using the functions of 3DMAX SDK and OpenGL in Visual C++. It is conveniently to settle the difference of two solids, by utilizing the primitive geometric models of 3DMAX and the lights and materials of OpenGL.Key words: VC++; 3DMAX SDK; OpenGL; difference。
基于VC++6.0和OpenGL的3DS文件的读取与控制方法
O eG p n L作 为 一 个 性 能 优 越 的 图 形 应 用 程 序 设 计 界 面 fP1 A I, 其 编 程 灵 活 、 便 . 广 泛 的移 植 性 和 很 强 的 交 互 式 兰 维 网 形 处 方 有 理 能 力 , 认 为 是 高性 能 图形 和交 互 式 视 景 处 理 的 标 准 。O e G 被 pn L 除 了 能 够 对 三 维 模 型 进 行 绘 制 外 . 可 以进 行 三 维 交 互 、 还 动作 模 拟 等 。具 体 的 功能 主要 有 : 型 绘 制 : 型观 察 ; 色模 式 的指 定 ; 模 模 颜
摘要 : 本文 介 绍 了在 Vi a C++下 如何 使 用 Op l s l u e1 GL读 取 和 控 制 3 a Ds x生 成 的 三 维 模 型 的 方 法 。 M 关 键 词 : 拟 现 实 ; e GL:DS; sa 虚 Op n 3 Vi l u C++
中图分 类号 : P Байду номын сангаас T 37
维普资讯
。
人 工 智 能 及 识 删 技 术 。
本 目 任 辑: 桂 栏 责编 李瑾
基 于 V + 60和 Op n C +. e GL的 3 S文件 的读取与控 制方法 D
丁 斌
( 东北 大学 秦 皇 岛 分校 管理 系 , 北 秦 皇 岛 0 60 河 6 0 4)
文献标识码 : A
文章编 号:0 9 3 4 (0 71 — 0 3 — 2 1 0 — 0 42 0 )5 3 8 2 0
D I G I N Bi 1
3 c me tRe d n nr I to s B s n VC + + 6 0a d Op n DS Do u n a er d Co t a o Me h d a edO . n e GL
VC6.0中OpenGL开发环境配置
VC6.0中OpenGL开发环境配置All materials are obtained from webpage and this document is created by GangMei2012-11-18第一步:选择一个编译环境现在Windows系统的主流编译环境有Visual Studio,Broland C++ Builder,Dev-C++等,它们都是支持OpenGL的。
但这里我们选择VC++ 6.0作为学习OpenGL的环境。
第二步:安装GLUT工具包GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。
Windows环境下的GLUT下载地址:(大小约为150k)/resources/libraries/glut/glutdlls37beta.zip无法从以上地址下载的话请使用下面的连接:/upfile/200607311626279.zipWindows环境下安装GLUT的步骤:1、将下载的压缩包解开,将得到5个文件2、以我的安装目录为例:(1)“d:\Program Files\Microsoft Visual Studio\VC98\include\GL文件夹”。
把解压得到的glut.h放到这个GL文件夹里。
没有GL文件夹可以自己建一个,一般都有的。
(2)“d:\Program Files\Microsoft Visual Studio\VC98\lib文件夹”)。
把解压得到的glut.li b和glut32.lib放到静态函数库所在文件夹,即lib文件夹。
(3)把解压得到的glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。
(典型的位置为:C:\Windows\System32)这是非常重要的动态链接库设置!第三步,创建工程,其步骤如下:(1)创建一个Win32 Console Application。
(以我创建的为例,工程名为simpleGL)(2)链接OpenGL libraries:在Visual C++中先单击Project,再单击Settings,再找到Li nk单击,最后在Object/library modules 的最前面加上opengl32.lib Glut32.lib Glaux.lib glu32.lib 。
VC6.0使用教程4.0汇总
24
方法/步骤
25
方法/步骤
26
方法/步骤
程序的错误修改 如果编译或者连接过程中出现错误,底部信息提示
窗口会提示错误所在行以及错误的类型,双击即可定 位到相应的代码处进行修改,尔后重新编译连接运行 ,重复此过程直到程序功能达到要求没有错误。
4
基本概念
代码文件: 用于存储程序的文件,C++ 代码文件的扩展名为
.cpp ,C 语言代码文件的扩展名为 .c ,存储函数或 者变量声明的头文件扩展名一般为 .h 。
5
基本概念
调试(DEBUG): 输入代码、编译、连接、运行并不断修正错误的整
个过程。
6
基本概念
发布(RELEASE): 指程序完成代码的编写和功能调试,最终编译和分
36
注意事项
2)main already defined in ???.obj 一个项目对应一个可执行文件,终端程序中只能有
一个 main 函数,如果你添加了两个都带有 main 函 数的 cpp 文件到同一个项目,则会出现此错误。
解决办法:在 FileView 视图下找到 source file 下的 cpp 文件按 del 将其从项目中剔除,或者临时 注释掉其中一个 cpp 中的代码。
37
注意事项
3)unknown character 0xa3 cpp 代码中除注释和常量外只能出现半角字符,所
以如果代码是从其他地方粘贴过来的,则常常会出现 此类错误,并且很多非法字符是不可见的。
解决办法:尽量手工录入代码,或者将空白部分都 删掉然后重新格式化代码。
VC环境下OpenGL多视图窗口的实现
别的线程将无法同时绘图。一个线程一次只能拥有一个现行 RC,但是可以拥有多个 RC;一个 RC 也可以由多个线程共享,但是它每次只能在一个线程中是现行 RC;一个 RC 可以对应多个 DC,但在绘图时,只能同时与一个 DC 挂钩。
本文实现多视图采用多个 RC 和多个 DC 的模式,其中每个视图对应一个 DC,每个 DC 对应 一个 RC,故 4 个视图就有 4 个 DC,4 个 RC,当需要在某个视图上绘图时,就将该 RC 切换为当 前 RC。
第2页 共5页
至此,一个多窗口的程序就生成了。下面我们讨论如何实现在各个窗口进行 OpenGL 图形渲 染。 3.视图类设置
同单个窗口显示 OpenGL 图形一样,为了能够在各个视图上显示 OpenGL 图形,需要对各个 视图类都进行相应的设置,为了方便初学者,这里对操作步骤进行详细介绍,读者可以对照参考 本文提供的源代码:
视图类设置同单个窗口显示opengl图形一样为了能够在各个视图上显示opengl图形需要对各个视图类都进行相应的设置为了方便初学者这里对操作步骤进行详细介绍读者可以对照参考本文提供的源代码
软件报/2006 年/10 月/23 日/第 019 版 开发编程 应用实例
VC 环境下 OpenGL 多视图窗口的实现
编程语言:Visual C要:本文在 Visual C++环境下,以 4 个 OpenGL 窗口为例,介绍多个 OpenGL 窗口的 实现,在此框架的基础上,可以实现类似 3DSMax 多视角 3D 软件编程。
关键字:OpenGL;三维;多视角;多视图; OpenGL 是在 SGI 等多家世界闻名的计算机公司的倡导下,以 SGI 的 GL 三维图形库为基 础制定的一个通用共享的开放式三维图形标准。很多著名的产品包括动画制作软件 Soft Image 和 3DStudio MAX 等都是在它的基础上实现的。 从本质上说,OpenGL 是一个完全可移植并且速度很快的 3D 图形和建模库。在 Windows 平台上,OpenGL 可以方便地与 Visual C++(在下文中简称 VC)结合,创建精致漂亮的 3D 图形。通常在 VC 环境下编写 OpenGL 程序都是单视图的模式,本文介绍如何把单个视图拆分为 多个,如何在各个视图上进行切换绘图。 1.OpenGL 绘图 1.1.OpenGL 绘图简介 具有 Windows 编程经验的人都知道,在 Windows 下用 GDI 绘图必须通过设备上下文 (DeviceContext 简称 DC)调用相应的绘图函数;用 OpenGL 绘图也是类似,OpenGL 函数也通 过“渲染上下文”(RenderingContext 简称 RC)完成三维图形的绘制。正如设备上下文 DC 要存 储 GDI 的绘制环境信息如笔、刷和字体等,渲染上下文 RC 也必须存储 OpenGL 所需的渲染信息 如像素格式等。DC 调用每个 GDI 函数都需要一个 DC 句柄,而 RC 不同,所有的 OpenGL 函数 都是在当前 RC(当前 RC 概念见 1.2 节)下进行的,故不需要传入 RC 句柄。 Windows 系统支持 OpenGL 渲染,Win32 库提供了用于初始化像素格式、控制渲染和使用 OpenGL 扩展的函数(wgl 打头的函数)。下面对几个常用的 wgl 函数的功能进行简单介绍。 (1)HGLRC wglCreateContext(HDChdc) 该函数用来创建一个 OpenGL 可用的渲染上下文 RC。 (2)BOOL wglDeleteContext(HGLRChglrc) 该函数删除一个 RC。 (3)HGLRC wglGetCurrentContext(void) 该函数返回线程的现行 RC,如果线程无现行 RC 则返回 NULL。 (4)HDC wglGetCurrentDC(void) 该函数返回与线程现行 RC 关联的 DC,如果线程无现行 RC 则返回 NULL。 (5)BOOL wglMakeCurrent(HDC hdc,HGLRC hglrc) 该函数把 hdc 和 hglrc 关联起来,并使 hglrc 成为调用线程的当前 RC。 1.2.OpenGL 多视图渲染的原理 上文提到,用 OpenGL 绘图首先必须创建一个 RC,在创建 RC 时与一个 DC 建立联系(RC 也只能通过 DC 来创建),然后再将其设置为当前 RC,这样,OpenGL 的函数就可以通过 RC 对 应的 DC 画到相应的显示设备上。 一个 RC 是否是当前 RC,这是针对调用线程而言的,一个线程在拥有现行 RC 进行绘图时,
实验一vc6.0opengl绘图环境及简单图形的输出
任课教师:马文娟《3D图形学》(2013-2014学年第1学期)实验报告学号:姓名:班级:实验一VC++6.0+OpenGL绘图环境及简单图形的输出一、实验目的1、熟练使用实验主要开发平台VC++6.0;2、进一步熟悉OpenGL的主要功能;3、掌握OpenGL的绘图流程和原理;4、掌握OpenGL的基本数据类型、核心函数的使用。
二、实验内容创建一个OpenGL工程,利用OpenGL库函数进行简单图形设计与绘制。
三、实验原理1、基本语法(C版本下的OpenGL语法)OpenGL基本函数均使用gl作为函数名的前缀,如glClearColor();实用函数则使用glu作为函数名的前缀,如gluSphere()。
OpenGL基本常量的名字以GL_开头,如GL_LINE_LOOP;实用常量的名字以GLU_开头,如GLU_FILL。
一些函数如glColor*()(定义颜色值),函数名后可以接不同的后缀以支持不同的数据类型和格式,如glColor3b()、glColor3d()、glColor3f()和glColor3bv ()等,这几个函数在功能上是相似的,只是适用于不同的数据类型和格式,其中3表示该函数带有三个参数,b、d、f分别表示参数的类型是字节型、双精度浮点型和单精度浮点型,v则表示这些参数是以向量形式出现的。
OpenGL定义了一些特殊标识符,如GLfloat、GLvoid,它们其实就是C中的float 和void。
2、程序的基本结构OpenGL程序的基本结构可分为三个部分:1)第一部分是初始化,主要是设置一些OpenGL的状态开关,如颜色模式(RGBA 或ALPHA)的选择,是否作光照处理(若有的话,还需设置光源的特性),深度检验、裁剪等。
这些状态一般都用函数glEnable(…)、glDisable(…)来设置,“…”表示特定的状态。
2)第二部分设置观察坐标系下的取景模式和取景框位置大小,主要利用了三个函数:函数void glViewport(left, top, right, bottom) 设置在屏幕上的窗口大小,四个参数描述屏幕窗口四个角上的坐标(以像素表示);函数void glOrtho(left, right, bottom, top, near, far) 设置投影方式为正交投影(平行投影),其取景体积是一个各面均为矩形的六面体;函数void gluPerspective(fovy, aspect, zNear, zFar) 设置投影方式为透视投影,其取景体积是一个截头锥体。
OpenGL在VC_6_0开发环境下的编程实现
山西电子技术2011年第1期软件技术收稿日期:2010-12-03作者简介:王正强(1986-),男,青海互助县人,硕士研究生,专业是信号与信息处理。
文章编号:1674-4578(2011)01-0066-01OpenGL 在VC++6.0开发环境下的编程实现王正强(中北大学信息与通信工程学院,山西太原030051)摘 要:近年来,由于三维技术的飞速发展和广泛应用,许多原来采用V is ua l C ++作为基础语言创建应用程序的领域,都有了虚拟现实、科学计算可视化等三维仿真处理的应用要求。
基于此介绍了O pen GL 的工作方式、VC ++下的Open GL 的程序框架、O pen GL 绘制过程以及双缓存技术。
最后给出工程上某个时刻的效果图。
关键词:VC++;O penGL ;三维技术中图分类号:TP311.5 文献标识码:A0 引言O penGL 是一个优秀的专业化的3D AP I 。
它最早是SG I 为图形工作站开发的。
随着Open GL 成为高性能图形与交互式视景处理的工业标准,目前几乎所有的3D 图形显示卡都已经支持OpenGL 。
O pen GL 的应用范围已经从游戏开发、三维设计等逐步扩展到3D 图形、图形处理、广告、动画、虚拟实现、科学计算可视化、仿真等多种领域多个层面。
可以说OpenGL 在三维领域的霸主地位是毋庸置疑的。
1 OpenGL 工作方式O penGL 指令模型是C /S(C li ent/Server ,客户、服务器)模型,通常用户程序(客户)发出命令提交给内核程序(服务器),内核程序再对各种指令进行解释,并初步处理,之后交给操作系统服务而转交给硬件[1]。
上述过程可以在同一台计算机上完成,也可以在网络环境中,由不同的计算机合作完成,OpenGL 通过上述合作实现网络透明。
简单的工作流程如图1所示。
图1 Op enGL 工作流程O penGL 库函数被封装在动态链接库O peng l 32.dll 中,应用程序发出O pen GL 命令后,O pen GL 函数调用被动态链接库Openg l 32.dll 处理。
OpenGL中3DMAX模型的应用(转)
OpenGL中3DMAX模型的应用(转)OpenGL中3DMAX模型的应用摘要:阐述如何在OpenGL三维编程中实现3DMAX数据模型的程序控制,成果可用于飞机飞行的运动模拟和飞行实时监控等领域中。
关键词:OpenGL、3DMAX、ASE文件、投影和变换。
1、前言OpenGL是一个硬件和图形软件接口,由于它在三维真实感图形制作中性能优秀,诸如Microsoft、SGI、IBM、DEC、SUN等计算机主导公司都采用了OpenGL标准,OpenGL已经成为事实上的高性能和交互式视景标准。
Microsoft 公司在Window95/NT操作系统中支持OpenGL前,只有在昂贵的图形工作站上才能运行OpenGL程序,随着支持OpenGL图形加速卡的出现和PC机性能的提高,OpenGL 在PC机上得到广泛的应用。
OpenGL中很容易实现模型的各种变换、着色、光照、纹理、交互操作和动画,但是它只能提供基本几何元素的造型函数,使得复杂模型的建模相对困难。
3DMAX是Kinetix公司的三维图形建模和动画软件,能方便建立各种复杂物体模型,但是很难进行程序控制。
因此,我们自然想到在3DMAX中建立好复杂模型后,在OpenGL中实现对其方便控制和变换。
2、OpenGL的基本操作1)物体的绘制:通过点、线、多边形实现。
2)变换:投影变换、几何变换、裁剪变换、视口变换。
3)着色:OpenGL提供RGBA模式和颜色索引模式,提供224种颜色。
4)纹理映射:在具体模型表面加上现实世界中物体的纹理,可使三维模型更生动。
5)交互操作和动画:OpenGL辅助函数库提供了消息响应函数,可以较方便的实现交互程序控制。
6)其它:光照、反走样、混合、雾化等功能。
3、3DMAX ASE模型描述及OpenGL控制3.1 用C语言数据结构描述3DMAX模型在3DMAX中建立好模型后,仅以三角形网格方式存为ASE文件(ASCII文件),在程序中我们需建立对应的模型数据结构,本文以C 语言数据结构为例。
在vc++6.0中配置OpenGL环境
OpenGL入门学习——写给想用计算机画图的朋友OpenGL作为当前主流的图形API之一,它在一些场合具有比DirectX更优越的特性。
1、与C语言紧密结合。
OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的。
如果你曾经接触过TC的graphics.h,你会发现,使用OpenGL作图甚至比TC更加简单。
2、强大的可移植性。
微软的Direct3D虽然也是十分优秀的图形API,但它只用于Windows系统。
而OpenGL不仅用于Windows,还可以用于Unix/Linux等其它系统,它甚至在大型计算机、各种专业计算机(如:医疗用显示设备)上都有应用。
并且,OpenGL 的基本命令都做到了硬件无关,甚至是平台无关。
3、高性能的图形渲染。
OpenGL是一个工业标准,它的技术紧跟时代,现今各个显卡厂家无一不对OpenGL提供强力支持,激烈的竞争中使得OpenGL性能一直领先。
OpenGL官方网站(英文)下面将对Windows下的OpenGL编程进行简单介绍。
学习OpenGL前的准备工作第一步,选择一个编译环境现在Windows系统的主流编译环境有Visual Studio,Broland C++ Builder,Dev-C++等,它们都是支持OpenGL的。
这里我们选择VC++6.0作为学习OpenGL的环境。
第二步,安装GLUT工具包GLUT下载地址:(大小约为150k)/resources/libraries/glut/glut_downloads.php /glutdlls37beta.zipWindows环境下安装GLUT的步骤:1、将下载的压缩包解开,将得到5个文件(glut.h glut.lib glut32.lib glut.dll glut32.dll)2、把解压得到的glut.h复制到VC的“include\gl”文件夹下。
3、把解压得到的glut.lib和glut32.lib复制到静态函数库所在文件夹“VC\lib”文件夹。
3DS+MAX模型在OPENGL中的读取与重现
[1] [2] [3] 宋阳 . 可编程逻辑控制器及其在工程中的应用 [ M ] . 北京: 北 京希望电脑公司, 1996. 朱麟章, 蒙建波 . 检测理论及其应用 [ M ] . 北京: 机械工业出 版社, 1997. 杨伦标, 高英仪 . 模糊数学原理及应用 [ M ] . 广州: 华南理工 大学出版社, 1998. ▊
Named object "Spot01" Direct light Position X 65. 1007 Y - 0. 0000 Z 89. 2617 Z - 8. 7248
Spotlight to X - 48. 9933
Y 0. 0000
Hotspot size 2463. 7183 degrees Falloff size 2578. 3101 degrees Green = 1. 0000 Blue = 1. 0000
收稿日期: 2002 - 03 - 27
但 OpenGL 并没有提供三维模型的高级命令, 它也是通过基本的几何图元—— — 点、线及多边形来 建立三维立体模型的。目前有许多优秀的三维图 形软件如 3DS MAX, AUTOCAD,可以方便地建立 物体模型,但又难以对其进行控制 [ 1 ] ,比如 3DS MAX 的动画是基于关键帧而不是人机交互的。把 这些模型转换成 OpenGL 程序,再对其进行控制则 是一种比较理想的方法。在建模阶段可以利用三 维图形软件建立模型,避免在 OpenGL 中用点、线
要提高评价结果的正确性,必须对历史数据库 (存放以往的测试数据及评价结果) 及时更新; 增加 实测值个数, 有利于进一步消除干扰数据, 提高隶属 函数值的准确度。
!"
OpenGL及其基于VC6.0的开发
第21卷 第4期西安科技学院学报Vol.21 No.4 2001年12月 JOURNAL OF XI’AN UN IV ERSIT Y OF SCIENCE&TECHNOLO GY Dec.2001 文章编号:1671-1912(2001)04-0365-04Open G L及其基于VC++6.0的开发田红鹏,马 苗(西安科技学院网络中心,陕西西安 710054)摘 要:简述了计算机3D图形、图像与Open G L的关系,给出Open G L的明确定义以及它与Di2rect X的区别。
并进一步描述了Open G L跨各种平台的移植性。
文章从Open G L的工作顺序、状态机制及构成出发,介绍了Open G L的编程原理。
最后,讨论了在VC++6.0中开发Open G L程序的步骤。
关键词:Open G L;图形/图像;图形显示卡;VC++6.0中图分类号:TP391.41 文献标识码:A1 Open G L概述目前,计算机图形学已进入3D时代,色彩缤纷的计算机广告、扣人心弦的3D游戏、震撼人心的影视特效,无一不是三维图形的力作。
总之,3D已无处不在。
随着计算机图形、图像技术的迅猛发展,科学可视化、计算机动画和虚拟现实成为计算机图形学的三大热门话题,而这三大热门话题的技术核心均为3D 图形。
那么如何快速实现3D图形/图像?Open G L即可作为主要途径之一。
1.1 Open G L的概念Open G L是一种与硬件、窗口系统和OS相独立的一系列API。
它的前身是由SGI公司为其图形工作站开发的IRIS G L,是一个工业标准3D计算机软件接口。
后来,为了实现向其它平台移植,开发了Open G L。
Open G L不仅有G L的功能,而且是开放的,可用于多种硬件及OS。
1.2 Open G L与DirectX的区别相异点:Direct X是一种Windows环境下标准的高性能游戏、多媒体开发工具包。
如何在vc++6.0里面使用openGl
{
if(height==0)
height=1;
glViewport(0,0,width,height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);
HGLRC hRC=NULL;
HWND hWnd=NULL;
HINSTANCE hInstance;
BOOL keys[256];
BOOL active=TRUE;
BOOL fullscreen=TRUE;
GLfloat rtri;
GLfloat rquad;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);Color3f(1.0f,0.5f,0.0f);
glVertex3f(1.0f,-1.0f,1.0f);
glVertex3f(-1.0f,-1.0f,1.0f);
glVertex3f(-1.0f,-1.0f,-1.0f);
glVertex3f(1.0f,-1.0f,-1.0f);
glColor3f(0.0f,0.0f,1.0f);
glVertex3f(-1.0f,-1.0f,-1.0f);
glColor3f(0.0f,1.0f,0.0f);
glVertex3f(-1.0f,-1.0f,1.0f);
glEnd();
glLoadIdentity();
glTranslatef(1.5f,0.0f,-7.0f);
Win7下VC6.0打开多个工程的设置
Win7下VC6.0打开多个工程的设置在Win7操作系统下,如果是以Administrator登陆,则VC6.0打开工程文件的时候,不能同时打开多个工程文件,后打开的工程会将前一个工程close掉,这样,VC6.0只能出现一个进程。
在xp下,我们可以设置文件打开的默认方式中去掉DDE选项,这样可以使得VC6可以同时打开多个工程,但在win7下,却没有办法找到这个设置窗口。
经过实践,可以用以下办法解决:打开cmd:1)输入assoc .dsp回车,确认后缀为.dsp的文件类型为dspfile;2)输入assoc .dsw回车,确认后缀为.dsw的文件类型为dswfile;3)打开vc6的快捷方式的属性,拷贝vc6的路径,注意连两边的双引号都一起拷贝,比如时候这个路径:"C:\\Program Files\\Microsoft Visual Studio\\Common\\MSDev98\\Bin\\MSDEV.EXE"4)在cmd窗口,输入ftype dspfile="C:\\Program Files\\Microsoft Visual Studio\\Common\\MSDev98\\Bin\\MSDEV.EXE" "%1"5)在cmd窗口,输入ftype dswfile="C:\\Program Files\\Microsoft Visual Studio\\Common\\MSDev98\\Bin\\MSDEV.EXE" "%1"设置结束,双击不同的工程文件,看是否可同时打开多个工程文件吧。
==================首先遇到的问题是安装VC:在安装vc6的时候不要选择TOOLS里面的OLE/COM OBJECT VIEWER工具,就可以顺利安装,这个只是个查看工具,不会影响VC++的编译win7,vsita下注册控件:注册控件的时候进入C:\\Windows\\System32找到cmd.exe,右键管理员方式运行程序然后输入如下的命令:regsvr32 /s ACTSKIN4.OCX "%SystemRoot%\\system32\\ACTSKIN4.OCX"regsvr32 /s MSCHRT20.OCX "%SystemRoot%\\system32\\MSCHRT20.OCX"regsvr32 /s TEECHART5.OCX "%SystemRoot%\\system32\\TEECHART5.OCX"regsvr32 /s MSDATGRD.OCX "%SystemRoot%\\system32\\MSDATGRD.OCX"regsvr32 /s NTGraph.ocx "%SystemRoot%\\system32\\NTGraph.ocx"我这个是把相关ocx复制到了System32目录下面,如果是其它目录自行修改。
用VisualC_中的MFC和OpenGL建立三维图形应用环境
用VisualC_中的MFC和OpenGL建立三维图形应用环境用Visual C++中的MFC和OpenGL建立三维图形应用环境哈尔滨工业大学现代生产技术中心(150001) 凌云储林波摘要:使用Visual C++的基本类库MFC建立面向对象的OpenGL三维图形应用程序的开发环境。
关键词:三维图形编程OpenGL三维图形库M FC类库O penGL是一个功能强大的三维图形库,它与操作系统无关,用O penGL编写的应用程序可以很容易地移植到支持O penG L的操作系统上,例如U N IX。
在Windo ws N T和W indo w s95中提供了对OpenGL的支持,在Window s N T和W indow s95上可以使用V i-sual C++V2.0以上版本来开发OpenGL的应用程序。
而V isual C++完善的基本类库M FC和应用向导A ppW izard使得开发一个复杂的应用程序变得轻松自如。
如果将二者结合起来,便可开发出相当有水平的Windo ws下三维图形应用程序。
1 OpenGL绘图环境初始化使用OpenGL函数库之前,需要以特定的过程进行初始化。
因为O penG L函数库和操作系统无关,它有自已的独特设计,与W indo ws的图形设备接口GDI 模型以及多数M FC应用程序的建立方法不太一致。
Windo ws为此提供了一些专门的A P I函数。
下面简要介绍一下Win32下使用O penG L函数库特殊的初始化过程。
首先,必须重新设置画图窗口的象素格式,使其符合O penGL对象素格式的需要。
为此需声明一个P IX-ELF O RM A T D ESCR IPT OR 结构的变量,并适当地设置某些结构成员的值,使其支持O penG L及其颜色模式。
变量的声明见后面SetupPix elFo rma t()函数的描述。
再以此变量为参数调用Choo seP ix elFo rmat()函数分配1个象素格式号,然后调用SetPix elF or mat()将其设置为当前象素格式。
vc6.0使用教程详解
你首先要打开VC6.0界面,一般用得较多的是Win32控制台应用程序(源程序,扩展名.cpp),步骤是:(先工程—后文件—编译—连接---运行)1,建立一个工程,“文件”——“新建”,出现下面界面:选择“Win32 Console Application”(控制台应用程序,左边倒数第三个),命名工程名称,选择保存位置,点击“确定”,进入下一步,看到如下提示界面:建立一个空工程,对应其他需要的你一可以建立别的工程;点击“完成”,之后:显示你创建的工程的信息。
2,再在有一个的工程的条件下,我们再建立一个源文件;“文件”——“新建”(快捷键Ctri+N),出现:建立源文件,选择“C++ Source ”,一般都是建立这种文件的(适用在当文件中适用)如果要建立头文件的话,选择“C/C++ Header File”,(适用在多文件工程中使用)命名,文件名称,点击“确定”,之后:进入编辑区,在主界面编写代码:如下编写完之后呢:可以按编译按钮调试程序,看看有没有错误,有的话改正,没有的话就可以再按连接按钮检查连接(多文件工程时常用,检查文件间是否正常连接),最后,点运行按钮,就可以运行了。
如果是您有代码如:cpp文件,或 .h 文件,想添加都VC6.0里来测试的话,可以这样做:首先,要理解一下文件扩展名为:cpp和.h文件扩张名是.h,代表的是头文件,一般是书写一些函数原型,以及一些在整个程序中常用到的结构体,频繁使用的函数说明,定义等等;文件扩张名为,cpp的,是C++中的源文件,也是最常用到的文件,每建立一个工程都要至少一个源文件(至少要有一个函数入口——主函数main() ),包含了核心代码;建立与运行说明:(以VC 6.0编译器为例,其他编译器类似)首先,打开VC 6.0编译环境;在菜单栏——文件(的下拉菜单中选择“新建”),在弹出的选择窗口中,选择Win32 Console Application(控制台应用程序),在填写工程名称,选择一个程序保存路径,点击“完成”,查看工程信息。
基于C++ Builder6.0实现OpenGL程序框架
了一个 名称 为 Fr l o 的窗体 ,各文件 m 在 生成 默 认 工 程 和 窗 体 后 , 在 Fr o m1的 b c I pc r中 选 择 O j t n et ̄ e s o
i ( e = V E C P Coe( ; f K y = K S A E) ls )
_
语法和实例,缺乏对整个程序框架的 都采用默认生成的文件名。
o + B i e60 i hs p p r n h e l ig me o fte f me i n lzd fC+ u d r. n ti a e, d te rai n t d o h r s a aye . l a z h a Ke wo d C + Bule60 y r + id r . Op n e GL P ormmi g F a rga n rme ,
发人员的开发难度。
1 O eG pn L程序框架 的设计 本 文使 用 C+ B i e . 台 + u d r60平 l
( s e xG szi yb o u sre f g GL i i , L i ,ol fU ee n a ) z e l { f fl re f g i (uhce a a ) l ’
;
}
文档 C + B i e 应用 程序 。O e G + ul r d pn L
f
电
}
}
静. }
l
} # l 2 骘 簟
} ; i g o d ai ); l Miety(; g( f t n t L n 驰秘n l, 《 § c a l Ha deGWL S 1 L , - ≯ 《 f T E Ws Y
f K y= K F ) i( e= V _ 4
(
VC6.0中OpenGL开发环境配置
VC6.0中OpenGL开发环境配置(整opengl必看)第一步:选择一个编译环境现在Windows系统的主流编译环境有Visual Studio,Broland C++ Builde r,Dev-C++等,它们都是支持OpenGL的。
但这里我们选择VC++ 6.0作为学习OpenGL的环境。
第二步:安装GLUT工具包GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。
Windows环境下的GLUT下载地址:(大小约为150k)/resources/libraries/glut/glutdlls37beta.zip无法从以上地址下载的话请使用下面的连接:/upfile/200607311626279.zip Windows环境下安装GLUT的步骤:1、将下载的压缩包解开,将得到5个文件2、以我的安装目录为例:(1)“d:\Program Files\Microsoft Visual Studio\VC98\include\GL文件夹”。
把解压得到的glut.h放到这个GL文件夹里。
没有GL文件夹可以自己建一个,一般都有的。
(2)“d:\Program Files\Microsoft Visual Studio\VC98\lib文件夹”)。
把解压得到的glut.lib和glut32.lib放到静态函数库所在文件夹,即lib文件夹。
(3)把解压得到的glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。
(典型的位置为:C:\Windows\System32)这是非常重要的动态链接库设置!第三步,创建工程,其步骤如下:(1)创建一个Win32 Console Application。
(以我创建的为例,工程名为s impleGL)(2)链接OpenGL libraries:在Visual C++中先单击Project,再单击Settin gs,再找到Link单击,最后在Object/library modules 的最前面加上openg l32.lib Glut32.lib Glaux.lib glu32.lib 。
在VC++6.0中实现对3D Max构造OpenGL模型的控制
在VC++6.0中实现对3D Max构造OpenGL模型的控制张晓宇;李文秀
【期刊名称】《智能计算机与应用》
【年(卷),期】2001(000)003
【摘要】This paper firstly applies 3D Max for utility modeling,then real-timely calls this model in C++,accordingly implements utility real-time control.%首先用3D Max进行实体建模,然后在VC++中对这一模型进行实时调用,从而实现了对实体的实时控制。
【总页数】2页(P32-33)
【作者】张晓宇;李文秀
【作者单位】哈尔滨工程大学自动化学院;哈尔滨工程大学自动化学院
【正文语种】中文
【中图分类】TP31
【相关文献】
1.VC++6.0中利用OpenGL实现3DS模型的交互控制 [J], 向南平;江资斌;周翠竹
2.基于VC++6.0和OpenGL的3DS文件的读取与控制方法 [J], 丁斌
3.基于VC++6.0和OpenGL的3DS文件的读取与控制方法 [J], 丁斌
4.3DS MAX模型在OPENGL中的读取与重现 [J], 郭景;雷鸣
5.基于VC++
6.0和OpenGL的3DS文件的读取与控制方法 [J], 丁斌
因版权原因,仅展示原文概要,查看原文内容请购买。