Home Map Index Search News Archives Links LF 소개
[Top bar]
[Bottom bar]
[Foto del Autor]
글쓴이: Phil Ross

순서:

하드웨어 분석 : 3Dfx 그래픽 카드

요약:

3Dfx Interactive사의 3D칩셋이 전세계의 고수준 그래픽환경을 변화시키고 있습니다....또한 리눅스를 지원합니다!




글을 시작하면서

일년 전쯤, 3Dfx 인터랙티브 사에서 PC 상에서의 3차원 그래픽에 대한 사람들의 생각을 바꿔 놓을 만한 새 3D 칩셋을 발표했습니다. 3Dfx 사의 칩셋이 나오기 전에는 가정용 컴퓨터 시스템에서 적정 가격으로 고품위의 3차원 그래픽 기능을 갖출 수가 없었습니다. 고품위의 그래픽은 값비싼 전용 하드웨어를 장착한 SGI나 선 등의 고가의 웍스테이션에서나 볼 수 있었습니다. 넘버 나인(Number Nine), 다이아몬드 멀티미디어(Diamond Multimedia), 매트록스(Matrox) 등의 PC용 비디오 어댑터 제조회사들은 3D 기능을 지원하는 그래픽 카드 시장에 적절한 가격의 비디오 어댑터를 내놓고 있었습니다. 하지만 그 기능이 SGI나 다른 웍스테이션의 값비싼 3D 하드웨어와 비교하면 너무 제한되어 있었습니다.

부두 3Dfx라는 이름의 3Dfx 칩셋이 출시되면서, 일반 사용자들도 고품위의 3D 그래픽을 쓸 수 있게 되었습니다. 이 칩셋의 성능은 의심할 여지없이 고품위의 3D 그래픽을 가정용 컴퓨터에서도 쓸 수 있게 하려는 부단한 노력에 있어서 중요한 기준점이 될 것입니다. 이전의 다른 비디오 칩셋들의 3D 기능은 z 버퍼링과 그로드 셰이딩 정도로 제한되어 있었습니다(조금 나중에 나온 것들은 제한적이긴 하지만 텍스쳐 매핑을 지원하기도 했습니다). 게다가 이 기능들도 특정 해상도나 특정 색상 수에서만 가능한 경우도 있었습니다. 안타깝게도, 응용 프로그램에서 이런 기능들을 사용하려면 CPU 자원을 많이 필요로 했습니다..

비디오 어댑터들의 3D 기능의 한계

비디오 어댑터들의 기능이 얼마나 제한되어 있는지 예를 들어 보겠습니다. Z 버퍼링을 지원한다고 하지만 비디오 메모리는 픽셀들의 Z 좌표를 저장하는 데에만 쓰이고 드라이버에는 그 좌표를 저장하는 코드만 있을 뿐입니다. 고해상도나 색상수가 많은 모드에서는 더 많은 메모리가 필요하기 때문에 이런 Z 버퍼링은 낮은 해상도와 적은 색상수에서만 사용가능합니다. 설사 비디오 메모리가 Z 좌표를 저장할 만큼 충분하다 해도 응용프로그램에서는 새 픽셀의 Z 좌표와 비디오 메모리의 Z 버퍼를 비교하는 데 CPU를 사용하게 됩니다. 이와 같은 비교를 수행하는 데에는 CPU 자원을 엄청 필요로 하기 때문에 이런 비디오 어댑터의 Z 버퍼링 기능은 전형적인 Z 버퍼 병목현상을 제거해 주지 못합니다. 너무 깊이 들어갔는지도 모르겠는데, 3D를 지원한다고 주장하는 비디오 어댑터들과 3Dfx 칩셋의 차이를 아는데 꼭 필요한 것은 아니므로 그냥 넘겨도 되겠습니다.

부두 3Dfx 칩셋의 기능

부두 3Dfx 칩셋은 같은 가격대의 비디오 칩셋 중에서 제일 나은 3D 성능을 갖추었다는 말을 들을 만합니다. 이 칩셋은 그로드 셰이딩, 뎁쓰 버퍼링(z 버퍼링, w 버퍼링 등), 알파 블렌딩, 포깅, 크로마 키잉, 디더링 등 기본적인 3D 기능에서 뛰어난 성능을 보입니다. 게다가, 원근감 있는 텍스쳐 매핑, 트리리니어 밉매핑, 텍스쳐 라이팅, 서브 픽셀 코렉션, 텍스쳐 스페이스 디컴프레션 등도 가능합니다. 이 모든 기능들이 응용 프로그램에 거의 부하를 주지 않고 온전히 하드웨어에서 처리됩니다.
응용프로그램은 단지 3D 그래픽 환경과 좌표 설정만 해 주면 되는 것입니다. 현재는 부두 3Dfx가 좌표 설정을 지원하고 있지 않지만, 요즘 CPU들이 이런 작업을 수행하는 데 넉넉한 프로세서 파워를 갖고 있기 때문에 그다지 문제가 되지는 않습니다. 하지만 부두2라고 이름붙여진 차세데 3Dfx 칩셋에서는 이 기능을 지원하여 더욱 뛰어난 그래픽 스피드를 제공할 것입니다. 현재 테스트용으로 부두2를 장착한 비디오 어댑터가 훨씬 빠른 속도를 기록하는 것을 볼 수 있습니다. 어쨌건 중요한 것은, 현재의 부두 칩셋도 가격대 성능비의 측면에서 탁월하다는 것입니다.

부두 3Dfx 칩셋의 한계

아쉽게도 부두 3Dfx 칩셋에도 한계가 있습니다. 그 중 제일 주된 것은 이 칩셋이 전화면(full screen) 렌더링 밖에 못한다는 것과 단독으로 설치되어서는 제대로 사용될 수 없다는 점입니다. 3Dfx 칩셋을 사용하는 비디오 어댑터를 쓸 때는 또 다른 비디오 카드를 하나 더 설치해서 함께 동작하도록 해야 합니다. 3Dfx 칩셋을 사용하는 비디오 어댑터는 다른 어댑터의 보조 역할을 할 뿐이기 때문입니다. 동작하는 방식은 운영체제가 평상시에는 보통 비디오 어댑터를 사용하다가, 렌더링을 해야 할 경우에 3Dfx 드라이버를 통해 3Dfx 칩셋을 사용하게 됩니다. 그러면 3Dfx 칩셋이 구동이 되어 응용프로그램이 호출한 글라이드 함수들에 따라 렌더링을 수행하게 됩니다.

3Dfx 어댑터가 없는 일반 환경일 때, 비디오 어댑터는 마더보드 상의 버스 슬롯에 꽂히고, 출력 단자가 모니터에 연결됩니다. 이 단자를 통해 비디오 어댑터의 출력이 모니터 화면에 나타나게 되는 것입니다. Monster3D, Pure3D같은 3Dfx 비디오 어댑터들은 "관통" 시스템이라는 것을 써서 일반 비디오 어댑터와 3Dfx 비디오 어댑터가 같은 모니터를 쓸 수 있게 합니다. 이 경우 두 어댑터가 모두 마더보드의 슬롯에 꽂히게 되고, 일반 비디오 어댑터의 출력이 관통 케이블을 통해 3Dfx 어댑터의 입력으로 연결됩니다. 케이블은 3Dfx 어댑터에 포함되어 있습니다. 다음 3Dfx 어댑터의 출력이 모니터로 연결됩니다. 보통 때에는, 일반 비디오 어댑터가 비디오 신호를 만들어서 3Dfx 어댑터의 입력으로 보내고, 3Dfx 어댑터는 이 신호를 그냥 모니터로 보냅니다. 응용프로그램이 3Dfx 드라이버를 구동하게 되면, 3Dfx 어댑터는 관통 케이블을 막아버리고, 일반 비디오 어댑터의 신호는 더 이상 모니터로 전달되지 않습니다. 대신, 3Dfx 어댑터에서 만든 비디오 신호가 모니터로 전달되게 됩니다. 3Dfx 어댑터에서 수행한 렌더링 결과가 모니터로 전달되다가 응용프로그램에서 드라이버에 중지명령을 보내면 3Dfx의 기능은 중지되고 일반 어댑터의 비디오 신호가 다시 모니터로 전달되게 됩니다.

통로 환경에서는 일반 비디오 어댑터의 출력이 화면에 나타나지 않기 때문에, X 윈도우 같이 특정 창에서 렌더링을 수행하려는 응용 프로그램에서는 문제가 될 수도 있습니다. 3Dfx 어댑터는 이런 응용 프로그램을 위해 좀 더 나은 방법을 제공하고 있습니다. 하지만 모니터가 하나 더 있어야 합니다. 모니터가 2대인 경우, 한 대를 일반 비디오 어댑터의 출력에 연결하고, 또 한 대를 3Dfx 어댑터에 연결합니다. 이렇게 하면, 한 모니터는 늘 일반 어댑터의 비디오 신호를 보여줄 것입니다. 다른 모니터에서는 3Dfx 어댑터가 초기화될 때까지 아무 것도 나타나지 않습니다. 3Dfx 어댑터가 동작하기 시작하면, 한 모니터에서는 일반 윈도우 시스템의 화면이 나타나고, 다른 모니터에서는 3Dfx 어댑터의 출력을 전화면으로 보여줄 것입니다.

3Dfx사에서 창에서의 렌더링을 지원하는 3Dfx 러쉬라는 새로운 칩세트를 내놓았습니다. 러쉬 칩세트를 사용하는 어댑터는 이 칩세트와 프레임 버퍼를 공유하는 2D 칩세트를 따로 갖고 있게 됩니다. 아직은 리눅스를 지원하지 않기 때문에 여기서는 다루지 않겠지만, 개발은 진행중입니다.

3Dfx 칩세트의 또 다른 한계는 요즘의 일반 비디오 카드들이 지원하는 고해상도를 지원하지 못한다는 점입니다. 요즘의 비디오 카드들이 대개 1280x1024, 1600x1200이나 그 이상의 해상도를 지원하는데 비해 3Dfx 비디오 카드들은 640x480 이상을 지원하지 못합니다. 하지만 그다지 심각한 문제점은 아닙니다. 3Dfx 칩세트의 향상된 안티 에일리어싱과 텍스쳐 필터링 기능 덕에, 많은 객체들을 거의 화소화하지 않고 640x480 해상도로 그릴 수 있습니다. 실제로, 단지 화면만을 봐서는 3Dfx를 사용하는 응용프로그램의 해상도를 알아내기가 힘들 정도입니다.

몬스터3D 같은 저가형 3Dfx 카드는 640x480까지만 지원합니다. 어떤 카드는 800x600으로 맞출 수도 있는데, 이 경우 뎁쓰 버퍼링과 알파 버퍼링에 쓰일 메모리가 해상도를 높이는 데 쓰이기 때문에 이 두 기능을 못하는 것으로 알고 있습니다. 퀀텀3D사의 고가형 제품의 경우에는 뎁쓰 버퍼링과 알파 버퍼링을 수행하면서 800x600을 지원합니다.

3Dfx 칩세트를 사용하는 제조업체들

3Dfx 인터랙티브사가 이 고성능 3D 칩세트를 만드는 회사이지만, 이 회사는 이 칩세트를 사용하는 비디오 어댑터를 생산하지 않습니다. 다이아몬드 멀티미디어, 오키드 테크놀로지, 카노푸스 등에서 이 칩세트를 사용한 비디오 어댑터를 생산하고 있습니다. 다이아몬드사는 Monster3D, 오키드사는 Righteous3D, 카노푸스사는 Pure3D를 각각 생산합니다. 퀀텀 3D라는 회사는 3Dfx사에서 분리된 회사로 PixelFx, TexelFx 장치를 여러개 두거나 프레임버퍼나 텍스처 램을 늘리는 등의 부두의 향상된 기능을 활용한 비디오 어댑터를 만들고 있습니다. 이 제품들은 Obsidian 3D 모델로 알려져 있습니다. 3Dfx사의 홈페이지(www.3dfx.com)에 가 보시면 3Dfx 칩세트를 사용해서 비디오 어댑터를 만드는 회사들의 전체 목록이 나와 있습니다.

부두 3Dfx의 내부

부두 칩세트는 각각의 부두 부속 시스템이 합쳐진 향상되고 유연한 그래픽 렌더링 엔진이라고 할 수 있습니다. 부속 시스템은 여러 가지 조합으로 구성이 가능한데, 가장 단순한 구성은 부두 부속 시스템 단 하나만으로 구성하는 것입니다. 각 부속 시스템은 PixelFX 유닛과 TexelFX 유닛이라고 하는 분리된 렌더링 프로세서로 구성됩니다. PixelFX는 뎁쓰 버퍼링, 그로드 셰이딩 등 픽셀 관련 작업을 담당하는 유닛입니다. TexelFX는 텍스쳐 필터링, 프로젝션 등 텍스쳐 관련 작업을 담당하는 유닛입니다. 이 두 유닛이 합쳐져서 빛 받은 텍스처 등의 효과를 만들어 냅니다. 각각의 유닛은 자신의 기능을 수행하는 데 쓰는 각각의 비디오 메모리를 갖고 있습니다. PixelFX는 이 메모리를 프레임버퍼로서 픽셀을 저정하는 데 사용하고, TexelFX는 이 메모리를 텍스처를 저장하는 데 사용합니다.

하나의 부두 부속 시스템에는 하나의 PixelFX 유닛이 들어가지만, TexelFX 유닛은 하나가 들어갈 수도 있고, 텍스처 매핑 속도를 향상시키기 위해 두 개나 세 개까지 들어갈 수도 있습니다. 게다가, 하나의 부두 엔진은 여러 개의 부속 시스템으로 구성되어서 엔진의 렌더링 율(率)을 두배로 높이기 위해 주사선 인터리빙을 쓸 수도 있습니다. 성능 향상을 위해 이렇게 구성된 시스템은 이미 검증된 바 있는 SGI의 고성능 웍스테이션보다 나은 성능을 제공합니다. 물론 이런 구성은 보통의 부두 비디오 어댑터의 단순한 구성에 비해 상당히 값이 비싸고 대부분의 사용자들에게는 필요없는 부분이긴 합니다.

3Dfx 프로그래밍

3Dfx 인터랙티브 사에서는 제품을 역공학으로 불법복제할 것에 대한 우려 때문에 칩셋에 대한 레지스터 레벨의 프로그래밍 문서를 내놓고 있지 않습니다. 대신, 하드웨어 위에서 마이크로 레이어 역할을 하는 소프트웨어인 글라이드라는 SDK(Software Development Kit)를 제공합니다. 글라이드는 소프트웨어 라이브러리 안에 들어있는 함수들로서 자세한 레지스터 내역은 숨긴 채 3Dfx 칩셋에 대한 프로그래밍용으로 비교적 쉬운 API를 제공합니다. 이로 인한 성능 저하는 거의 없습니다. 라이브러리는 3Dfx사가 지원하는 여러 플랫폼(리눅스 포함) 용으로 나와 있고 API에 대한 자세한 설명서도 함께 제공됩니다. 개발자들은 이 API를 이용해서 자신이 개발하는 3D 응용프로그램이 3Dfx 칩셋을 사용하도록 할 수 있습니다. 글라이드는 오픈GL이나 다이렉트3D와는 달리 아주 저수준의 그래픽 라이브러리이기 때문에 리스트 보이기나 변환 함수 같은 고수준의 3D 그래픽 기능은 제공하지 않습니다. 단지 3Dfx 칩셋의 레지스터에 대한 약간의 추상화만 제공할 뿐이고 3Dfx 칩셋에 구현되어 있는 소프트웨어 함수만을 제공할 뿐입니다. 글라이드를 리눅스용으로 구현한 사람와 얘기를 해 봤는데, 라이브러리가 아주 간단하다고 했습니다. 글라이드 함수에 매개변수를 정확히 전달하기만 하면, 함수는 단지 그 값을 레지스터에 넣고 3Dfx 칩셋을 구동시켜 렌더링을 시작합니다

그렇다고 오픈GL이나 다이렉트3D 개발자가 3Dfx용 응용프로그램을 개발하지 못한다는 얘기는 아닙니다. 오픈GL 드라이버와 다이렉트3D 드라이버가 글라이드를 쓸 수 있도록 개발되었기 때문에 개발자는 그냥 오픈GL이나 다이렉트3D API를 쓰면 되고 그러면 드라이버가 고수준 함수와 기능을 3Dfx 칩셋에서 돌아가는 글라이드용으로 바꿔주게 됩니다. 아주 빠르고 효율적인 개발 방식이라고 할 수 있습니다.

3Dfx에서 Mesa 사용하기

Mesa(오픈GL과 같은 기능을 하는 공짜 프로그램. 여러 운영체제에서 돌아감)와 글라이드가 통신하도록 해 주는 드라이버가 개발되어 리눅스나 윈도95에서 오픈GL을 쓰는 응용프로그램이 하드웨어 지원을 받을 수 있게 되었습니다. 리눅스도 공짜고, 리눅스용 컴파일러도 공짜고, Mesa도 공짜고, 3Dfx사에서 주는 글라이드 SDK도 공짜니까, 일단 이것들만으로도 아주 싼 값에 아주 성능이 우수한 오픈GL 개발 시스템을 구성할 수 있습니다. 아쉽게도 알파 CPU나 스팍 CPU에서 돌아가는 리눅스용의 글라이드 SDK는 아직 없기 때문에 현재는 인텔 386 계열 플랫폼에만 해당됩니다.

이 글을 쓰고 있는 현재, 메사의 최신 버전은 2.5이고 2.6 베타 버전이 테스트중입니다. 메사 드라이버는 성능이 아주 뛰어나서 평면 셰이딩, 그로드 셰이딩을 이용한 점, 선, 다각형 렌더링의 가속을 할 수 있고 텍스쳐 매핑, 뎁쓰 버퍼링, 포깅, 블렌딩 등도 가능합니다. 앞에서 부두 3Dfx 칩셋은 전화면 렌더링만이 가능하다고 얘기했지만, 메사 드라이버를 조금만 수정하면 윈도우에서의 렌더링도 가능합니다. 3Dfx의 프레임 버퍼 데이타를 PCI 버스를 통해 일반 비디오 카드의 비디오 램으로 보내도록 드라이버를 수정하는 것입니다. 3Dfx의 전화면 렌더링보다는 느리지만, 메사로 소프트웨어 렌더링만 하는 것보다는 훨씬 빠릅니다.

Mesa는 메사 ftp 싸이트(ftp://iris.ssec.wisc.edu/pub/Mesa)에서 다운로드할 수 있습니다. Mesa는 두 가지 형태로 배포됩니다. MesaLib라는 이름으로 시작하는 것은 주 라이브러리와 인클루드 파일이 들어 있는 파일이고 MesaDemos라는 이름으로 시작하는 것은 데모 파일을 모아 놓은 파일입니다. 설치하려면 압축을 풀고 압축을 풀면서 생긴 디렉토리로 현재 디렉토리를 옮깁니다. 이제 메사를 빌드하는 데 몇가지 옵션이 있습니다. 메사 2.5에는 속도 향상을 위해 인텔 386 어셈블리 언어로 재작성한 몇몇 변환 루틴이 있습니다. 하지만 약간의 버그가 있습니다.(2.6 베타 버전에서는 수정되었습니다.) 3Dfx 지원 기능을 사용하되 어셈블리 루틴은 쓰고 싶지 않다면, "make linux-glide"라고 입력하십시오.(물론 따옴표는 빼구요.) 어셈블리 루틴이 포함된 3Dfx 지원 기능을 사용하고 싶다면 "make linux-386-glide"라고 치십시오.(역시 따옴표는 빼는 겁니다.) 메사 2.6에는 메이크 파일에 컴파일러 최적화 기능이 들어 있어서 유명한 GlQuake, GlQuekeII 등의 게임용으로 메사를 최적화하는 코드를 만들어 내도록 컴파일러를 설정해 줄 수 있습니다. GlQuake용으로 최적화하고 싶다면 메사를 빌드할 때 "make linux-386-quake-glide"라고 입력하시면 됩니다

Mesa 빌드를 끝낸 다음에는, 몇가지 방식으로 설치할 수 있습니다. 한가지는 인클루드 디렉토리와 라이브러리 디렉토리에 있는 파일들을 /usr/include와 /usr/lib 디렉토리 또는 /usr/local/include와 /usr/local/lib 디렉토리에 넣는 것입니다. 아니면 아무 디렉토리나 리눅스의 동적 링커가 찾을 수 있는 디렉토리에 집어 넣어도 됩니다. 동적 링커가 찾는 디렉토리는 /etc/ld.so.conf 파일에서 지정합니다. 메사가 워낙 빠른 속도로 개발이 되고, 또 제가 베타 버전 테스트하는 걸 좋아하기 때문에, 저는 각각의 Mesa 버전마다 다른 디렉토리에 보관합니다. 그러고서 사용할 버전을 바꿀 때마다 ld.so.conf 파일의 내용을 바꿔 사용할 버전의 디렉토리를 찾도록 해 주면 되는 것이지요. 현재 저는 /usr/local/Mesa-2.5 디렉토리에 버전 2.5의 인클루드 파일(/usr/local/Mesa-2.5/include)과 라이브러리 파일(/usr/local/Mesa-2.5/lib)을 보관하고 있고 버전 2.6은 /usr/local/Mesa-2.6b1, /usr/local/Mesa-2.6b2 등에 보관하고 있습니다. 어떻게 할 것인지는 여러분 마음이지만, 한가지 빠뜨리면 안되는 아주 중요한 부분이 있습니다. 새 라이브러리를 추가하거나 /etc/ld.so.conf 파일의 디렉토리를 바꿀 때 반드시 ldconfig를 실행해야 하는 것입니다. 그래야만 라이브러리 디렉토리 안에 있는 링크들이 알맞게 조정되고 그 밖의 설정들이 맞춰집니다. 지금 링커가 어느 라이브러리를 쓰고 있는지 알고 싶을 땐 lpconfig를 실행할 때 -p 옵션을 주면 됩니다. 응용 프로그램이 메사의 어느 버전을 쓰는지 알고 싶을 땐

ldconfig -p | grep Mesa

라고 입력하면 사용하고 있는 메사 라이브러리 버전이 나타나게 됩니다.

메사 설치가 끝났으면 이제 실행할 준비가 된 것입니다. 메사를 써서 3Dfx 기능을 사용하려면 root로서 실행해야 합니다. 또한 사용하고 있는 X서버를 픽셀당 16비트의 컬러 뎁쓰로 설정해야 합니다. 데모 버전을 받아서 언팩한 경우는 메사를 빌드하기 전에 컴파일되어 있어야 테스트를 할 수 있습니다.

메사를 실행하는 데는 3가지 방식이 있습니다. 첫째, 3Dfx 기능을 전혀 쓰지 않고 소프트웨어로만 렌더링을 하는 방식입니다. 이게 기본 설정입니다. 3Dfx 기능을 사용하려면, 환경 변수를 설정해야 합니다. 3Dfx 기능을 전화면 모드에서 사용하고 싶을 땐
MESA_GLX_FX=fullscreen

이라고 설정하면 됩니다.
메사를 X윈도에서 사용하는 것은 일종의 꽁수를 쓴 것입니다. 메사를 실행할 때, X서버는 3Dfx가 존재하는지조차 모릅니다. 실제로는 어떤 일이 일어나느냐 하면, 창이 하나 열리고 3Dfx가 초기화되어 렌더링할 준비를 합니다. 마우스 커서가 X서버 상에 있는 메사 창 밖으로 나가면, 메사 프로그램에서는 더 이상 키보드 입력이나 마우스 이벤트를 받을 수 없게 됩니다. 모니터를 하나만 사용할 경우, 윈도우 매니저가 대화형 윈도우 플레이스먼트를 지원한다면 그 기능을 사용하도록 하십시오. 안 그러면, 메사를 실행하고서, 혹시 3Dfx가 죽는 경우 마우스 커서를 창 안으로 옮기지 못하게 될 수도 있습니다. 메사 프로그램을 고쳐서 마우스 커서가 래핑되게 하는 것도 한 가지 방법입니다. 즉 마우스 커서가 메사 창 안으로 들어온 다음에는 절대 창 밖으로 못 나가게 하는 것입니다. 커서가 창의 경계까지 오면 자동으로 창의 중앙으로 가도록 합니다(마우스 래핑).

응용프로그램에서 윈도우의 렌더링작업시 3Dfx를 사용하게 하려면 별도의 환경변수를 설정해 주어야 합니다. 설정은 다음과 같이 합니다.

SST_VGA_PASS=1
SST_NOSHUTDOWN=1

이렇게 설정한 다음 MESA_GLX_FX=window라고 설정합니다. 그 다음에 메사를 실행하면 소프트웨어 렌더링만 사용하는 것보다 나은 렌더링 결과를 얻을 것입니다.

더 자세히 알고싶으신 분은:
리눅스포커스 한국어팀
Phil Ross
LinuxFocus 2000

번역상의 오류나 기타 하실 말씀을 리눅스포커스에 알려 주세요
번역 정보:
en -> kr Ahn Jehyung

2000-02-25, lfparser version 1.2b 을 이용하여 생성되었슴.