View Full Version : How to use from the DirectSound in OpenGL

Ehsan Kamrani
10-29-2005, 07:23 AM
Hi there
I want to add the sound to my program. All the objects have been drawn with OpenGL. As i use from the DirectSound to play the 3D sounds, i can't use from the OpenGL matrices. But it seems that i can get the information of the model-view matrix to specify the sound position(?)As an example assume that i have used from the following code to draw my object:

glRotatef( angle, 0.0f, 1.0f, 0.0f );
glTranslatef( xpos, ypos, zpos );

Now i want to add a sound to my object. When my object is transformed, i should find the new position to insert my sound. So how can i find the new position of my object to specify the position of my sound?

10-29-2005, 07:58 PM
These are completely different things, you need to render your sound using sound APIs it has nothing to do with OpenGL.


10-31-2005, 11:33 AM

Sorry initially I assumed the question was purely about sound and closed the thread.

What you can do to get the position of the object is take the centroid of it (or whatever part on the object emits the sound) and transform it through the appropriate matrixes, probably the modelview matrix. You may have to create this yourself (games often need matrixes like object position lying aorund for collision detection etc). So get a decent matrix library and multiplying the position through the matrix for the object position and/or the viewing depending on what you need for the spatialized audio lib you use should give you the correct position.

You should be able to write or download a matrix/vector library that performs simple stuff like matrix rotates translates etc and supports vector operations through them. Most 3D games have a reasonably optimized vectot & matrix math library somewhere in their codebase and there are libraries available for free online.

Such a library ships with "OpenGL Game Programming", a book I know you have but watch out there's a bug in the vector dot product AFAIK, you can easily fix this though.