다음 이전 차례

9. 9. 무엇이든 물어보세요: OpenGL과 메사

9.1 9.1. OpenGL은 무엇입니까?

OpenGL은 Iris GL을 바탕으로 SGI에서 개발되어 몇년전에 산업계표준 으로 굳은 그래픽 프로그래밍 API입니다. 현재 OpenGL은 SGI, IBM, DEC, 그리고 마이크로소프트같은 회원을 포함하는 Architectural Revision Board (ARB - 아마 설계감독위원회쯤..?)에서 정의(definition)하고 관리합니다. OpenGL은 2차원 및 3차원 그래픽제어에서 필요로 하는 기능을 모두 제공합니다. 그리고 이것은 삼각형 및 다각형의 렌더링을 구사하는 파이프라인구조의 하드웨어에서의 가속환경에서 이루어집니다. 넓은 의미에서 본다면, OpenGL은 하드웨어가속을 사용하는 컴퓨터그래픽을 위한 막강한 도구라고도 할 수 있겠습니다.

9.2 OpenGL에 관한 추가정보는 어디서 얻을 수 있습니까?

OpenGL의 공식사이트는 ARB의 멤버들이 공식적으로 관리하며, 주소는 www.opengl.org입니다. 가장 추천할 만한 웹사이트는 Mark Kilgard씨의 "Gateway to OpenGL Info"라는 곳으로 주소는 reality.sgi.com/mjk_asd/opengl-links.html 입니다. 이 사이트는 참고서적으로의 포인터, 온라인 매뉴얼 페이지, GLUT, GLE, 메사, 다른 OS로의 포팅, 그리고 많은수의 데모와 툴을 제공합니다. OpenGL을 사용한 게임프로그래밍에 관심이 있다면 Listserv@fatcity.com를 통해 받아볼 수 있는 OpenGL-GameDev-L@fatcity.com 메일리스트에 참여하시기 바랍니다. 주의할 사항은, 이 리스트에서는 상당히 많은 수의 고급기술내용 메일이 오가기 때문에 하루에 거의 100통씩 오는 이메일을 관리하기 위해 procmail을 사용하는게 좋습니다. SET OpenGL-GameDev-L DIGEST명령어를 사용해서 밴드폭을 낮추는 것도 한 방법이 되겠습니다. 이 리스트는 OpenGL을 처음 배우는데 에 사용하기에는 알맞지 않습니다. 이메일리스트에서 다루어졌던 내용은 ListServ 프로그램으로 관리가 되기 때문에 INDEX OpenGL-GameDev-L, 그리고 GET OpenGL-GameDev-L "filename" 명령어를 사용해서 구독하기 이전에 무슨내용인지 보는것도 좋습니다.

9.3 글라이드는 OpenGL응용 소프트웨어입니까?

아닙니다. 글라이드는 부두그래픽(tm)과 부두러쉬(tm)에만 있는 기능을 사용하는 3Dfx社의 전용 API입니다. 3Dfx에서 사용할 수 있는 OpenGL은 아직 준비중에 있습니다(밑의 섹션을 참조하세요). 글라이드의 몇몇 기능은 OpenGL로의 확장이 필요하며 일부는 글라이드에 이미 도입이 되어 있습니다. ( paletted textures 같은것.) 리눅스용 OpenGL과 제일 비슷한 것은 Brian Paul의 메사와 David Bucciarelli의 메사부두드라이버가 있습니다.

9.4 3Dfx에서 만든 OpenGL드라이버가 있습니까?

3Dfx와 퀀텀3D의 웹사이트에서는 모두 부두그래픽(tm)용 OpenGL을 97년 사사분기에는 사용할 수 있게 하겠다고 합니다. OpenGL드라이버는 아직은 베타버젼으로만 있으며, 등록된 개발자에게만 문서로 명기된 베타테스트 계약에 동의함으로써 사용허가가 나옵니다. 리눅스용으로 포팅을 하는지 에 대한 여부는 발표되지 않았습니다.

9.5 3Dfx, 리눅스에서 사용할 수 있는 상업용 OpenGL드라이버같은게 있습니까?

상업용 OpenGL에서 부두그래픽(tm)을 지원하는지에 대해서는 잘 모르겠습니다. 이전에 알아보았을 때에는 MetroX와 XInside OpenGL 둘다 3Dfx와 리눅스의 지원을 하지 않았습니다.

9.6 메사는 무엇입니까?

메사는 Brian Paul씨가 OpenGL API를 이용해서 설계/코딩을 해주시고 다른 많은분들이 도와주셔서 만든 무료 애플리케이션입니다. 성능도 꽤 괜찮은 편이며 아직 공식적으로 인증이 되지는 않았지만 ARB에서 규정한 OpenGL의 규격과 거의 완벽하게 호환이 됩니다. 기존의 상업용 프로그램과 비교하더라도 훨씬 나은 완성도를 자랑합니다.

9.7 메사와 3Dfx와의 호환성은 어떻게 됩니까?

메사의 최신배포판인 MesaVer는 리눅스용 글라이드 2.4에서도 작동 합니다. 글라이드의 지원은 이전의 버전에서도 포함이 되었었지만 메사는 아직도 개발단계에 있기때문에 버그가 있거나 최상의 성능이 나지 않을수도 있다는 것을 염두해 두어야 합니다. 메사는 계속해서 향상되고 있고 버그들도 빨리 고쳐지고 있습니다. 메사 라이브러리를 다음의 FTP 사이트에서 얻어야 할 것입니다. ( iris.ssec.wisc.edu) 버그찾기나 하드웨어/드라이버의 제한사항에 관한 내용에 관심이 있으면 메일링리스트에 구독하시기 바랍니다. 메일리스트의 토론에 참여하기 이전에 최신 배포판을 사용하는것을 확인해 주십시오. 현재로써는 메사-3.0 이 준비중에 있습니다.

9.8 메사와 글라이드의 포팅 유연성

메사를 기반으로 한 애플리케이션은 보통 리눅스와 윈32용으로 나와있지만 사용되는 XWindow, Windows, GLX 혹은 WGL같은 시스템마다 최적화된 코드가 있을것입니다. 만약 GLUT나 qt를 사용한다면 시스템에 따른 특정셋업에 대한 염려는 하지 않아도 됩니다. 상대적 마우스움직임 샘플링 같은 작은 문제점들이 따르기는 하겠지만 지금까지 나와있는 GUI툴킷에서는 그런 문제를 다루지 않습니다. 메사와 글라이드는 도스용으로도 나와있습니다. 32비트 도스용으로 나온 메사와 글라이드는 Charlie Wallace씨가 관리해주시며 메사의 메인베이스의 최신판과 늘 버전을 맞추어 주셔 왔습니다. 도스용 메사와 글라이드의 최신판은 www.geocities.com/~charlie_x/ 에서 다운로드받을 수 있습니다.

9.9 메사에 관한 정보는 어디에서 얻을 수 있습니까?

메사의 홈페이지는 www.ssec.wisc.edu/~brianp/Mesa.html 입니다. www.iqm.unicamp.br/mesa/ 에서는 메사 메일링리스트에서 다루어졌던 내용을 저장하고 있습니다. 이 메일링리스트는 3Dfx와 글라이드의 문제만 다루는 곳이 아니지만, 3Dfx 하드웨어에서 메사의 사용법에 대해 알고 싶다면 여기에서 시작하는게 좋습니다.

9.10 메사 부두에 관한 정보는 어디에서 얻을 수 있습니까?

메사부두드라이버에 관한 최신정보는 www.hmw.caribel.pisa.it/fxmesa/ 에서 보실 수 있습니다. 관리자는 David Bucciarelli 씨로, tech. hmw@plus.it가 연락처 입니다.

9.11 메사에서 멀티 텍스쳐링을 지원합니까?

메사 2.6에서 멀티텍스쳐링은 지원이 안되지만 차후 발표될 메사 3.0에서는 지원이 될 예정입니다. 메사 3.0에서는, 디바이스 드라이버 에서 제공하는 익스텐션을 advertise 할 수 있게 할 것입니다. 하나, 혹은 두개의 TMU를 사용하는것은 부두그래픽(tm)과 부두2(tm)용 메사에서 런타임동안 테스트가 될 것입니다. OpenGL EXT_multitexture의 사용이 가능하면 OpenGL 1.2 개정판에서 명시된 것처럼 유저는 OpenGL EXT_multitexture익스텐션을 사용해야 합니다. 메사 3.0에서는 분리된 텍스쳐좌표 세트와 현재텍스쳐환경 블렌딩 모드를 지원하는 GL_SGIS_multitexture 익스텐션을 사용합니다. 하지만 이 작업은 미완성단계에 있습니다. OEM 지원의 acknowledgement 섹션을 참조하세요.

9.12 메사에서 싱글패스 trilinear mipmapping를 지원합니까?

single pass trilinear mipmapping용으로 복수의 TMU를 사용해야 성능을 저하시키지 않고 이미지 품질을 향상시킬 수 있습니다. 현재의 리눅스 글라이드버전에서는 벌써 이 기능이 도입되어 있습니다. 메사 2.6에서 아직 이기능은 지원하고 있지 않지만 메사 3.0에서는 이 기능을 지원하도록 준비하고 있는 단계입니다. (위의 멀티텍스쳐링을 참조 하세요.) 염두해야 할 사항은, single pass trilinear mipmapping 과 multitexturing은 서로 상호배타적 관계라는 것입니다. 유저는 두개의 텍스쳐를 싱글패스로 블렌드를 하던지, 아니면 두개의 mipmap resolution을 사용해서 levelsfull trilinear mipmapping 해야 합니다. 이것을 모두 합쳐서 사용하려면 하나의 파이프라인에 두개 이상의 Texelfx 가 필요합니다.

9.13 메사의 "윈도우해킹"이란 무엇입니까?

메사의 최신판은 리눅스의 XFree86에서 실험적으로 사용되는 기능으로 윈도우해킹을 구현합니다. 우선, 메사에서 사용되는 GLX 에뮬레이션은 부두그래픽(tm)보드에서 바로 사용된 프레임버퍼의 내용을 glXSwapbuffer 콜을 따라 비디오 메모리에 복사를 합니다. 이 기능은 윈도즈용 메사 에서도 사용가능합니다. 여기에서 XFree86 DGA가 비디오메모리를 제어 하는것때문이 아니라 X11 MIT SHM이 사용용됨으로써 PCI에 더욱 무리를 주게 됩니다. 이와같은 방법은 이론적으로는 SVGA와 같은 환경에서도 도입될 수 있습니다. 이렇게 함으로써 부두그래픽(tm)의 보드가 윈도우 에서 가속된 렌더링을 하는데 사용될 수 있고, 유저는 VGA패스스루(pass through)모드를 사용하지 않아도 된다는 장점이 있습니다. 패스스루방법을 사용하면 VGA카드의 출력신호의 품질이 나빠지게 됩니다. 이것은 EIZO F784-T같은 고급모니터에서 특히 잘 보입니다. 이 윈도우해킹은 부두러쉬(tm)에서는 지원이 안됩니다. 윈도우해킹은 아직 실험단계에 있으며 부두그래픽(tm)을 기반으로 한 보드에만 지원이 되는 사항입니다. 또, 윈도우 관리 시스템과 이벤트는 드라이버가 아닌 애플리케이션이 관리하므로 유저는 이상황에 맞추어 변경된 GLUT를 사용해야 합니다. 다음의 환경변수가 사용이 되는지 확인해 주십시오.


  export SST_VGA_PASS=1          # 비디오시그널 전환을 멈춤.
  export SST_NOSHUTDOWN=1        # 비디오시그널 전환을 멈춤.
  export MESA_GLX_FX="window"    # 메사 윈도우모드의 초기화.

만약 여기의 SST 변수중 어느 하나라도 빠트린다면 VGA카드는 다운이 되고 디스플레이의 제어를 잃게 됩니다. (X는 이렇게 디스플레이가 먹통이 되더라도 아직은 제어가 가능합니다.) 화면에 아무것도 안나올 때에 원상복구를 하기란 상당히 까다롭습니다. 끝으로, libMesaGL 라이브러리 는 복수의 클라이언트 인터페이스를 포함할 수 있습니다. 예를 들자면, GLX, OS메사, 그리고 fxMesa, SVGA메사의 인터페이스콜은 모두 libMesaGL.a 하나의 화일로 컴파일이 될 수 있습니다. 클라이언트프로그램은 이들을 자유로이 사용할 수 있으며, 주의만 한다면 이들을 동시에 사용할 수도 있습니다.

9.14 GLUT이란 무엇입니까?

Mark Kilgard씨의 GLUT 배포판에는 샘플 애플리케이션과 함께 괜찮은 유틸리티가 여럿 포함이 되어있습니다. GLUT는 reality.sgi.com/mjk_asd/glut3/ 에서 구할 수 있습니다. 최신판은 GLUT 3.6이며, GLUT 3.7 (GameGLUT로 알려져있음)에 대한 토론이 진행되고 있는 상황입니다. 최근에 Mark Kilgard씨가 SGI를 떠났으므로 GLUT을 구할 수 있는 장소의 주소가 바뀔 수도 있습니다. 하지만 아직까지는 SGI에서 다운을 받을 수 있습니다. GLUT의 메일링리스트는 glut@perp.com입니다. 다음을 이메일의 내용란 에 넣어서 majordomo@perp.com에 메일을 쓰시면 됩니다.


     help
     info glut
     subscribe glut
     end

GLUT는 더블버퍼, 윈도우, 이벤트, 그리고 하드웨어와 운영체제와 묶어진 작업을 제어하기 때문에 부두그래픽(tm)에서 GLUT를 사용하는것은 현재 메사용 GLX의 내부에서 개발이 되고있는 지원이 필요합니다. 하지만 GLUT는 웬만한 환경에서는 잘 작동합니다.
다음 이전 차례