Visual Studio OpenGL 配置方法

Visual Studio OpenGL 配置方法

OpenGL开发库的文件包含:

 动态链接库文件(.dll)

glut32.dll、glu.dll、glut.dll、OPENGL.DLL。

头文件(.h)

GL.H、GLAUX.H、GLEXT.H、GLU.H、GLUT.H、WGLEXT.H。

库文件(.lib)

GLAUX.LIB、Glu32.lib、Glu.lib、glut32.lib、glut.lib、Opengl32.lib、opengl.lib。

配置方法:

1.将开发库中的.h文件拷贝到Visual C++ 6.0的\Include\GL目录中

2.将.lib文件拷贝到Visual C++ 6.0的\lib目录中

3.将.dll文件拷贝到操作系统的system32目录中

代码示例:

/* Name: GLSAMPLE Author: Blaine Hodge Description: OpenGL sample. Read the fileInclude\Gl\ReadMe.txt for informations on usingOpenGL. Date: - Copyright: Public domain */ //Includes #include <windows.h> #include <gl/gl.h> #pragma comment(lib, "opengl32.lib") #pragma comment(lib, "opengl.lib") #pragma comment(lib, "glu32.lib") #pragma comment(lib, "glut32.lib") #pragma comment(lib, "glaux.lib") #pragma comment(lib, "glu.lib") //Function Declarations LRESULT CALLBACK WndProc(HWND hWnd,UINT message, WPARAM wParam, LPARAM lParam); VOIDEnableOpenGL(HWND hWnd, HDC * hDC, HGLRC * hRC); VOIDDisableOpenGL(HWND hWnd, HDC hDC, HGLRC hRC); //WinMain int WINAPI WinMain(HINSTANCE hInstance, HINSTANCEhPrevInstance, LPSTR lpCmdLine, int iCmdShow) { WNDCLASS wc; HWND hWnd; HDC hDC; HGLRC hRC; MSG msg; BOOL bQuit = FALSE; float theta =0.0f; // register windowclass wc.style = CS_OWNDC; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH ); wc.lpszMenuName = NULL; wc.lpszClassName = "GLSample"; RegisterClass( &wc ); // create mainwindow hWnd = CreateWindow( "GLSample","OpenGL Sample", WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE, 0, 0, 256, 256, NULL, NULL, hInstance, NULL); // enable OpenGLfor the window EnableOpenGL( hWnd, &hDC, &hRC ); // program mainloop while(!bQuit) { // check formessages if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { // handleor dispatch messages if(msg.message == WM_QUIT) { bQuit = TRUE; } else { TranslateMessage(&msg); DispatchMessage(&msg); } } else { // OpenGLanimation code goes here glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); glRotatef(theta, 0.0f, 0.0f, 1.0f); glBegin(GL_TRIANGLES); glColor3f( 1.0f, 0.0f, 0.0f );glVertex2f( 0.0f, 1.0f ); glColor3f( 0.0f, 1.0f, 0.0f );glVertex2f( 0.87f, -0.5f ); glColor3f( 0.0f, 0.0f, 1.0f );glVertex2f( -0.87f, -0.5f ); glEnd(); glPopMatrix(); SwapBuffers( hDC ); theta += 1.0f; } } // shutdown OpenGL DisableOpenGL( hWnd, hDC, hRC ); // destroy thewindow explicitly DestroyWindow( hWnd ); returnmsg.wParam; } //Window Procedure LRESULT CALLBACKWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { caseWM_CREATE: return0; caseWM_CLOSE: PostQuitMessage( 0 ); return0; caseWM_DESTROY: return0; caseWM_KEYDOWN: switch(wParam) { caseVK_ESCAPE: PostQuitMessage( 0 ); return0; } return0; default: returnDefWindowProc(hWnd, message, wParam, lParam); } } //Enable OpenGL VOID EnableOpenGL(HWND hWnd, HDC * hDC, HGLRC * hRC ) { PIXELFORMATDESCRIPTOR pfd; int iFormat; // get the devicecontext (DC) *hDC = GetDC( hWnd ); // set the pixelformat for the DC ZeroMemory( &pfd, sizeof( pfd ) ); pfd.nSize = sizeof(pfd ); pfd.nVersion = 1; pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; pfd.iPixelType = PFD_TYPE_RGBA; pfd.cColorBits = 24; pfd.cDepthBits = 16; pfd.iLayerType = PFD_MAIN_PLANE; iFormat = ChoosePixelFormat( *hDC, &pfd); SetPixelFormat( *hDC, iFormat, &pfd ); // create andenable the render context (RC) *hRC = wglCreateContext( *hDC ); wglMakeCurrent( *hDC, *hRC ); } //Disable OpenGL VOID DisableOpenGL(HWND hWnd, HDC hDC, HGLRC hRC ) { wglMakeCurrent( NULL, NULL ); wglDeleteContext( hRC ); ReleaseDC( hWnd, hDC ); }

注意:

忘记

#pragmacomment(lib, "XXX.lib")

会造成链接错误!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值