openallistener.h

来自「游戏音频程序设计-Beginning.Game.Audio.Programmin」· C头文件 代码 · 共 62 行

H
62
字号
// OpenALListener.h: interface for the COpenALListener class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_OPENALLISTENER_H__6D74522D_7824_4DE6_8CC1_D4703078C103__INCLUDED_)
#define AFX_OPENALLISTENER_H__6D74522D_7824_4DE6_8CC1_D4703078C103__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <al.h> // main openAL header file
#include <alu.h> // Open AL utilities header
#include <stdio.h>

class COpenALListener  
{
public:
	COpenALListener();
	virtual ~COpenALListener();

  void SetPosition(float x, float y, float z) { alListener3f(AL_POSITION, x, y, -z); }
  void GetPosition(float &x, float &y, float &z) {
    x = y = z = 0.0f;
    alGetListener3f(AL_POSITION, &x, &y, &z);
    z *= -1;
  }

  void SetVelocity(float x, float y, float z) { alListener3f(AL_VELOCITY, x, y, -z); }
  void GetVelocity(float &x, float &y, float &z) {
    x = y = z = 0.0f;
    alGetListener3f(AL_VELOCITY, &x, &y, &z);
    z *= -1;
  }

  void SetOrientation(float lookatx, float lookaty, float lookatz, float upx, float upy, float upz) { 
    float values[6];
    values[0] = lookatx; values[1] = lookaty; values[2] = -lookatz;
    values[3] = upx;     values[4] = upy;     values[5] = -upz;
    alListenerfv(AL_ORIENTATION, values);
  }
  void GetOrientation(float &lookatx, float &lookaty, float &lookatz, float &upx, float &upy, float &upz) {
    float values[6];
    alGetListenerfv(AL_ORIENTATION, values);
    lookatx = values[0]; lookaty = values[1]; lookatz = -values[2];
    upx = values[3];     upy = values[4];     upz = -values[5];
  }

  void SetGain(float value) { alListenerf(AL_GAIN, value); }
  float GetGain() {
    float value = 0.0f; alGetListenerf(AL_GAIN, &value);
    return(value);
  }





};

#endif // !defined(AFX_OPENALLISTENER_H__6D74522D_7824_4DE6_8CC1_D4703078C103__INCLUDED_)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?