HiTEL 게제동(GMA) 공개자료실

[WIN]다이렉트 사운드를 대신할...
작성자:류광(occam)
96-05-19
첨 부:[1673]wavemix.zip
안녕하세요... (이 글 갈무리 안해도 됩니다..포함되어 있습니다.) 윈도우즈로 게임을 제작하는 분들 이 DLL을 알고 계시는지.. 요즘 GDK 이야기가 많은데, 정작 쉽게 구할 수 있는 분들은 많지 않을 것입니다. GDK의 다이렉트사운드에는 못 미치지만 표준 API의 sndPlaySound 같은 것 보다는 훨씬 강력한 사운드 라이브러리를 올립니다. 마이크로소프트에서 만들었지만 공식적으로 지원하는 것은 아니라고 하네요. 공개로 알고 있습니다. 이것은 8개의 가상 채널에 비동기적으로 언제든지 개별적인 wav 화일을 재생할 수 있도록하? ? 것입니다. 미리 화일을 메모리에 올리고, 핸들을 얻어놓고, 얼마든지 섞어서 쓸 수 있는 거지요. 예를 들면 비행기 엔진음이 계속 깔리는 가운데 미사일 발사음이나 폭발음이 그 위에 겹쳐져서 날 수 있다는 이야기입니다... 다만 스테레오, 즉 패닝은 지원하는지 아닌지 잘 모르겠습니다. 올리는 화일는, DLL 화일과, DLL의 함수에 대한 정보를 알 수 있는 비베용 모듈, 그리고 DLL용 INI 화일, 그리고 지금 읽고 계시는 이 글의 화일입니다. 원래 비베 모듈에는 함수들을 편하게 쓸 수 있는 다른 고수준 함수들도 있었는데, 저 작권 관계상 구조체와 선언문만 포함시켰습니다. 구조체나 선언문은 마이크로소프트가 공개한 것이니 저작권 문제는 없겠지요. 이 화일들은 성안당의 비주얼베이직 게임 프로그래밍이란 책 에서 얻은 것입니다. C를 쓰시는 분들도 쉽게 헤더 화일로 변환할 수 있을 것입니다. 자료형중 Integer는 Int로, Long은 Long으로 하면 될꺼고, String * 1은 char입니다. 또 선언문 맨 끝의 자료형은 (예를 들면 Declare ....... (...) As Integer ) 리턴값의 자료형을 뜻합니다. 괄호 안은 인자들이구요. 그리고 ByVal이란 키워드는 함수 호 출시 Call by Value란 뜻이구요.. 비베는 기본적으로는 항상 Call by Reference로 하니까 주의해야 합니다. 단 스트링의 경우 비베는 ByVal로 한다고 해도 항상 Call by Reference로 갑니다. 대신 ByVal로 하면 끝에 Null이 붙는 C 스타일의 스트링이 됩니다. 자세한 변환 방식은 다른 책들을 참고하시고.... 간단한 사용법을 설명 하자면, WaveMixInit (이것은 WaveMix.ini 화일을 참조해서 초기화함 WaveMixConfigureInit로 직접 인자들을 지정해서 초기화할 수도 있다고 함..) 로 DLL을 활성화시키고, WaveMixActivate 로 사운 드 장치를 확보하고, WaveMixOpenWave로 웨이브 화일을 열고, WaveMixOpenChannel 로 채널을 할당하고, 구조체 MIXPLAYPARAMS를 채워서 WaveMixPlay로 재생하고, WaveMixCloseChannel로 채널들을 닫고, WaveMixFreeWave로 웨이브 화일들을 메모리에서 내리고, WaveMixCloseSession으로 웨이브믹스 사용을 끝냅니다... 참, 중간에 재생을 멈추는 것은 WaveMixFlushChannel이군요. 아마 선언문을 보면 짐작하실 수 있을 것입니다. 구조체의 각 멤버 이름들이나 함수 이름들을 보면 말이지요. (헝가리안 명명법을 지키고 있는것 같습니다 ) 저도 아직 사용해보지 않아서 각 인자들의 의미나 상수등을 다 알지는 못하거든요. 책에도 그리 자세히는 안 나와 있는데, 마이크로소프트의 정보를 구할 수 있는 분이 좀 자세한 정보를 주셨으면 좋겠군요. 그리고, 비베로 게임을 만들고자 하는 분들과 교류를 바랍니 다. 그럼