
00001 //***************************************************************************** 00002 // File : gzAudioEngine.h 00003 // Module : 00004 // Description : Class definition of stub calls for AAL 00005 // Author : Anders Modén 00006 // Product : Gizmo3D 2.1.1 00007 // 00008 // Copyright © 2003- Saab Training Systems AB, Sweden 00009 // 00010 // NOTE: Gizmo3D is a high performance 3D Scene Graph and effect visualisation 00011 // C++ toolkit for Linux, Mac OS X, Windows (Win32) and IRIX® for 00012 // usage in Game or VisSim development. 00013 // 00014 // 00015 // Revision History... 00016 // 00017 // Who Date Description 00018 // 00019 // AMO 060801 Created file 00020 // 00021 //****************************************************************************** 00022 00023 #ifndef __GZ_AUDIO_ENGINE_H__ 00024 #define __GZ_AUDIO_ENGINE_H__ 00025 00032 #include "gzBasicTypes.h" 00033 #include "gzAudioAbstractionLayer.h" 00034 #include "gzBase.h" 00035 00037 00038 enum gzAudioEngineType 00039 { 00040 GZ_AUDIO_ENGINE_NONE = -1 , 00041 GZ_AUDIO_ENGINE_DEBUG = 0 , 00042 GZ_AUDIO_ENGINE_SOFTWARE = 1 , 00043 GZ_AUDIO_ENGINE_OPENAL = 2 , 00044 GZ_AUDIO_ENGINE_DIRECT_SOUND = 3 00045 } ; 00046 00047 const gzUByte GZ_MAX_AUDIO_ENGINES=10; 00048 00049 //-------------------- engine dependant implementations ------------------------ 00050 00051 //****************************************************************************** 00052 // Class : gzAudioEngine 00053 // 00054 // Purpose : - 00055 // 00056 // Notes : - 00057 // 00058 // Revision History... 00059 // 00060 // Who Date Description 00061 // 00062 // AMO 060801 Created 00063 // 00064 //****************************************************************************** 00065 class gzAudioEngine 00066 { 00067 public: 00068 00069 /* 00070 00071 // ------------------- extensions. Not basically supported by Engine -------------------- 00072 00073 GZ_GRAPH_EXPORT static inline gzBool has_vertex_array() { return s_vertex_array; } 00074 GZ_GRAPH_EXPORT static inline gzBool has_polygon_offset() { return s_polygon_offset; } 00075 GZ_GRAPH_EXPORT static inline gzBool has_multitexture() { return s_multitexture; } 00076 GZ_GRAPH_EXPORT static inline gzBool has_compiled_vertex_array() { return s_compiled_vertex_array; } 00077 GZ_GRAPH_EXPORT static inline gzBool has_texenvop() { return s_texenvop; } 00078 GZ_GRAPH_EXPORT static inline gzBool has_pbuffer() { return s_pbuffer; } 00079 GZ_GRAPH_EXPORT static inline gzBool has_compressed_textures() { return s_compressed_textures; } 00080 GZ_GRAPH_EXPORT static inline gzBool has_compressed_s3tc() { return s_compressed_s3tc; } 00081 GZ_GRAPH_EXPORT static inline gzBool has_depth_clamp() { return s_depth_clamp; } 00082 00083 GZ_GRAPH_EXPORT static inline gzBool has_vertex_program() { return s_vertex_program; } 00084 GZ_GRAPH_EXPORT static inline gzBool has_fragment_program() { return s_fragment_program; } 00085 00086 GZ_GRAPH_EXPORT static inline gzBool has_vertex_buffer_object() { return s_vertex_buffer_object; } 00087 00088 GZ_GRAPH_EXPORT static inline gzBool has_two_sided_stencil() { return s_two_sided_stencil; } 00089 GZ_GRAPH_EXPORT static inline gzBool has_separate_stencil() { return s_separate_stencil; } 00090 00091 GZ_GRAPH_EXPORT static inline gzBool has_shader_objects() { return s_shader_objects; } 00092 GZ_GRAPH_EXPORT static inline gzBool has_vertex_shader() { return s_vertex_shader; } 00093 GZ_GRAPH_EXPORT static inline gzBool has_fragment_shader() { return s_fragment_shader; } 00094 GZ_GRAPH_EXPORT static inline gzBool has_multisample() { return s_multisample; } 00095 GZ_GRAPH_EXPORT static inline gzBool has_auto_mipmap() { return s_auto_mipmap; } 00096 GZ_GRAPH_EXPORT static inline gzBool has_npot_texture() { return s_npot_texture; } 00097 00098 00099 // --- limits ------ 00100 00101 GZ_GRAPH_EXPORT static inline gzInt getMaxTextureSize() { return s_maxtexturesize; } 00102 00103 GZ_GRAPH_EXPORT static inline gzULong getNumberOfTextureUnits() { return s_numberOfTextureUnits; } 00104 00105 GZ_GRAPH_EXPORT static inline gzBool isRemoteConnection() { return s_remoteConnection; } 00106 00107 */ 00108 00109 // --- generic ----- 00110 00111 GZ_GRAPH_EXPORT static gzBool hasValidEngine(); 00112 GZ_GRAPH_EXPORT static gzVoid useEngine(gzAudioEngineType type); 00113 GZ_GRAPH_EXPORT static gzAudioEngineType getEngineType(); 00114 GZ_GRAPH_EXPORT static gzAudioEngine * getEngine(); 00115 GZ_GRAPH_EXPORT static gzFloat getVersion(); 00116 GZ_GRAPH_EXPORT static gzString getExtensions(); 00117 00118 // Engine functions 00119 00120 GZ_GRAPH_EXPORT virtual gzVoid setupEngine()=0; 00121 GZ_GRAPH_EXPORT virtual gzVoid shutdownEngine()=0; 00122 00123 00124 protected: 00125 00126 00127 /* 00128 00129 GZ_GRAPH_EXPORT static gzBool s_vertex_array; 00130 GZ_GRAPH_EXPORT static gzBool s_compiled_vertex_array; 00131 GZ_GRAPH_EXPORT static gzBool s_multitexture; 00132 GZ_GRAPH_EXPORT static gzBool s_texenvop; 00133 GZ_GRAPH_EXPORT static gzBool s_pbuffer; 00134 GZ_GRAPH_EXPORT static gzBool s_polygon_offset; 00135 GZ_GRAPH_EXPORT static gzBool s_compressed_textures; 00136 GZ_GRAPH_EXPORT static gzBool s_compressed_s3tc; 00137 GZ_GRAPH_EXPORT static gzBool s_depth_clamp; 00138 GZ_GRAPH_EXPORT static gzBool s_vertex_program; 00139 GZ_GRAPH_EXPORT static gzBool s_fragment_program; 00140 GZ_GRAPH_EXPORT static gzBool s_vertex_buffer_object; 00141 GZ_GRAPH_EXPORT static gzBool s_two_sided_stencil; 00142 GZ_GRAPH_EXPORT static gzBool s_separate_stencil; 00143 GZ_GRAPH_EXPORT static gzBool s_shader_objects; 00144 GZ_GRAPH_EXPORT static gzBool s_vertex_shader; 00145 GZ_GRAPH_EXPORT static gzBool s_fragment_shader; 00146 GZ_GRAPH_EXPORT static gzBool s_multisample; 00147 GZ_GRAPH_EXPORT static gzBool s_auto_mipmap; 00148 GZ_GRAPH_EXPORT static gzBool s_npot_texture; 00149 00150 */ 00151 00152 GZ_GRAPH_EXPORT static gzString s_gz_extensions; 00153 GZ_GRAPH_EXPORT static gzFloat s_gz_version; 00154 GZ_GRAPH_EXPORT static gzAudioEngineType s_engineType; 00155 GZ_GRAPH_EXPORT static gzAudioEngine * s_currentEngine; 00156 00157 00158 GZ_GRAPH_EXPORT static gzAudioEngine * s_engine[GZ_MAX_AUDIO_ENGINES]; 00159 00160 }; 00161 00162 00163 #endif //__GZ_AUDIO_ENGINE_H__ 00164 00165