VS2010下配置Openmesh+openGL

合集下载

VS2010下配置MPI开发环境

VS2010下配置MPI开发环境
VS2010下配置MPI开发环境
河南大学 计算机与信息工程学院
VS2010下配置MPI开发环境

下载安装MPI
下载地址: /research/projects/mpich2/downloads/tarballs/1.2.1p1/mpich 2-1.2.1p1-win-ia32.msi2010下配置MPI开发环境

测试1:单机测试 在本台计算机上直接运行cpi.exe,输入一个比较大的值800 000 000,如下
配置MPI 集群
测试前需要在每台计算机上创建一个路径 相同的文件夹,比如在D盘根目录下创建 一个mpi的文件夹,将编译成功需要执行 的.exe文件放入mpi文件夹内。
测试单机版的MPICH2 是否安装成功

运行VS2010中的MPITest程序,若得如下结果表示单机版的MPICH2 安装成功
运行MPI程序

打开“开始-所有程序- MPICH-wmpiexec.exe”
在Applicationd右边浏览找 到你在VS2010中生成的exe 文件 设置Number of processes (即进程数目,用来模拟并行 计算的CPU数目)。再按 Execute按钮运行。

注意将各计算机的防火墙关了。各计 算机在同一个项目组内,这里我使用 的个计算机都是在一个路由器内,都 在WORKGROUP工作组内。 选择开始——MPICH2—— wmpiconfig.exe,如下图,如果安装 了MPI的计算机连接成功会高亮显示 (如下图绿色)。

配置MPI 集群


测试是否安装成功


在右边Library Directories加入 “C:\Program Files\MPICH2\lib;”

VC上部署openGL的步骤

VC上部署openGL的步骤

VC上部署openGL的步骤第⼀步:选择⼀个编译环境现在Windows系统的主流编译环境有Visual Studio,Broland C++ Builder,Dev-C++等,它们都是⽀持OpenGL的。

但这⾥我们选择VC++ 6.0作为学习OpenGL的环境。

第⼆步:安装GLUT⼯具包GLUT不是OpenGL所必须的,但它会给我们的学习带来⼀定的⽅便,推荐安装。

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。

(以我创建的为例,⼯程名为simpleGL)(2)链接OpenGL libraries:在Visual C++中先单击Project,再单击Settings,再找到Link单击,最后在Object/library modules 的最前⾯加上opengl32.lib Glut32.lib Glaux.lib glu32.lib 。

(3)单击Project Settings中的C/C++标签,将Preprocessor definitions 中的_CONSOLE改为__WINDOWS。

VisualStudio2010配置OpenCV的方法

VisualStudio2010配置OpenCV的方法

VisualStudio2010配置OpenCV的⽅法⽤VS使⽤OpenCV的时候,⼜不想全局配置,每次都要配置简直烦死了。

鉴于此,给⼤家介绍⼀种简便⼀点的⽅法。

配置环境的前提是:成功安装了OpenCV合适的版本。

我这⾥⽤的是OpenCV2.4.9,这个版本解压后,找到⼀个叫build的⽬录,这个是已经编译好的。

我们假设build⽬录结构如图1:图1 、 build⽬录结构并且假设build这个⽂件夹就在D盘下的opencv⽬录下,如果不是这样,你可以移动到D盘的opencv⽬录下。

我们要⽤C++来开发。

平台选⽤x86,当然,具体什么平台,根据你的实际情况。

第⼀步:创建⼀劳永逸的项⽬属性表!打开VisualStudio2010,创建⼀个新的项⽬,如图2所⽰:图 2、创建Win32控制台应⽤程序点击确定,然后下⼀步,进⼊图3所⽰界⾯。

选择空项⽬。

图 3、选择空项⽬点击完成。

在菜单栏中选择视图-->属性管理器,如图4所⽰。

图 4、选择属性管理器然后将属性管理器的选项卡都展开,如图5 所⽰:图 5、展开属性管理器右击 Debug|Win32,选择“添加新项⽬属性表”,操作步骤如图6、7所⽰:图 6图 7 添加OpenCV_Debug属性表添加结果如图8所⽰:图 8、OpenCV_Debug 属性表添加结果双击新添加的属性表。

按照图9所⽰,编辑包含⽬录。

图 9、编辑包含⽬录图 10、添加OpenCV的include⽬录图 11、添加附加库⽬录图 12、添加附加依赖项图12中,添加的附加依赖项后缀之前都有⼀个d,这点也是唯⼀与Release不同的地⽅。

添加的库⽂件名列表如下(注意你的版本号,千万别直接复制粘贴)opencv_imgproc249d.libopencv_calib3d249d.libopencv_contrib249d.libopencv_core249d.libopencv_features2d249d.libopencv_flann249d.libopencv_gpu249d.libopencv_highgui249d.libopencv_legacy249d.libopencv_ml249d.libopencv_nonfree249d.libopencv_objdetect249d.libopencv_ocl249d.libopencv_photo249d.libopencv_stitching249d.libopencv_superres249d.libopencv_ts249d.libopencv_video249d.libopencv_videostab249d.lib最后点击确定。

Win7x64+VS2010配置OpenMPI

Win7x64+VS2010配置OpenMPI
Win7x64 + Visual Studio 2010 配置 OpenMPI
1. 安装 Visual Studio 2010(X64) 2. 下载 OpenMPI_v1.6.2-2_win64.exe,地址如下: /software/ompi/v1.6/ 3. 安装 OpenMPI。管理员权限运行 exe 文件,一路 next,在选择是否添加路径 的时候选择为当前用户添加路径,继续 next 直到结束,中途可以考虑更改 文件夹名称。 4. 接下来是最为关键的配置过程,我花费了 4 天时间才搞定,这也是我写这篇 文章的原因,希望能为接下来的同道中人减少点障碍。 (1) 运行 Visual Studio 2010,新建项目命名为 mytest。
(2) 菜单栏文件新建文件
保存为”test.c”。
(3)菜单栏文件将 test.c 移入mytest
(3) 更改配置 win32 为 x64
点击上图所示下拉菜单,选择“新建”,如下图:
(5)右键 mytest 项目名,打开“属性”对话框
(6)配置属性VC++目录,需要修改四项: “可执行文件目录”添加安装路径下的 bin 文件夹; (文件路径视安装情况确
定) “包含目录”添加 include 文件夹; “库目录”添加 lib 文件夹; “源目录”添加 include 文件夹。
四项均添加完之后结果如上图。
(7)展开 C/C++选项卡,按照下面的步骤更改配置。
A. 常规多处理器编译是
B. 预处理器添加”OMPI_IMPORTS”
C. 运行库多线程调试(/MTD)
D. OpeΒιβλιοθήκη MP 支持是(8)展开“链接器”选项卡,在“输入”的“附加依赖项”中添加 libmpi.lib

如何在VS2010 中运行 Nehe OpenGL例子程序

如何在VS2010 中运行 Nehe OpenGL例子程序

如何在VS2010中文版中运行Nehe教程的OpenGL例子程序图文在网上找了一些,但是是英文版的解释,最后还有一些问题。

我问了我的朋友JWQ(秦姐)。

她细致的解答帮我成功运行出来了,在此和大家分享一下。

打开Visaul Studio 2010.然后【文件】>【新建】>【项目】按照图示选择语言Visual C++ 然后选择空项目。

最后别忘了输入项目名字。

输入名称之后点击确定,然后就变成了这样。

如果你看不到解决方案资源管理器。

可以点击菜单栏中的【视图】》【解决方案资源管理器】。

在解决方案资源管理器中的“源文件”上右击鼠标,选择【添加】》【新建项】。

将会弹出如图所示对话框,选择C++文件。

最后别忘了给这个文件起一个名字,点击【添加】按钮。

【项目】》【Lesson1属性】。

如果你起的项目名称是别的,自然这个项目属性就不叫Lesson1了。

点击后弹出如下对话框。

【配置属性】》【链接器】》【输入】找到【附加依赖项】点击【附加依赖项】这一行有内容的部分,会出来一个下拉小三角,点击【<编辑>】,将以下内容粘贴进去,注意,只能用单击鼠标右键然后粘贴的方法。

效果如图。

点击确定。

opengl32.libglu32.libglaux.libodbc32.libodbccp32.lib现在就可以将代码贴入了,然后快捷键Ctrl+F5运行。

/** This Code Was Created By Jeff Molofee 2000* A HUGE Thanks To Fredric Echols For Cleaning Up* And Optimizing This Code, Making It More Flexible!* If You've Found This Code Useful, Please Let Me Know.* Visit My Site At */#include <windows.h> // Header File For Windows#include <gl\gl.h> // Header File For The OpenGL32 Library#include <gl\glu.h> // Header File For The GLu32 Library#include <gl\glaux.h> // Header File For The Glaux LibraryHDC hDC=NULL; // Private GDI Device Context HGLRC hRC=NULL; // Permanent Rendering ContextHWND hWnd=NULL; // Holds Our Window Handle HINSTANCE hInstance; // Holds The Instance Of The Applicationbool keys[256]; // Array Used For The Keyboard Routinebool active=TRUE; // Window Active Flag Set To TRUE By Default bool fullscreen=TRUE; // Fullscreen Flag Set To Fullscreen Mode By DefaultLRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // Declaration For WndProcGLvoid ReSizeGLScene(GLsizei width, GLsizei height) // Resize And Initialize The GL Window{if (height==0) // PreventA Divide By Zero By{height=1; //Making Height Equal One}glViewport(0,0,width,height); // Reset The CurrentViewportglMatrixMode(GL_PROJECTION); // Select The ProjectionMatrixglLoadIdentity(); // ResetThe Projection Matrix// Calculate The Aspect Ratio Of The WindowgluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);glMatrixMode(GL_MODELVIEW); // Select TheModelview MatrixglLoadIdentity(); // ResetThe Modelview Matrix}int InitGL(GLvoid) // AllSetup For OpenGL Goes Here{glShadeModel(GL_SMOOTH); // Enable SmoothShadingglClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Black BackgroundglClearDepth(1.0f); // DepthBuffer SetupglEnable(GL_DEPTH_TEST); // Enables DepthTestingglDepthFunc(GL_LEQUAL); // The Type OfDepth Testing To DoglHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculationsreturn TRUE; //Initialization Went OK}int DrawGLScene(GLvoid) // Here's Where WeDo All The Drawing{glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth BufferglLoadIdentity(); // ResetThe Current Modelview Matrixreturn TRUE; //Everything Went OK}GLvoid KillGLWindow(GLvoid) // Properly KillThe Window{if (fullscreen) // Are WeIn Fullscreen Mode?{ChangeDisplaySettings(NULL,0); // If So Switch Back ToThe DesktopShowCursor(TRUE); // ShowMouse Pointer}if (hRC) //Do We Have A Rendering Context?{if (!wglMakeCurrent(NULL,NULL)) // Are We Able To ReleaseThe DC And RC Contexts?{MessageBox(NULL,"Release Of DC And RC Failed.","SHUTDOWN ERROR",MB_OK |MB_ICONINFORMA TION);}if (!wglDeleteContext(hRC)) // Are We Able ToDelete The RC?{MessageBox(NULL,"Release Rendering Context Failed.","SHUTDOWN ERROR",MB_OK |MB_ICONINFORMA TION);}hRC=NULL; //Set RC To NULL}if (hDC && !ReleaseDC(hWnd,hDC)) // Are We Able To ReleaseThe DC{MessageBox(NULL,"Release Device Context Failed.","SHUTDOWN ERROR",MB_OK |MB_ICONINFORMA TION);hDC=NULL; //Set DC To NULL}if (hWnd && !DestroyWindow(hWnd)) // Are We Able To DestroyThe Window?{MessageBox(NULL,"Could Not Release hWnd.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMA TION);hWnd=NULL; //Set hWnd To NULL}if (!UnregisterClass("OpenGL",hInstance)) // Are We Able To Unregister Class {MessageBox(NULL,"Could Not Unregister Class.","SHUTDOWN ERROR",MB_OK |MB_ICONINFORMA TION);hInstance=NULL; // SethInstance To NULL}}/* This Code Creates Our OpenGL Window. Parameters Are: ** title - Title To Appear At The Top Of The Window ** width - Width Of The GL Window Or Fullscreen Mode ** height - Height Of The GL Window Or Fullscreen Mode ** bits - Number Of Bits To Use For Color (8/16/24/32) ** fullscreenflag - Use Fullscreen Mode (TRUE) Or Windowed Mode (FALSE) */BOOL CreateGLWindow(char* title, int width, int height, int bits, bool fullscreenflag){GLuint PixelFormat; // Holds The Results After Searching For A Match WNDCLASS wc; // Windows Class StructureDWORD dwExStyle; // Window Extended StyleDWORD dwStyle; // Window StyleRECT WindowRect; // Grabs Rectangle Upper Left / LowerRight ValuesWindowRect.left=(long)0; // Set Left Value To 0WindowRect.right=(long)width; // Set Right Value To Requested WidthWindowRect.top=(long)0; // Set Top Value To 0WindowRect.bottom=(long)height; // Set Bottom Value To Requested Heightfullscreen=fullscreenflag; // Set The Global Fullscreen FlaghInstance = GetModuleHandle(NULL); // Grab AnInstance For Our Windowwc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; // Redraw On Size, And OwnDC For Window.wc.lpfnWndProc = (WNDPROC) WndProc; // WndProc HandlesMessageswc.cbClsExtra = 0; //No Extra Window Datawc.cbWndExtra = 0; //No Extra Window Datawc.hInstance = hInstance; // Set TheInstancewc.hIcon = LoadIcon(NULL, IDI_WINLOGO); // Load TheDefault Iconwc.hCursor = LoadCursor(NULL, IDC_ARROW); // Load The ArrowPointerwc.hbrBackground = NULL; //No Background Required For GLwc.lpszMenuName = NULL; //We Don't Want A Menuwc.lpszClassName = "OpenGL"; //Set The Class Nameif (!RegisterClass(&wc)) //Attempt To Register The Window Class{MessageBox(NULL,"Failed To Register The Window Class.","ERROR",MB_OK|MB_ICONEXCLAMA TION);return FALSE;// Return FALSE}if (fullscreen)// Attempt Fullscreen Mode?{DEVMODE dmScreenSettings; //Device Modememset(&dmScreenSettings,0,sizeof(dmScreenSettings)); // Makes Sure Memory's CleareddmScreenSettings.dmSize=sizeof(dmScreenSettings); // Size Of The DevmodeStructuredmScreenSettings.dmPelsWidth = width; // Selected ScreenWidthdmScreenSettings.dmPelsHeight = height; // Selected ScreenHeightdmScreenSettings.dmBitsPerPel = bits; // Selected BitsPer PixeldmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;// Try To Set Selected Mode And Get Results. NOTE: CDS_FULLSCREEN Gets Rid Of Start Bar.if(ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCES SFUL){// If The Mode Fails, Offer Two Options. Quit Or Use Windowed Mode.if (MessageBox(NULL,"The Requested Fullscreen Mode Is Not Supported By\nYour VideoCard. Use Windowed Mode Instead?","NeHe GL",MB_YESNO|MB_ICONEXCLAMATION)==IDYES){fullscreen=FALSE; // Windowed Mode Selected. Fullscreen =FALSE}else{// Pop Up A Message Box Letting User Know The Program Is Closing.MessageBox(NULL,"Program Will Now Close.","ERROR",MB_OK|MB_ICONSTOP);return FALSE;// Return FALSE}}}if (fullscreen)// Are We Still In Fullscreen Mode?{dwExStyle=WS_EX_APPWINDOW; //Window Extended StyledwStyle=WS_POPUP;// Windows StyleShowCursor(FALSE);// Hide Mouse Pointer}else{dwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; // Window Extended StyledwStyle=WS_OVERLAPPEDWINDOW; // WindowsStyle}AdjustWindowRectEx(&WindowRect, dwStyle, FALSE, dwExStyle); // Adjust Window To TrueRequested Size// Create The Windowif (!(hWnd=CreateWindowEx( dwExStyle, //Extended Style For The Window"OpenGL",// Class Nametitle,// Window TitledwStyle |// Defined Window StyleWS_CLIPSIBLINGS |// Required Window StyleWS_CLIPCHILDREN,// Required Window Style0, 0,// Window PositionWindowRect.right-WindowRect.left, //Calculate Window WidthWindowRect.bottom-WindowRect.top, //Calculate Window HeightNULL,// No Parent WindowNULL,// No MenuhInstance,// InstanceNULL)))// Dont Pass Anything To WM_CREATE{KillGLWindow(); // Reset TheDisplayMessageBox(NULL,"Window Creation Error.","ERROR",MB_OK|MB_ICONEXCLAMA TION);return FALSE; // Return FALSE}static PIXELFORMATDESCRIPTOR pfd= // pfd Tells Windows How We WantThings To Be{sizeof(PIXELFORMA TDESCRIPTOR), // Size Of This Pixel FormatDescriptor1, //Version NumberPFD_DRAW_TO_WINDOW | // Format Must SupportWindowPFD_SUPPORT_OPENGL | // Format Must SupportOpenGLPFD_DOUBLEBUFFER, // Must SupportDouble BufferingPFD_TYPE_RGBA, // Request An RGBAFormatbits, // SelectOur Color Depth0, 0, 0, 0, 0, 0, // Color BitsIgnored0, //No Alpha Buffer0, //Shift Bit Ignored0, //No Accumulation Buffer0, 0, 0, 0, //Accumulation Bits Ignored16, //16Bit Z-Buffer (Depth Buffer)0, //No Stencil Buffer0, //No Auxiliary BufferPFD_MAIN_PLANE, // Main DrawingLayer0, //Reserved0, 0, 0 // LayerMasks Ignored};if (!(hDC=GetDC(hWnd))) // Did We Get A DeviceContext?{KillGLWindow(); // Reset TheDisplayMessageBox(NULL,"Can't Create A GL Device Context.","ERROR",MB_OK|MB_ICONEXCLAMA TION);return FALSE; // Return FALSE}if (!(PixelFormat=ChoosePixelFormat(hDC,&pfd))) // Did Windows Find A Matching Pixel Format?{KillGLWindow(); // Reset TheDisplayMessageBox(NULL,"Can't Find A Suitable PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);return FALSE; // Return FALSE}if(!SetPixelFormat(hDC,PixelFormat,&pfd)) // Are We Able To Set The Pixel Format?{KillGLWindow(); // Reset TheDisplayMessageBox(NULL,"Can't Set The PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);return FALSE; // Return FALSE}if (!(hRC=wglCreateContext(hDC))) // Are We Able To Get A RenderingContext?{KillGLWindow(); // Reset TheDisplayMessageBox(NULL,"Can't Create A GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMA TION);return FALSE; // Return FALSE}if(!wglMakeCurrent(hDC,hRC)) // Try To Activate The RenderingContext{KillGLWindow(); // Reset TheDisplayMessageBox(NULL,"Can't Activate The GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMA TION);return FALSE; // Return FALSE}ShowWindow(hWnd,SW_SHOW); // Show The WindowSetForegroundWindow(hWnd); // Slightly HigherPrioritySetFocus(hWnd); // Sets KeyboardFocus To The WindowReSizeGLScene(width, height); // Set Up Our Perspective GL Screenif (!InitGL()) // Initialize OurNewly Created GL Window{KillGLWindow(); // Reset TheDisplayMessageBox(NULL,"InitializationFailed.","ERROR",MB_OK|MB_ICONEXCLAMA TION);return FALSE; // Return FALSE}return TRUE; // Success}LRESULT CALLBACK WndProc( HWND hWnd, // Handle For This WindowUINT uMsg, // Message ForThis WindowWPARAM wParam, // AdditionalMessage InformationLPARAM lParam) // AdditionalMessage Information{switch (uMsg) // Check ForWindows Messages{case WM_ACTIV A TE: // Watch ForWindow Activate Message{if (!HIWORD(wParam)) // Check MinimizationState{active=TRUE; // Program IsActive}else{active=FALSE; // Program Is NoLonger Active}return 0; // ReturnTo The Message Loop}case WM_SYSCOMMAND: // InterceptSystem Commands{switch (wParam) // Check SystemCalls{case SC_SCREENSA VE: // ScreensaverTrying To Start?case SC_MONITORPOWER: // Monitor Trying To EnterPowersave?return 0; // PreventFrom Happening}break; // Exit}case WM_CLOSE: // Did We ReceiveA Close Message?{PostQuitMessage(0); // Send A QuitMessagereturn 0; // JumpBack}case WM_KEYDOWN: // Is A Key BeingHeld Down?{keys[wParam] = TRUE; // If So, Mark It As TRUEreturn 0; // JumpBack}case WM_KEYUP: // Has A Key BeenReleased?{keys[wParam] = FALSE; // If So, Mark It As FALSEreturn 0; // JumpBack}case WM_SIZE: // Resize TheOpenGL Window{ReSizeGLScene(LOWORD(lParam),HIWORD(lParam)); // LoWord=Width, HiWord=Heightreturn 0; // JumpBack}}// Pass All Unhandled Messages To DefWindowProcreturn DefWindowProc(hWnd,uMsg,wParam,lParam);}int WINAPI WinMain( HINSTANCE hInstance, // InstanceHINSTANCE hPrevInstance, // Previous InstanceLPSTR lpCmdLine, // Command LineParametersint nCmdShow) // WindowShow State{MSG msg; // WindowsMessage StructureBOOL done=FALSE; // Bool VariableTo Exit Loop// Ask The User Which Screen Mode They Preferif (MessageBox(NULL,"Would You Like To Run In Fullscreen Mode?", "Start FullScreen?",MB_YESNO|MB_ICONQUESTION)==IDNO){fullscreen=FALSE; // Windowed Mode }// Create Our OpenGL Windowif (!CreateGLWindow("NeHe's OpenGL Framework",640,480,16,fullscreen)){return 0; // Quit IfWindow Was Not Created}while(!done) // Loop That RunsWhile done=FALSE{if (PeekMessage(&msg,NULL,0,0,PM_REMOVE)) // Is There A Message Waiting?{if (msg.message==WM_QUIT) // Have We Received A QuitMessage?{done=TRUE; // If Sodone=TRUE}else // If Not,Deal With Window Messages{TranslateMessage(&msg); // Translate The MessageDispatchMessage(&msg); // Dispatch The Message}}else // IfThere Are No Messages{// Draw The Scene. Watch For ESC Key And Quit Messages From DrawGLScene()if (active) // ProgramActive?{if (keys[VK_ESCAPE]) // Was ESC Pressed?{done=TRUE; // ESCSignalled A Quit}else // NotTime To Quit, Update Screen{DrawGLScene(); // Draw The SceneSwapBuffers(hDC); // Swap Buffers(Double Buffering)}}if (keys[VK_F1]) // Is F1 BeingPressed?{keys[VK_F1]=FALSE; // If So Make KeyFALSEKillGLWindow(); // Kill OurCurrent Windowfullscreen=!fullscreen; // Toggle Fullscreen /Windowed Mode// Recreate Our OpenGL Windowif (!CreateGLWindow("NeHe's OpenGL Framework",640,480,16,fullscreen)){return 0; // Quit IfWindow Was Not Created}}}}// ShutdownKillGLWindow(); // Kill The Window return (msg.wParam); // Exit The Program}这是Nehe教程第一课的代码。

VS2010 VS2008MFC openGL初始化

VS2010 VS2008MFC openGL初始化

VS2008和VS2010 OpenGL的MFC初始化(吐血整理)1.建立一个单文档工程XXX2.这时你会看见自动生成了很多的类,08和10版本的还是不一样,但是主要的类还是那么几个,我们主要关注的是XXXView类,首先得保证你的电脑包含了OpenGL工具包,没有的话自己下载个很方便。

查看方法安装路径下vc/include/GL看看有没有GL.h,glu.h,gluax.h,自己最好添加个glut.h.。

3.在stdafx.h头文件中,添加#include”GL/gl.h”, #include”GL/glu.h”,如果有glut.h的话就直接添加一句#include”GL/glut.h”就可以了。

4.在XXXView.h文件中加入所需的成员变量和函数:public:CClientDC *m_pDC;void InitOpengl();BOOL SetupPixelFormat(void);void DrawScene(void);5.在XXXView.cpp文件中,在CXXXView的构造函数中加入:m_pDC=NULL;6.在XXXView.cpp文件中,加入相应的成员函数(直接复制就行):void CXXXView::InitOpengl(){PIXELFORMATDESCRIPTOR pfd;int n;HGLRC hrc;m_pDC=new CClientDC(this);ASSERT(m_pDC != NULL);if(!bSetupPixelFormat())return;n=::GetPixelFormat(m_pDC->GetSafeHdc());::DescribePixelFormat(m_pDC->GetSafeHdc(), n,sizeof(pfd),&pfd);hrc=wglCreateContext(m_pDC->GetSafeHdc());wglMakeCurrent(m_pDC->GetSafeHdc(),hrc);glClearDepth(1.0f);glEnable(GL_DEPTH_TEST);}BOOL CXXXView::SetupPixelFormat(){static PIXELFORMA TDESCRIPTOR pfd ={sizeof(PIXELFORMATDESCRIPTOR),1,PFD_DRAW_TO_WINDOW |PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER,PFD_TYPE_RGBA,24,0, 0, 0, 0, 0, 0,0,0,0,0, 0, 0, 0,32,0,0,PFD_MAIN_PLANE,0,0, 0, 0};int pixelformat;if((pixelformat = ChoosePixelFormat(m_pDC->GetSafeHdc(), &pfd)) == 0) {MessageBox("ChoosePixelFormat failed");return FALSE;}if(SetPixelFormat(m_pDC->GetSafeHdc(), pixelformat, &pfd) == FALSE) {MessageBox("SetPixelFormat failed");return FALSE;}return TRUE;}void CXXXView::DrawScene(void){//设置清屏颜色为黑色glClearColor(0.0f,0.0f,0.0f,0.0f);//清除颜色缓冲区和深度缓冲区glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//矩阵堆栈函数,和glPopMatrix()相对应添加你想要话的图形,如:glRectf(-0.5,-0.5,0.5,0.5);//画一个矩形;SwapBuffers(wglGetCurrentDC());//不能省略}7.在XXXView.cpp文件中,在PreCreateWindow函数中加入:cs.style |= WS_CLIPSIBLINGS | WS_CLIPCHILDREN;//比较重要8.在XXXView.cpp文件中,在OnDraw函数中加入:DrawScene();9.在CXXXView中,建立如下消息的映射函数:WM_CREATE, WM_DESTROY, WM_SIZE, WM_ERASEBKGND,并加入划线的代码,如下所示:int CXXXView::OnCreate(LPCREATESTRUCT lpCreateStruct){if (CView::OnCreate(lpCreateStruct) == -1)return -1;// TODO: Add your specialized creation code hereInitOpengl();return 0;}void CXXXView::OnDestroy(){CView::OnDestroy();// TODO: Add your message handler code hereHGLRC hrc;hrc = ::wglGetCurrentContext();::wglMakeCurrent(NULL,NULL);if(hrc)::wglDeleteContext(hrc);if(m_pDC)delete m_pDC;}BOOL CXXXView::OnEraseBkgnd(CDC* pDC){return TRUE;}void CXXXView::OnSize(UINT nType, int cx, int cy){CView::OnSize(nType, cx, cy);// TODO: Add your message handler code hereint w=cx;int h=cy;GLfloat nRange=1.0f;//避免除数为0if(h==0)h=1;//设置视口与窗口匹配glViewport(0,0,w,h);//重新设置坐标系统glMatrixMode(GL_PROJECTION);glLoadIdentity();//建立正交变换下的剪切体if(w<h)glOrtho(-nRange,nRange,-nRange*h/w,nRange*h/w,-nRange,nRange);elseglOrtho(-nRange*w/h,nRange*w/h,-nRange,nRange,-nRange,nRange);glMatrixMode(GL_MODELVIEW);glLoadIdentity();}需要注意的是08中没有类向导,需要右键你的类添加消息映射,最后祝大家学习愉快。

vs2010加opencv配置方法

vs2010加opencv配置方法

一、在环境变量里面新建PATHD:\opencv\build\x86\vc10\bin;D:\tbb30\bin\ia32\vc10OPENCVD:\opencv\build二包含目录二、建立一个demo在C++下,新建一个“win32控制台程序”,“空项目”即可,输入以下代码:#include"highgui.h"int main(){const char*imagename = "D:/Demo.jpg"; //随便放一张jpg图片在D盘或另行设置目录cv::Mat img =cv::imread(imagename);if(img.empty()) return -1; //是否加载成功if(!img.data)return -1;cv::namedWindow("image",CV_WINDOW_AUTOSIZE);cv::imshow("image", img);cv::waitKey();return 0;}三、配置(1)在“视图”中打开“属性管理器”;(2)在“属性管理器”中双击Demo的项目名称;(3)在“Demo属性页”->“VC++目录”->“包含目录”中追加下面一行(包括所有分号,勿删VS原始数据):;D:\opencv\build\include;D:\opencv\build\include\opencv;D:\opencv\bui ld\include\opencv2(4)、在“Demo属性页”->“VC++目录”->“库目录”中追加下面一行(包括所有分号,勿删VS原始数据):;D:\opencv\build\x86\vc10\lib;D:\ttb30\lib\ia32\vc10(5)、在“Demo属性页”(“配置”==“Debug”)->“配置属性”->“链接器”->“输入”->“附加依赖库”中追加下面一行(包括所有分号,勿删VS原始数据):;opencv_core231d.lib;opencv_highgui231d.lib;opencv_video231d.lib;open cv_ml231d.lib;opencv_legacy231d.lib;opencv_imgproc231d.lib;opencv_calib3d231d.lib;opencv_contrib231d.lib; opencv_features2d231d.lib;opencv_flann231d.lib;opencv_gpu231d.lib; opencv_haartraining_engined.lib;opencv_objdetect231d.lib; opencv_ts231d.lib;opencv_video231d.lib(6)、在“Demo属性页”(“配置”==“Release”)->“配置属性”->“链接器”->“输入”->“附加依赖库”中追加下面一行(包括所有分号,勿删VS原始数据):;opencv_core231.lib;opencv_highgui231.lib;opencv_video231.lib;opencv_ ml231.lib;opencv_legacy231.lib;opencv_imgproc231.lib;opencv_calib3d231.lib;opencv_contrib231.lib;opencv_features2d231.lib; opencv_flann231.lib;opencv_gpu231.lib;opencv_haartraining_engine.lib; opencv_objdetect231.lib;opencv_ts231.lib;opencv_video231.lib。

用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()将其设置为当前象素格式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VS2010下配置Openmesh+openGL
一.配置OpenGL
1首先,下载glut.rar文件,这个网上搜一下都能够找到,亦可以从opengl官网下载,/resources/libraries/glut/glutdlls37beta.zip。

2.解压后可以得到5个文件:glut.h、glut.dll、glut.lib、glut32.lib、glut32.dll。

然后,
○1把glut.h文件放在C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl文件夹下面;
○2把glut.lib、glut32.lib两个文件放在静态函数库所在的文件夹中,也就是说这两个文件要放到自己的VS2010安装目录下的VC\lib文件中。

我的vs2010安装目录是E:\vs2010\VC\lib;
○3最后把glut.dll、glut32.dll文件放在C:\windows\system32文件夹下面.
三步做完openGL的文件配置就完成了。

二.配置Openmesh
1. 在网站上下载了 OpenMesh-
2.0-RC4(这个谷歌下,网上很多,最好下载最新版本的)。

2.安装openmesh后,openmesh安装目录下的lib文件夹里面会有两个库文件
OpenMeshCore.lib 和OpenMeshTools.lib。

3.为了不设置依赖的编译目录,将这两个文件放到VS的库文件里E:\VS2010\VC\lib中。

4.打开VS2010,新建一个工程,命名如test1,然后设置test1工程的依赖项,工程属性->连接器->输入-》附加依赖项-》加入如上两个lib就可以了。

在这里要说明一下,如果从VS2010的工具—属性里面设置附加依赖属性是不行的,所以我们要自己建一个工程,然后设置这个工程的附加依赖属性,设置的地方有两处,如下:
○1项目—test1属性—VC++目录
主要设置的是包含目录和库目录,文件路径设置如图,lib和include文件夹都在自己的openmesh安装目录下。

○2项目—test1属性—链接器—输入
将openmesh安装目录下lib文件中的这两个文件(如图)的名字复制粘贴到这里来就可以了,至此openmesh文件配置完成。

网上opengl程序很多,你可以下载一个测试一下环境搭建是否成功,我亲测可以。

顺带提一下我安装的VS2010的lib文件中木有glaux.h,不知道大家是不是也是这样,这个文件可以从VC++6.0的include文件中复制过来,亦可从网上下载。

相应的glaux.lib放到VS2010的lib文件夹里就可以了。

因为是新手,上面的环境搭建也借鉴了一下别人的,只是网上的太乱了,我作了一下总结,供新人参考一下,如有不足的或者不对的地方,大家指正下哈,我再修改。

相关文档
最新文档