OpenGL 설치

|

 

OpenGL Installation

 

 

 

여기서는 Microsoft Windows 운영체계에서 Visual Studio C++ 2010 을 사용하는 경우에 OpenGL 설치방법에 대해서 간단히 설명하기로 한다.

 

  

설치된 Program 및 Folder:

 

Visual Studio .NET 2010 SDK 를 설치함에 따라, 다음의 OpenGL Library 와 Header 파일들은 다음의 적합한 위치에 설치된다.

 

      • gl.h, glu.h - C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\gl

      • opengl32.lib, glu32.lib - C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib

      • opengl32.dll, glu32.dll - C:\Windows\System32

 

64bit Visual Studio SDK 를 사용하는 경우에 64bit 용 .lib 파일들은 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\x64 에 .dll 파일들은 C:\Windows\SysWOW64 에 설치되어 있다.

 

참고로 Microsoft 사는 1995년 이후, GLU (Graphic Library Utility) version 1.22 만을 제공하고 있어, 이후의 업그레이드 된 GLU version 을 사용하기 위해서는 Linux 환경에서 OpenGL을 사용하는 것이 바람직하다.

 

 

 

필수 설치 Program:

 

OpenGL 프로그래밍의 편리를 위해 다음 3개의 필수요소를 다운로드하여 설치하는것이 바람직하다.

GLUT (The OpenGL Utility Toolkit),   FreeGLUT,

GLEW (The OpenGL Extension Wrangler Library)

 

GLUT : http://user.xmission.com/~nate/glut.html - glut-3.7.6-bin.zip

FreeGLUT : http://freeglut.sourceforge.net/ - freeglut-MSVC-2.8.0-1.mp.zip

GLEW : http://glew.sourceforge.net/install.html - glew-1.9.0-win32.zip 또는 glew-1.9.0-win64.zip

 

위의 버젼은 2012년 12월 까지의 버젼으로 최신 version 이 나왔으면 이를 확인하여 설치하는것이 좋다.

모두다 이미 컴파일된 Binary 파일이므로 굳이 Source 파일을 다운받아 Window 에서 컴파일 할 필요가 없다.

먼저 GLUT 파일을 풀어

 

.h 파일들은 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\gl

.lib 파일들은 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib

.dll 파일들은 C:\Windows\System32 에 복사하면 된다.

 

다음에 FreeGLUT GLEW 을 풀어서 위의 과정을 되풀이 한다. FreeGLUT 을 설치할 겨우 이미 설치된 같은 이름의 파일이 있으면 덮어 씌우면 된다.

 

 

주의 사항:

 

64 bit Windows 운영체계내에서 32 bit Visual Studio 를 설치했다면, 위의 모든 폴더 (C:\Windows\SysWOW64 ~\Lib\x64 포함) 에 위의 32 bit 용 파일들을 복사해야 한다. 만일 각각의 64 bit 용 폴더에 64 bit 파일들을 설치할 경우 컴파일시 에러를 유발 시킬 수 있다.

 

 

 

Test Program:

 

위의 파일들이 완전히 설치되었으면 다음의 Source Code를 가지고 Test 해보자.

Visual Studio C++ 를 Console Mode 에서 새 프로젝트를 생성한 후 다음의 Code를 입력한다.

 

/** Simple OpenGL Program
 *=============================================================================!
 *
 *  Program: simple_OpenGL.cpp
 *
 *  by (BeH)
 *
 *  A simple, introductory OpenGL program.
 *
 *=============================================================================!
 */
#include <stdio.h>
#include <stdlib.h>

#include <gl/glew.h>
#include <gl/glut.h>

 

// function prototypes
void showOpenGLInfo( void );
void display( void );

 

/******************************************************************************!
* Main OpenGL program
******************************************************************************!
*/
int main( int argc, char *argv[] )
{
      // init GLUT and create Window
      glutInit( &argc, argv );
      glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH );
      glutInitWindowSize( 320, 320 );
      glutInitWindowPosition( 100, 100 );
      glutCreateWindow( "OpenGL: A Simple Window" );
      showOpenGLInfo();

 

      // register callbacks
      glutDisplayFunc( display );

 

      // enter GLUT event processing cycle
      glutMainLoop();

 

      return 0;
}

 

/******************************************************************************!
 * show OpenGL Info through the Console
 ******************************************************************************!
 */
void  showOpenGLInfo( void )
{
      if (glewInit() != GLEW_OK) {
            fprintf( stderr, "Error: %s\n", glewGetErrorString(glewInit()) );
            exit(0);
      }
      fprintf( stderr, "OpenGL Vender: %s\n", glGetString(GL_VENDOR) );
      fprintf( stderr, "OpenGL Version: %s\n", glGetString(GL_VERSION) );
      fprintf( stderr, "GLU Version: %s\n", gluGetString(GLU_VERSION) );
      fprintf( stderr, "GLEW Version: %s\n", glewGetString(GLEW_VERSION) );

 

      return;
}

 

/******************************************************************************!
 * draw graphics
 ******************************************************************************!
 */
void  display( void )
{
      glClearColor( 0.0f, 0.0f, 0.0f, 1.0f );
      glClear( GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT );

 

      glColor4f( 1.0, 1.0, 0.0, 1.0 );
      glBegin( GL_TRIANGLES );
            glVertex3f( -0.5,-0.5, 0.0 );
            glVertex3f( 0.5,-0.5, 0.0 );
            glVertex3f( 0.0, 0.5, 0.0 );
      glEnd();

 

      glFlush();
}

 

위의 Source Code 를 입력한 후 .NET Framework 의 옵션을 다음과 같이 변경한다.

 

메뉴의 "프로젝트(P) -> ~~~ 속성(P)" 로 간 다음,  ~~~속성 페이지에서

"구성속성 -> 링커 -> 입력" 의 오른쪽 "추가종속성" 오른쪽 란에 마우스를 클릭하면 아래 화살표가 나온다. 아래 화살표를 클릭하여 <편집...> 을 누른다음 다음의 4 줄을 Typing 하여 집어넣는다. 모든게 완료되면 확인 버튼을 누르고 난 다음 컴파일 한다.  

 

opengl32.lib
glu32.lib
glut32.lib
glew32.lib

 

별로 많이 사용되지는 않지만 "glaux.lib" 를 사용할 때가 있으면 이것도 함께 추가종속을 시켜야 한다.

프로젝트를 할 때마다 이 과정을 반복하는 일이 불편할 경우에 또는 보편적인 프로그램을 할 경우에는  프로그램에서 pragma 를 사용해 #include <...> 라인 다음에 다음과 같이 라인을 첨가해도 된다.

 

 

#pragma comment(lib, "glew32.lib")

#pragma comment(lib, "glut32.lib")

#pragma comment(lib, "OpenGL32.lib")

#pragma comment(lib, "glu32.lib")

#pragma comment(lib, "glaux.lib")

 

 

컴파일시 만약 다음과 같은 error message 가 뜬다면 아래와 같이 해결한다.

 

error C2664: 'MessageBoxW' : 매개 변수 2을(를) 'const char [29]'에서 'LPCWSTR'(으)로 변환할 수 없습니다.
                        가리킨 형식이 관련이 없습니다. 변환하려면 reinterpret_cast, C 스타일 캐스트 또는 함수 스타일 캐스트가 필요합니다.

 

메뉴의 "프로젝트(P) -> ~~~ 속성(P)" 로 간 다음, ~~~속성 페이지에서

"구성속성 -> 일반 -> 문자집합"의  "유니코드 문자 집합 사용" 을 "멀티바이트 문자 집합 사용"  으로 변경한다.

 

또 다른 방법으로는 프로그램의 "MessageBox" 대신에 "MessageBoxA" 를 사용하거나,  또는 "MessageBox" 내의 Text 부분 (" " 부분) 을 TEXT() 매크로를 사용, Message( hWnd, TEXT("End of Program"), TEXT("End Message"), MB_OK ); 의 형태로 사용한다.

 

컴파일이 완성된 후 Run 하면 Information 창과 함께 다음과 같은 결과물 창이 나타나면 설치가 완벽하게 된 것이다.

 

 

 

 

 

 

다른 유용한 Libraries:

 

여기에 더해, GLFW : http://www.glfw.org/ 도 살펴보는것도 좋을듯 하다.

Shading Laguage 인 GLSL 을 한다면... MIT 에서 개발한 GLM (Graphics Library Mathematics) Header file을 설치하는것이 바람직 하다.

 

GLM (OpenGL Mathematics) : http://glm.g-truc.net/

 

파일을 다운받아 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\ 아래에 \GLM 폴더를 만들고 그 안에 위의 파일을 풀어 넣으면 된다.

 

 

 

다음은 OpenGL 과 연계된 이미지 및 멀티미디어에 대한 Site 이다.

 

SOIL (Simple OpenGL Image Library) : http://www.lonesock.net/soil.html

SOIL provides a way to load an image file in PNG, JPG and a few other formats, designed for OpenGL integration. It's a pretty minimal library with no dependency. It's used under the hood by SFML (although SFML also uses libjpeg and libpng directly).

 

SFML (Simple & Fast Multimedia Library) : http://www.sfml-dev.org/

SFML is a free multimedia C++ API that provides low and high level access to graphics, input, audio, etc.

 

 

Reference:

http://visualambition.wordpress.com/2010/08/12/glut-and-visual-studio-2010/#comments

 

 

 

 

Windows 용 OpenGL 설치파일 모음:      GL files for Windows (2010).zip

                                                              SOIL binary for MSVS 2010.zip

And