2011-03-27 5 views
2

ogre3d 엔진에서 fmod 용 Soundmanager (클래스) (래퍼)에 문제가 있습니다. 다음과 같은 코드는 여기에 있습니다.Ogre3d 용 Fmod 래퍼 (soundManager) 문제

ISoundManager.h 누군가가 원한다면 업로드 하겠지만 지금은 2 개 이상의 하이퍼 링크를 업로드 할 수 없습니다.

` SoundManager *soundManagerPtr = new SoundManager; 

    soundManagerPtr->Initialize(); 

    int mySound1 = soundManagerPtr->CreateStream(Ogre::String("boing.wav")); 
    int channel1 = 0; 

    soundManagerPtr->PlaySound(mySound1, headNode, &channel1); 

    delete soundManagerPtr;` 

모든 것이 괜찮습니다, 사운드가로드되지만는 PlaySound() :

나는 사운드를 재생하는 간단한 코드 조각이

http://codeviewer.org/view/code:18ca SoundManager.h http://codeviewer.org/view/code:18c9

SoundManager.cpp가

함수는 오류를 throw하지 않으며 사운드를 재생하지 않습니다. 나는 ogre3d 공개 토론에 그러나 아직 해결책 없음을 요구하고 있었다.

+0

오우거는 예외는 아니지만 오류 코드를 사용하는 것으로 보입니다. 오류가 기록되는지 여부를 확인할 수 있습니까? –

+0

@ Polybos : 오우거는 예외를 사용합니다. 그러나 SoundManager는 그렇지 않습니다. 아직 CPP 파일을 보지 않았습니다. –

+0

@ViteFalcon 저는 SoundManager를 보았습니다. –

답변

0

나는 SoundManager를 업데이트해야한다고 생각하는데, 이는 frameStarted()에 의해 완료되었습니다. 즉, 사운드가 재생되기 시작하면 root->startRendering();을 사용하여 Ogre 애플리케이션을 실행해야합니다. 너 그거 해봤 니? 위의 코드는 불완전한 경우 (실제로 문제가있는 경우) 또는 렌더링 할 그래픽을 시작하여 SoundManager의 업데이트를 가져와 SoundManager의 frameStarted를 호출해야합니다.

2

신속하게 SoundManager 코드를 확인한 결과 "PlaySound"함수가 FMOD "playSound"함수를 호출하는 것으로 나타납니다. FMOD에서 "playSound"는 블로킹 동작이 아니며 다른 스레드에서 사운드 재생을 시작한 다음 반환합니다. 그래서 사운드 매니저를 즉시 지우고 있기 때문에 아직 아무 것도 연주 할 기회가 없습니다.

+1

답장을 보내 주셔서 감사합니다. 내 문제였습니다. 삭제 soundManagerPtr을 삭제했습니다. 라인 및 모든 잘 작동합니다. 난 그냥 소멸자 어딘가에 넣어해야하고 ... 괜찮을거야 :) – Patryk