mirror of
				https://github.com/raysan5/raylib.git
				synced 2025-11-04 01:34:19 +00:00 
			
		
		
		
	Work on custom Android build
- Renamed some folders - Added some files for testing - Removed useless files
This commit is contained in:
		@@ -44,7 +44,7 @@ ANDROID_BUILD_TOOLS = C:/android-sdk/build-tools/26.0.1
 | 
			
		||||
JAVA_HOME = C:/PROGRA~1/Java/jdk1.8.0_144
 | 
			
		||||
 | 
			
		||||
# Compilers
 | 
			
		||||
CC = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-gcc
 | 
			
		||||
CC = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-clang
 | 
			
		||||
AR = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-ar
 | 
			
		||||
 | 
			
		||||
# Define compiler flags
 | 
			
		||||
@@ -54,11 +54,11 @@ CFLAGS = -Wall -std=c99 -DPLATFORM_ANDROID -march=armv7-a -mfloat-abi=softfp -mf
 | 
			
		||||
INCLUDES = -I. -Ijni/include -I$(ANDROID_NDK)/sources/android/native_app_glue
 | 
			
		||||
 | 
			
		||||
# Define library paths containing required libs
 | 
			
		||||
LFLAGS = -L. -Ljni/libs -Ljni -Llib
 | 
			
		||||
LFLAGS = -L. -Ljni -Llib -Ljni/libs
 | 
			
		||||
 | 
			
		||||
# Define any libraries to link into executable
 | 
			
		||||
# if you want to link libraries (libname.so or libname.a), use the -lname
 | 
			
		||||
LIBS = -lraylib -llog -landroid -lEGL -lGLESv2 -lOpenSLES
 | 
			
		||||
LIBS = -llog -landroid -lEGL -lGLESv2 -lOpenSLES
 | 
			
		||||
 | 
			
		||||
# Building APK
 | 
			
		||||
# NOTE: typing 'make' will invoke the default target entry called 'all',
 | 
			
		||||
@@ -91,8 +91,11 @@ native_app_glue:
 | 
			
		||||
# Compile project code as shared libraries
 | 
			
		||||
# OUTPUT: $(PROJECT_DIR)/lib/lib$(LIBRARY_NAME).so 
 | 
			
		||||
project_code:
 | 
			
		||||
	$(CC) -c jni/basic_game.c -o temp/obj/basic_game.o $(INCLUDES) $(CFLAGS) --sysroot=$(ANDROID_TOOLCHAIN)/sysroot -fPIC 
 | 
			
		||||
	$(CC) -o lib/armeabi-v7a/lib$(LIBRARY_NAME).so temp/obj/basic_game.o -shared $(INCLUDES) $(LFLAGS) $(LIBS) -lnative_app_glue -u ANativeActivity_onCreate
 | 
			
		||||
	$(CC) -c src/core.c -o temp/obj/core.o $(INCLUDES) $(CFLAGS) --sysroot=$(ANDROID_TOOLCHAIN)/sysroot -fPIC 
 | 
			
		||||
	$(CC) -c src/rlgl.c -o temp/obj/rlgl.o $(INCLUDES) $(CFLAGS) --sysroot=$(ANDROID_TOOLCHAIN)/sysroot -fPIC -DGRAPHICS_API_OPENGL_ES2
 | 
			
		||||
	$(CC) -c src/utils.c -o temp/obj/utils.o $(INCLUDES) $(CFLAGS) --sysroot=$(ANDROID_TOOLCHAIN)/sysroot -fPIC 
 | 
			
		||||
	$(CC) -c src/game_crash.c -o temp/obj/game_crash.o $(INCLUDES) $(CFLAGS) --sysroot=$(ANDROID_TOOLCHAIN)/sysroot -fPIC 
 | 
			
		||||
	$(CC) -o lib/armeabi-v7a/lib$(LIBRARY_NAME).so temp/obj/game_crash.o temp/obj/core.o temp/obj/rlgl.o temp/obj/utils.o -shared $(INCLUDES) $(LFLAGS) -lnative_app_glue $(LIBS) -u ANativeActivity_onCreate
 | 
			
		||||
 | 
			
		||||
# Generate key for APK signing
 | 
			
		||||
# OUTPUT: $(PROJECT_DIR)/temp/$(PROJECT_NAME).keystore
 | 
			
		||||
@@ -137,7 +140,7 @@ deploy:
 | 
			
		||||
	$(ANDROID_HOME)/platform-tools/adb install -r $(PROJECT_NAME).apk
 | 
			
		||||
	$(ANDROID_HOME)/platform-tools/adb logcat -c
 | 
			
		||||
	$(ANDROID_HOME)/platform-tools/adb logcat *:W
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
#$(ANDROID_HOME)/platform-tools/adb logcat *:W
 | 
			
		||||
#$(ANDROID_HOME)/platform-tools/adb -d logcat raylib:V *:S
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								templates/android_project/assets/EMPTY
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								templates/android_project/assets/EMPTY
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 3.7 KiB  | 
@@ -1,100 +0,0 @@
 | 
			
		||||
#**************************************************************************************************
 | 
			
		||||
#
 | 
			
		||||
#   raylib for Android
 | 
			
		||||
#
 | 
			
		||||
#   Game template makefile
 | 
			
		||||
#
 | 
			
		||||
#   Copyright (c) 2014-2016 Ramon Santamaria (@raysan5)
 | 
			
		||||
#    
 | 
			
		||||
#   This software is provided "as-is", without any express or implied warranty. In no event 
 | 
			
		||||
#   will the authors be held liable for any damages arising from the use of this software.
 | 
			
		||||
#
 | 
			
		||||
#   Permission is granted to anyone to use this software for any purpose, including commercial 
 | 
			
		||||
#   applications, and to alter it and redistribute it freely, subject to the following restrictions:
 | 
			
		||||
#
 | 
			
		||||
#     1. The origin of this software must not be misrepresented; you must not claim that you 
 | 
			
		||||
#     wrote the original software. If you use this software in a product, an acknowledgment 
 | 
			
		||||
#     in the product documentation would be appreciated but is not required.
 | 
			
		||||
#
 | 
			
		||||
#     2. Altered source versions must be plainly marked as such, and must not be misrepresented
 | 
			
		||||
#     as being the original software.
 | 
			
		||||
#
 | 
			
		||||
#     3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
#
 | 
			
		||||
#**************************************************************************************************
 | 
			
		||||
 | 
			
		||||
# Path of the current directory (i.e. the directory containing the Android.mk file itself)
 | 
			
		||||
LOCAL_PATH := $(call my-dir)
 | 
			
		||||
 | 
			
		||||
# OpenAL module (prebuilt static library)
 | 
			
		||||
#--------------------------------------------------------------------
 | 
			
		||||
include $(CLEAR_VARS)
 | 
			
		||||
 | 
			
		||||
# Module name
 | 
			
		||||
LOCAL_MODULE := openal
 | 
			
		||||
 | 
			
		||||
# Precompiled lib
 | 
			
		||||
LOCAL_SRC_FILES := libs/libopenal.so
 | 
			
		||||
 | 
			
		||||
# Export headers
 | 
			
		||||
LOCAL_EXPORT_C_INCLUDES := include
 | 
			
		||||
 | 
			
		||||
# Build static library
 | 
			
		||||
include $(PREBUILT_SHARED_LIBRARY)
 | 
			
		||||
#--------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# raylib module (prebuilt static library)
 | 
			
		||||
#--------------------------------------------------------------------
 | 
			
		||||
include $(CLEAR_VARS)
 | 
			
		||||
 | 
			
		||||
# Module name
 | 
			
		||||
LOCAL_MODULE := raylib
 | 
			
		||||
 | 
			
		||||
# Precompiled lib
 | 
			
		||||
LOCAL_SRC_FILES := libs/libraylib.a
 | 
			
		||||
 | 
			
		||||
# Export headers
 | 
			
		||||
LOCAL_EXPORT_C_INCLUDES := include
 | 
			
		||||
 | 
			
		||||
# Static library dependency
 | 
			
		||||
LOCAL_STATIC_LIBRARIES := android_native_app_glue
 | 
			
		||||
 | 
			
		||||
# Build static library
 | 
			
		||||
include $(PREBUILT_STATIC_LIBRARY)
 | 
			
		||||
#--------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# raylib game module (shared library)
 | 
			
		||||
#--------------------------------------------------------------------
 | 
			
		||||
# Makefile that will clear many LOCAL_XXX variables for you
 | 
			
		||||
include $(CLEAR_VARS)
 | 
			
		||||
 | 
			
		||||
# Module name
 | 
			
		||||
LOCAL_MODULE     := raylib_game
 | 
			
		||||
 | 
			
		||||
# Module source files
 | 
			
		||||
LOCAL_SRC_FILES  := basic_game.c
 | 
			
		||||
 | 
			
		||||
# Required includes paths (.h)
 | 
			
		||||
# NOTE: raylib header and openal headers are included using LOCAL_EXPORT_C_INCLUDES
 | 
			
		||||
LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/include
 | 
			
		||||
 | 
			
		||||
# Required flags for compilation: defines PLATFORM_ANDROID
 | 
			
		||||
LOCAL_CFLAGS     := -Wall -std=c99 -DPLATFORM_ANDROID
 | 
			
		||||
 | 
			
		||||
# Linker required libraries (not many...)
 | 
			
		||||
LOCAL_LDLIBS     := -llog -landroid -lEGL -lGLESv2 -lOpenSLES
 | 
			
		||||
 | 
			
		||||
# Required static library
 | 
			
		||||
LOCAL_STATIC_LIBRARIES := android_native_app_glue raylib openal
 | 
			
		||||
 | 
			
		||||
# Required shared library
 | 
			
		||||
# NOTE: It brokes the build, using static library instead
 | 
			
		||||
#LOCAL_SHARED_LIBRARIES := openal
 | 
			
		||||
 | 
			
		||||
# Build the shared library libraylib_game.so
 | 
			
		||||
include $(BUILD_SHARED_LIBRARY)
 | 
			
		||||
 | 
			
		||||
$(call import-module,android/native_app_glue)
 | 
			
		||||
#--------------------------------------------------------------------
 | 
			
		||||
@@ -1,172 +0,0 @@
 | 
			
		||||
/*******************************************************************************************
 | 
			
		||||
*
 | 
			
		||||
*   raylib - Android Basic Game template
 | 
			
		||||
*
 | 
			
		||||
*   <Game title>
 | 
			
		||||
*   <Game description>
 | 
			
		||||
*
 | 
			
		||||
*   This game has been created using raylib v1.2 (www.raylib.com)
 | 
			
		||||
*   raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
 | 
			
		||||
*
 | 
			
		||||
*   Copyright (c) 2014 Ramon Santamaria (@raysan5)
 | 
			
		||||
*
 | 
			
		||||
********************************************************************************************/
 | 
			
		||||
 | 
			
		||||
#include "raylib.h"
 | 
			
		||||
 | 
			
		||||
#include "android_native_app_glue.h"
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
// Types and Structures Definition
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
typedef enum GameScreen { LOGO, TITLE, GAMEPLAY, ENDING } GameScreen;
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
// Android Main entry point
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
void android_main(struct android_app *app) 
 | 
			
		||||
{
 | 
			
		||||
    // Initialization
 | 
			
		||||
    //--------------------------------------------------------------------------------------
 | 
			
		||||
    const int screenWidth = 800;
 | 
			
		||||
    const int screenHeight = 450;
 | 
			
		||||
    
 | 
			
		||||
    GameScreen currentScreen = LOGO;
 | 
			
		||||
 | 
			
		||||
    InitWindow(screenWidth, screenHeight, app);
 | 
			
		||||
    
 | 
			
		||||
    // TODO: Initialize all required variables and load all required data here!
 | 
			
		||||
 | 
			
		||||
    InitAudioDevice();                  // Initialize audio device
 | 
			
		||||
    
 | 
			
		||||
    Texture2D texture = LoadTexture("raylib_logo.png");     // Load texture (placed on assets folder)
 | 
			
		||||
 | 
			
		||||
    Sound fx = LoadSound("coin.wav");   // Load WAV audio file (placed on assets folder)
 | 
			
		||||
    Music ambient = LoadMusicStream("ambient.ogg");
 | 
			
		||||
    PlayMusicStream(ambient);
 | 
			
		||||
 | 
			
		||||
    int framesCounter = 0;          // Used to count frames
 | 
			
		||||
    
 | 
			
		||||
    SetTargetFPS(60);               // Not required on Android, already locked to 60 fps
 | 
			
		||||
    //--------------------------------------------------------------------------------------
 | 
			
		||||
    
 | 
			
		||||
    // Main game loop
 | 
			
		||||
    while (!WindowShouldClose())    // Detect window close button or ESC key
 | 
			
		||||
    {
 | 
			
		||||
        // Update
 | 
			
		||||
        //----------------------------------------------------------------------------------
 | 
			
		||||
        UpdateMusicStream(ambient);
 | 
			
		||||
        
 | 
			
		||||
        switch(currentScreen) 
 | 
			
		||||
        {
 | 
			
		||||
            case LOGO: 
 | 
			
		||||
            {
 | 
			
		||||
                // TODO: Update LOGO screen variables here!
 | 
			
		||||
 | 
			
		||||
                framesCounter++;    // Count frames
 | 
			
		||||
 | 
			
		||||
                // Wait for 4 seconds (240 frames) before jumping to TITLE screen
 | 
			
		||||
                if (framesCounter > 240)
 | 
			
		||||
                {
 | 
			
		||||
                    currentScreen = TITLE;
 | 
			
		||||
                }
 | 
			
		||||
            } break;
 | 
			
		||||
            case TITLE: 
 | 
			
		||||
            {
 | 
			
		||||
                // TODO: Update TITLE screen variables here!
 | 
			
		||||
 | 
			
		||||
                // Press enter to change to GAMEPLAY screen
 | 
			
		||||
                if (IsGestureDetected(GESTURE_TAP))
 | 
			
		||||
                {
 | 
			
		||||
                    PlaySound(fx);
 | 
			
		||||
                    currentScreen = GAMEPLAY;
 | 
			
		||||
                }
 | 
			
		||||
            } break;
 | 
			
		||||
            case GAMEPLAY:
 | 
			
		||||
            { 
 | 
			
		||||
                // TODO: Update GAMEPLAY screen variables here!
 | 
			
		||||
 | 
			
		||||
                // Press enter to change to ENDING screen
 | 
			
		||||
                if (IsGestureDetected(GESTURE_TAP))
 | 
			
		||||
                {  
 | 
			
		||||
                    PlaySound(fx);
 | 
			
		||||
                    currentScreen = ENDING;
 | 
			
		||||
                } 
 | 
			
		||||
            } break;
 | 
			
		||||
            case ENDING: 
 | 
			
		||||
            {
 | 
			
		||||
                // TODO: Update ENDING screen variables here!
 | 
			
		||||
 | 
			
		||||
                // Press enter to return to TITLE screen
 | 
			
		||||
                if (IsGestureDetected(GESTURE_TAP))
 | 
			
		||||
                {
 | 
			
		||||
                    PlaySound(fx);
 | 
			
		||||
                    currentScreen = TITLE;
 | 
			
		||||
                }  
 | 
			
		||||
            } break;
 | 
			
		||||
            default: break;
 | 
			
		||||
        }
 | 
			
		||||
        //----------------------------------------------------------------------------------
 | 
			
		||||
        
 | 
			
		||||
        // Draw
 | 
			
		||||
        //----------------------------------------------------------------------------------
 | 
			
		||||
        BeginDrawing();
 | 
			
		||||
        
 | 
			
		||||
            ClearBackground(RAYWHITE);
 | 
			
		||||
            
 | 
			
		||||
            switch(currentScreen) 
 | 
			
		||||
            {
 | 
			
		||||
                case LOGO: 
 | 
			
		||||
                {
 | 
			
		||||
                    // TODO: Draw LOGO screen here!
 | 
			
		||||
                    DrawText("LOGO SCREEN", 20, 20, 40, LIGHTGRAY);
 | 
			
		||||
                    DrawTexture(texture, screenWidth/2 - texture.width/2, screenHeight/2 - texture.height/2, WHITE);
 | 
			
		||||
                    DrawText("WAIT for 4 SECONDS...", 290, 400, 20, GRAY);
 | 
			
		||||
                    
 | 
			
		||||
                } break;
 | 
			
		||||
                case TITLE: 
 | 
			
		||||
                {
 | 
			
		||||
                    // TODO: Draw TITLE screen here!
 | 
			
		||||
                    DrawRectangle(0, 0, screenWidth, screenHeight, GREEN);
 | 
			
		||||
                    DrawText("TITLE SCREEN", 20, 20, 40, DARKGREEN);
 | 
			
		||||
                    DrawText("TAP SCREEN to JUMP to GAMEPLAY SCREEN", 160, 220, 20, DARKGREEN);
 | 
			
		||||
                    
 | 
			
		||||
                } break;
 | 
			
		||||
                case GAMEPLAY:
 | 
			
		||||
                { 
 | 
			
		||||
                    // TODO: Draw GAMEPLAY screen here!
 | 
			
		||||
                    DrawRectangle(0, 0, screenWidth, screenHeight, PURPLE);
 | 
			
		||||
                    DrawText("GAMEPLAY SCREEN", 20, 20, 40, MAROON);
 | 
			
		||||
                    DrawText("TAP SCREEN to JUMP to ENDING SCREEN", 170, 220, 20, MAROON);
 | 
			
		||||
 | 
			
		||||
                } break;
 | 
			
		||||
                case ENDING: 
 | 
			
		||||
                {
 | 
			
		||||
                    // TODO: Draw ENDING screen here!
 | 
			
		||||
                    DrawRectangle(0, 0, screenWidth, screenHeight, BLUE);
 | 
			
		||||
                    DrawText("ENDING SCREEN", 20, 20, 40, DARKBLUE);
 | 
			
		||||
                    DrawText("TAP SCREEN to RETURN to TITLE SCREEN", 160, 220, 20, DARKBLUE);
 | 
			
		||||
                    
 | 
			
		||||
                } break;
 | 
			
		||||
                default: break;
 | 
			
		||||
            }
 | 
			
		||||
        
 | 
			
		||||
        EndDrawing();
 | 
			
		||||
        //----------------------------------------------------------------------------------
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // De-Initialization
 | 
			
		||||
    //--------------------------------------------------------------------------------------
 | 
			
		||||
    
 | 
			
		||||
    // TODO: Unload all loaded data (textures, fonts, audio) here!
 | 
			
		||||
 | 
			
		||||
    UnloadSound(fx);            // Unload sound data
 | 
			
		||||
    UnloadMusicStream(ambient); // Unload music stream data
 | 
			
		||||
    
 | 
			
		||||
    CloseAudioDevice();     // Close audio device (music streaming is automatically stopped)
 | 
			
		||||
    
 | 
			
		||||
    UnloadTexture(texture); // Unload texture data
 | 
			
		||||
    
 | 
			
		||||
    CloseWindow();          // Close window and OpenGL context
 | 
			
		||||
    //--------------------------------------------------------------------------------------
 | 
			
		||||
}
 | 
			
		||||
@@ -1,656 +0,0 @@
 | 
			
		||||
#ifndef AL_AL_H
 | 
			
		||||
#define AL_AL_H
 | 
			
		||||
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_API
 | 
			
		||||
 #if defined(AL_LIBTYPE_STATIC)
 | 
			
		||||
  #define AL_API
 | 
			
		||||
 #elif defined(_WIN32)
 | 
			
		||||
  #define AL_API __declspec(dllimport)
 | 
			
		||||
 #else
 | 
			
		||||
  #define AL_API extern
 | 
			
		||||
 #endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(_WIN32)
 | 
			
		||||
 #define AL_APIENTRY __cdecl
 | 
			
		||||
#else
 | 
			
		||||
 #define AL_APIENTRY
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Deprecated macro. */
 | 
			
		||||
#define OPENAL
 | 
			
		||||
#define ALAPI                                    AL_API
 | 
			
		||||
#define ALAPIENTRY                               AL_APIENTRY
 | 
			
		||||
#define AL_INVALID                               (-1)
 | 
			
		||||
#define AL_ILLEGAL_ENUM                          AL_INVALID_ENUM
 | 
			
		||||
#define AL_ILLEGAL_COMMAND                       AL_INVALID_OPERATION
 | 
			
		||||
 | 
			
		||||
/** Supported AL version. */
 | 
			
		||||
#define AL_VERSION_1_0
 | 
			
		||||
#define AL_VERSION_1_1
 | 
			
		||||
 | 
			
		||||
/** 8-bit boolean */
 | 
			
		||||
typedef char ALboolean;
 | 
			
		||||
 | 
			
		||||
/** character */
 | 
			
		||||
typedef char ALchar;
 | 
			
		||||
 | 
			
		||||
/** signed 8-bit 2's complement integer */
 | 
			
		||||
typedef signed char ALbyte;
 | 
			
		||||
 | 
			
		||||
/** unsigned 8-bit integer */
 | 
			
		||||
typedef unsigned char ALubyte;
 | 
			
		||||
 | 
			
		||||
/** signed 16-bit 2's complement integer */
 | 
			
		||||
typedef short ALshort;
 | 
			
		||||
 | 
			
		||||
/** unsigned 16-bit integer */
 | 
			
		||||
typedef unsigned short ALushort;
 | 
			
		||||
 | 
			
		||||
/** signed 32-bit 2's complement integer */
 | 
			
		||||
typedef int ALint;
 | 
			
		||||
 | 
			
		||||
/** unsigned 32-bit integer */
 | 
			
		||||
typedef unsigned int ALuint;
 | 
			
		||||
 | 
			
		||||
/** non-negative 32-bit binary integer size */
 | 
			
		||||
typedef int ALsizei;
 | 
			
		||||
 | 
			
		||||
/** enumerated 32-bit value */
 | 
			
		||||
typedef int ALenum;
 | 
			
		||||
 | 
			
		||||
/** 32-bit IEEE754 floating-point */
 | 
			
		||||
typedef float ALfloat;
 | 
			
		||||
 | 
			
		||||
/** 64-bit IEEE754 floating-point */
 | 
			
		||||
typedef double ALdouble;
 | 
			
		||||
 | 
			
		||||
/** void type (for opaque pointers only) */
 | 
			
		||||
typedef void ALvoid;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Enumerant values begin at column 50. No tabs. */
 | 
			
		||||
 | 
			
		||||
/** "no distance model" or "no buffer" */
 | 
			
		||||
#define AL_NONE                                  0
 | 
			
		||||
 | 
			
		||||
/** Boolean False. */
 | 
			
		||||
#define AL_FALSE                                 0
 | 
			
		||||
 | 
			
		||||
/** Boolean True. */
 | 
			
		||||
#define AL_TRUE                                  1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Relative source.
 | 
			
		||||
 * Type:    ALboolean
 | 
			
		||||
 * Range:   [AL_TRUE, AL_FALSE]
 | 
			
		||||
 * Default: AL_FALSE
 | 
			
		||||
 *
 | 
			
		||||
 * Specifies if the Source has relative coordinates.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_SOURCE_RELATIVE                       0x202
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Inner cone angle, in degrees.
 | 
			
		||||
 * Type:    ALint, ALfloat
 | 
			
		||||
 * Range:   [0 - 360]
 | 
			
		||||
 * Default: 360
 | 
			
		||||
 *
 | 
			
		||||
 * The angle covered by the inner cone, where the source will not attenuate.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_CONE_INNER_ANGLE                      0x1001
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Outer cone angle, in degrees.
 | 
			
		||||
 * Range:   [0 - 360]
 | 
			
		||||
 * Default: 360
 | 
			
		||||
 *
 | 
			
		||||
 * The angle covered by the outer cone, where the source will be fully
 | 
			
		||||
 * attenuated.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_CONE_OUTER_ANGLE                      0x1002
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source pitch.
 | 
			
		||||
 * Type:    ALfloat
 | 
			
		||||
 * Range:   [0.5 - 2.0]
 | 
			
		||||
 * Default: 1.0
 | 
			
		||||
 *
 | 
			
		||||
 * A multiplier for the frequency (sample rate) of the source's buffer.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_PITCH                                 0x1003
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source or listener position.
 | 
			
		||||
 * Type:    ALfloat[3], ALint[3]
 | 
			
		||||
 * Default: {0, 0, 0}
 | 
			
		||||
 *
 | 
			
		||||
 * The source or listener location in three dimensional space.
 | 
			
		||||
 *
 | 
			
		||||
 * OpenAL, like OpenGL, uses a right handed coordinate system, where in a
 | 
			
		||||
 * frontal default view X (thumb) points right, Y points up (index finger), and
 | 
			
		||||
 * Z points towards the viewer/camera (middle finger).
 | 
			
		||||
 *
 | 
			
		||||
 * To switch from a left handed coordinate system, flip the sign on the Z
 | 
			
		||||
 * coordinate.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_POSITION                              0x1004
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source direction.
 | 
			
		||||
 * Type:    ALfloat[3], ALint[3]
 | 
			
		||||
 * Default: {0, 0, 0}
 | 
			
		||||
 *
 | 
			
		||||
 * Specifies the current direction in local space.
 | 
			
		||||
 * A zero-length vector specifies an omni-directional source (cone is ignored).
 | 
			
		||||
 */
 | 
			
		||||
#define AL_DIRECTION                             0x1005
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source or listener velocity.
 | 
			
		||||
 * Type:    ALfloat[3], ALint[3]
 | 
			
		||||
 * Default: {0, 0, 0}
 | 
			
		||||
 *
 | 
			
		||||
 * Specifies the current velocity in local space.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_VELOCITY                              0x1006
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source looping.
 | 
			
		||||
 * Type:    ALboolean
 | 
			
		||||
 * Range:   [AL_TRUE, AL_FALSE]
 | 
			
		||||
 * Default: AL_FALSE
 | 
			
		||||
 *
 | 
			
		||||
 * Specifies whether source is looping.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_LOOPING                               0x1007
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source buffer.
 | 
			
		||||
 * Type:  ALuint
 | 
			
		||||
 * Range: any valid Buffer.
 | 
			
		||||
 *
 | 
			
		||||
 * Specifies the buffer to provide sound samples.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_BUFFER                                0x1009
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source or listener gain.
 | 
			
		||||
 * Type:  ALfloat
 | 
			
		||||
 * Range: [0.0 - ]
 | 
			
		||||
 *
 | 
			
		||||
 * A value of 1.0 means unattenuated. Each division by 2 equals an attenuation
 | 
			
		||||
 * of about -6dB. Each multiplicaton by 2 equals an amplification of about
 | 
			
		||||
 * +6dB.
 | 
			
		||||
 *
 | 
			
		||||
 * A value of 0.0 is meaningless with respect to a logarithmic scale; it is
 | 
			
		||||
 * silent.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_GAIN                                  0x100A
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Minimum source gain.
 | 
			
		||||
 * Type:  ALfloat
 | 
			
		||||
 * Range: [0.0 - 1.0]
 | 
			
		||||
 *
 | 
			
		||||
 * The minimum gain allowed for a source, after distance and cone attenation is
 | 
			
		||||
 * applied (if applicable).
 | 
			
		||||
 */
 | 
			
		||||
#define AL_MIN_GAIN                              0x100D
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Maximum source gain.
 | 
			
		||||
 * Type:  ALfloat
 | 
			
		||||
 * Range: [0.0 - 1.0]
 | 
			
		||||
 *
 | 
			
		||||
 * The maximum gain allowed for a source, after distance and cone attenation is
 | 
			
		||||
 * applied (if applicable).
 | 
			
		||||
 */
 | 
			
		||||
#define AL_MAX_GAIN                              0x100E
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Listener orientation.
 | 
			
		||||
 * Type: ALfloat[6]
 | 
			
		||||
 * Default: {0.0, 0.0, -1.0, 0.0, 1.0, 0.0}
 | 
			
		||||
 *
 | 
			
		||||
 * Effectively two three dimensional vectors. The first vector is the front (or
 | 
			
		||||
 * "at") and the second is the top (or "up").
 | 
			
		||||
 *
 | 
			
		||||
 * Both vectors are in local space.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_ORIENTATION                           0x100F
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source state (query only).
 | 
			
		||||
 * Type:  ALint
 | 
			
		||||
 * Range: [AL_INITIAL, AL_PLAYING, AL_PAUSED, AL_STOPPED]
 | 
			
		||||
 */
 | 
			
		||||
#define AL_SOURCE_STATE                          0x1010
 | 
			
		||||
 | 
			
		||||
/** Source state value. */
 | 
			
		||||
#define AL_INITIAL                               0x1011
 | 
			
		||||
#define AL_PLAYING                               0x1012
 | 
			
		||||
#define AL_PAUSED                                0x1013
 | 
			
		||||
#define AL_STOPPED                               0x1014
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source Buffer Queue size (query only).
 | 
			
		||||
 * Type: ALint
 | 
			
		||||
 *
 | 
			
		||||
 * The number of buffers queued using alSourceQueueBuffers, minus the buffers
 | 
			
		||||
 * removed with alSourceUnqueueBuffers.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_BUFFERS_QUEUED                        0x1015
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source Buffer Queue processed count (query only).
 | 
			
		||||
 * Type: ALint
 | 
			
		||||
 *
 | 
			
		||||
 * The number of queued buffers that have been fully processed, and can be
 | 
			
		||||
 * removed with alSourceUnqueueBuffers.
 | 
			
		||||
 *
 | 
			
		||||
 * Looping sources will never fully process buffers because they will be set to
 | 
			
		||||
 * play again for when the source loops.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_BUFFERS_PROCESSED                     0x1016
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source reference distance.
 | 
			
		||||
 * Type:    ALfloat
 | 
			
		||||
 * Range:   [0.0 - ]
 | 
			
		||||
 * Default: 1.0
 | 
			
		||||
 *
 | 
			
		||||
 * The distance in units that no attenuation occurs.
 | 
			
		||||
 *
 | 
			
		||||
 * At 0.0, no distance attenuation ever occurs on non-linear attenuation models.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_REFERENCE_DISTANCE                    0x1020
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source rolloff factor.
 | 
			
		||||
 * Type:    ALfloat
 | 
			
		||||
 * Range:   [0.0 - ]
 | 
			
		||||
 * Default: 1.0
 | 
			
		||||
 *
 | 
			
		||||
 * Multiplier to exaggerate or diminish distance attenuation.
 | 
			
		||||
 *
 | 
			
		||||
 * At 0.0, no distance attenuation ever occurs.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_ROLLOFF_FACTOR                        0x1021
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Outer cone gain.
 | 
			
		||||
 * Type:    ALfloat
 | 
			
		||||
 * Range:   [0.0 - 1.0]
 | 
			
		||||
 * Default: 0.0
 | 
			
		||||
 *
 | 
			
		||||
 * The gain attenuation applied when the listener is outside of the source's
 | 
			
		||||
 * outer cone.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_CONE_OUTER_GAIN                       0x1022
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source maximum distance.
 | 
			
		||||
 * Type:    ALfloat
 | 
			
		||||
 * Range:   [0.0 - ]
 | 
			
		||||
 * Default: +inf
 | 
			
		||||
 *
 | 
			
		||||
 * The distance above which the source is not attenuated any further with a
 | 
			
		||||
 * clamped distance model, or where attenuation reaches 0.0 gain for linear
 | 
			
		||||
 * distance models with a default rolloff factor.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_MAX_DISTANCE                          0x1023
 | 
			
		||||
 | 
			
		||||
/** Source buffer position, in seconds */
 | 
			
		||||
#define AL_SEC_OFFSET                            0x1024
 | 
			
		||||
/** Source buffer position, in sample frames */
 | 
			
		||||
#define AL_SAMPLE_OFFSET                         0x1025
 | 
			
		||||
/** Source buffer position, in bytes */
 | 
			
		||||
#define AL_BYTE_OFFSET                           0x1026
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Source type (query only).
 | 
			
		||||
 * Type:  ALint
 | 
			
		||||
 * Range: [AL_STATIC, AL_STREAMING, AL_UNDETERMINED]
 | 
			
		||||
 *
 | 
			
		||||
 * A Source is Static if a Buffer has been attached using AL_BUFFER.
 | 
			
		||||
 *
 | 
			
		||||
 * A Source is Streaming if one or more Buffers have been attached using
 | 
			
		||||
 * alSourceQueueBuffers.
 | 
			
		||||
 *
 | 
			
		||||
 * A Source is Undetermined when it has the NULL buffer attached using
 | 
			
		||||
 * AL_BUFFER.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_SOURCE_TYPE                           0x1027
 | 
			
		||||
 | 
			
		||||
/** Source type value. */
 | 
			
		||||
#define AL_STATIC                                0x1028
 | 
			
		||||
#define AL_STREAMING                             0x1029
 | 
			
		||||
#define AL_UNDETERMINED                          0x1030
 | 
			
		||||
 | 
			
		||||
/** Buffer format specifier. */
 | 
			
		||||
#define AL_FORMAT_MONO8                          0x1100
 | 
			
		||||
#define AL_FORMAT_MONO16                         0x1101
 | 
			
		||||
#define AL_FORMAT_STEREO8                        0x1102
 | 
			
		||||
#define AL_FORMAT_STEREO16                       0x1103
 | 
			
		||||
 | 
			
		||||
/** Buffer frequency (query only). */
 | 
			
		||||
#define AL_FREQUENCY                             0x2001
 | 
			
		||||
/** Buffer bits per sample (query only). */
 | 
			
		||||
#define AL_BITS                                  0x2002
 | 
			
		||||
/** Buffer channel count (query only). */
 | 
			
		||||
#define AL_CHANNELS                              0x2003
 | 
			
		||||
/** Buffer data size (query only). */
 | 
			
		||||
#define AL_SIZE                                  0x2004
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Buffer state.
 | 
			
		||||
 *
 | 
			
		||||
 * Not for public use.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_UNUSED                                0x2010
 | 
			
		||||
#define AL_PENDING                               0x2011
 | 
			
		||||
#define AL_PROCESSED                             0x2012
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** No error. */
 | 
			
		||||
#define AL_NO_ERROR                              0
 | 
			
		||||
 | 
			
		||||
/** Invalid name paramater passed to AL call. */
 | 
			
		||||
#define AL_INVALID_NAME                          0xA001
 | 
			
		||||
 | 
			
		||||
/** Invalid enum parameter passed to AL call. */
 | 
			
		||||
#define AL_INVALID_ENUM                          0xA002
 | 
			
		||||
 | 
			
		||||
/** Invalid value parameter passed to AL call. */
 | 
			
		||||
#define AL_INVALID_VALUE                         0xA003
 | 
			
		||||
 | 
			
		||||
/** Illegal AL call. */
 | 
			
		||||
#define AL_INVALID_OPERATION                     0xA004
 | 
			
		||||
 | 
			
		||||
/** Not enough memory. */
 | 
			
		||||
#define AL_OUT_OF_MEMORY                         0xA005
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Context string: Vendor ID. */
 | 
			
		||||
#define AL_VENDOR                                0xB001
 | 
			
		||||
/** Context string: Version. */
 | 
			
		||||
#define AL_VERSION                               0xB002
 | 
			
		||||
/** Context string: Renderer ID. */
 | 
			
		||||
#define AL_RENDERER                              0xB003
 | 
			
		||||
/** Context string: Space-separated extension list. */
 | 
			
		||||
#define AL_EXTENSIONS                            0xB004
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Doppler scale.
 | 
			
		||||
 * Type:    ALfloat
 | 
			
		||||
 * Range:   [0.0 - ]
 | 
			
		||||
 * Default: 1.0
 | 
			
		||||
 *
 | 
			
		||||
 * Scale for source and listener velocities.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_DOPPLER_FACTOR                        0xC000
 | 
			
		||||
AL_API void AL_APIENTRY alDopplerFactor(ALfloat value);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Doppler velocity (deprecated).
 | 
			
		||||
 *
 | 
			
		||||
 * A multiplier applied to the Speed of Sound.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_DOPPLER_VELOCITY                      0xC001
 | 
			
		||||
AL_API void AL_APIENTRY alDopplerVelocity(ALfloat value);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Speed of Sound, in units per second.
 | 
			
		||||
 * Type:    ALfloat
 | 
			
		||||
 * Range:   [0.0001 - ]
 | 
			
		||||
 * Default: 343.3
 | 
			
		||||
 *
 | 
			
		||||
 * The speed at which sound waves are assumed to travel, when calculating the
 | 
			
		||||
 * doppler effect.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_SPEED_OF_SOUND                        0xC003
 | 
			
		||||
AL_API void AL_APIENTRY alSpeedOfSound(ALfloat value);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Distance attenuation model.
 | 
			
		||||
 * Type:    ALint
 | 
			
		||||
 * Range:   [AL_NONE, AL_INVERSE_DISTANCE, AL_INVERSE_DISTANCE_CLAMPED,
 | 
			
		||||
 *           AL_LINEAR_DISTANCE, AL_LINEAR_DISTANCE_CLAMPED,
 | 
			
		||||
 *           AL_EXPONENT_DISTANCE, AL_EXPONENT_DISTANCE_CLAMPED]
 | 
			
		||||
 * Default: AL_INVERSE_DISTANCE_CLAMPED
 | 
			
		||||
 *
 | 
			
		||||
 * The model by which sources attenuate with distance.
 | 
			
		||||
 *
 | 
			
		||||
 * None     - No distance attenuation.
 | 
			
		||||
 * Inverse  - Doubling the distance halves the source gain.
 | 
			
		||||
 * Linear   - Linear gain scaling between the reference and max distances.
 | 
			
		||||
 * Exponent - Exponential gain dropoff.
 | 
			
		||||
 *
 | 
			
		||||
 * Clamped variations work like the non-clamped counterparts, except the
 | 
			
		||||
 * distance calculated is clamped between the reference and max distances.
 | 
			
		||||
 */
 | 
			
		||||
#define AL_DISTANCE_MODEL                        0xD000
 | 
			
		||||
AL_API void AL_APIENTRY alDistanceModel(ALenum distanceModel);
 | 
			
		||||
 | 
			
		||||
/** Distance model value. */
 | 
			
		||||
#define AL_INVERSE_DISTANCE                      0xD001
 | 
			
		||||
#define AL_INVERSE_DISTANCE_CLAMPED              0xD002
 | 
			
		||||
#define AL_LINEAR_DISTANCE                       0xD003
 | 
			
		||||
#define AL_LINEAR_DISTANCE_CLAMPED               0xD004
 | 
			
		||||
#define AL_EXPONENT_DISTANCE                     0xD005
 | 
			
		||||
#define AL_EXPONENT_DISTANCE_CLAMPED             0xD006
 | 
			
		||||
 | 
			
		||||
/** Renderer State management. */
 | 
			
		||||
AL_API void AL_APIENTRY alEnable(ALenum capability);
 | 
			
		||||
AL_API void AL_APIENTRY alDisable(ALenum capability);
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alIsEnabled(ALenum capability);
 | 
			
		||||
 | 
			
		||||
/** State retrieval. */
 | 
			
		||||
AL_API const ALchar* AL_APIENTRY alGetString(ALenum param);
 | 
			
		||||
AL_API void AL_APIENTRY alGetBooleanv(ALenum param, ALboolean *values);
 | 
			
		||||
AL_API void AL_APIENTRY alGetIntegerv(ALenum param, ALint *values);
 | 
			
		||||
AL_API void AL_APIENTRY alGetFloatv(ALenum param, ALfloat *values);
 | 
			
		||||
AL_API void AL_APIENTRY alGetDoublev(ALenum param, ALdouble *values);
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alGetBoolean(ALenum param);
 | 
			
		||||
AL_API ALint AL_APIENTRY alGetInteger(ALenum param);
 | 
			
		||||
AL_API ALfloat AL_APIENTRY alGetFloat(ALenum param);
 | 
			
		||||
AL_API ALdouble AL_APIENTRY alGetDouble(ALenum param);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error retrieval.
 | 
			
		||||
 *
 | 
			
		||||
 * Obtain the first error generated in the AL context since the last check.
 | 
			
		||||
 */
 | 
			
		||||
AL_API ALenum AL_APIENTRY alGetError(void);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Extension support.
 | 
			
		||||
 *
 | 
			
		||||
 * Query for the presence of an extension, and obtain any appropriate function
 | 
			
		||||
 * pointers and enum values.
 | 
			
		||||
 */
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alIsExtensionPresent(const ALchar *extname);
 | 
			
		||||
AL_API void* AL_APIENTRY alGetProcAddress(const ALchar *fname);
 | 
			
		||||
AL_API ALenum AL_APIENTRY alGetEnumValue(const ALchar *ename);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Set Listener parameters */
 | 
			
		||||
AL_API void AL_APIENTRY alListenerf(ALenum param, ALfloat value);
 | 
			
		||||
AL_API void AL_APIENTRY alListener3f(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
 | 
			
		||||
AL_API void AL_APIENTRY alListenerfv(ALenum param, const ALfloat *values);
 | 
			
		||||
AL_API void AL_APIENTRY alListeneri(ALenum param, ALint value);
 | 
			
		||||
AL_API void AL_APIENTRY alListener3i(ALenum param, ALint value1, ALint value2, ALint value3);
 | 
			
		||||
AL_API void AL_APIENTRY alListeneriv(ALenum param, const ALint *values);
 | 
			
		||||
 | 
			
		||||
/** Get Listener parameters */
 | 
			
		||||
AL_API void AL_APIENTRY alGetListenerf(ALenum param, ALfloat *value);
 | 
			
		||||
AL_API void AL_APIENTRY alGetListener3f(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
 | 
			
		||||
AL_API void AL_APIENTRY alGetListenerfv(ALenum param, ALfloat *values);
 | 
			
		||||
AL_API void AL_APIENTRY alGetListeneri(ALenum param, ALint *value);
 | 
			
		||||
AL_API void AL_APIENTRY alGetListener3i(ALenum param, ALint *value1, ALint *value2, ALint *value3);
 | 
			
		||||
AL_API void AL_APIENTRY alGetListeneriv(ALenum param, ALint *values);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Create Source objects. */
 | 
			
		||||
AL_API void AL_APIENTRY alGenSources(ALsizei n, ALuint *sources);
 | 
			
		||||
/** Delete Source objects. */
 | 
			
		||||
AL_API void AL_APIENTRY alDeleteSources(ALsizei n, const ALuint *sources);
 | 
			
		||||
/** Verify a handle is a valid Source. */
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alIsSource(ALuint source);
 | 
			
		||||
 | 
			
		||||
/** Set Source parameters. */
 | 
			
		||||
AL_API void AL_APIENTRY alSourcef(ALuint source, ALenum param, ALfloat value);
 | 
			
		||||
AL_API void AL_APIENTRY alSource3f(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
 | 
			
		||||
AL_API void AL_APIENTRY alSourcefv(ALuint source, ALenum param, const ALfloat *values);
 | 
			
		||||
AL_API void AL_APIENTRY alSourcei(ALuint source, ALenum param, ALint value);
 | 
			
		||||
AL_API void AL_APIENTRY alSource3i(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3);
 | 
			
		||||
AL_API void AL_APIENTRY alSourceiv(ALuint source, ALenum param, const ALint *values);
 | 
			
		||||
 | 
			
		||||
/** Get Source parameters. */
 | 
			
		||||
AL_API void AL_APIENTRY alGetSourcef(ALuint source, ALenum param, ALfloat *value);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSource3f(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSourcefv(ALuint source, ALenum param, ALfloat *values);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSourcei(ALuint source,  ALenum param, ALint *value);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSource3i(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSourceiv(ALuint source,  ALenum param, ALint *values);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Play, replay, or resume (if paused) a list of Sources */
 | 
			
		||||
AL_API void AL_APIENTRY alSourcePlayv(ALsizei n, const ALuint *sources);
 | 
			
		||||
/** Stop a list of Sources */
 | 
			
		||||
AL_API void AL_APIENTRY alSourceStopv(ALsizei n, const ALuint *sources);
 | 
			
		||||
/** Rewind a list of Sources */
 | 
			
		||||
AL_API void AL_APIENTRY alSourceRewindv(ALsizei n, const ALuint *sources);
 | 
			
		||||
/** Pause a list of Sources */
 | 
			
		||||
AL_API void AL_APIENTRY alSourcePausev(ALsizei n, const ALuint *sources);
 | 
			
		||||
 | 
			
		||||
/** Play, replay, or resume a Source */
 | 
			
		||||
AL_API void AL_APIENTRY alSourcePlay(ALuint source);
 | 
			
		||||
/** Stop a Source */
 | 
			
		||||
AL_API void AL_APIENTRY alSourceStop(ALuint source);
 | 
			
		||||
/** Rewind a Source (set playback postiton to beginning) */
 | 
			
		||||
AL_API void AL_APIENTRY alSourceRewind(ALuint source);
 | 
			
		||||
/** Pause a Source */
 | 
			
		||||
AL_API void AL_APIENTRY alSourcePause(ALuint source);
 | 
			
		||||
 | 
			
		||||
/** Queue buffers onto a source */
 | 
			
		||||
AL_API void AL_APIENTRY alSourceQueueBuffers(ALuint source, ALsizei nb, const ALuint *buffers);
 | 
			
		||||
/** Unqueue processed buffers from a source */
 | 
			
		||||
AL_API void AL_APIENTRY alSourceUnqueueBuffers(ALuint source, ALsizei nb, ALuint *buffers);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Create Buffer objects */
 | 
			
		||||
AL_API void AL_APIENTRY alGenBuffers(ALsizei n, ALuint *buffers);
 | 
			
		||||
/** Delete Buffer objects */
 | 
			
		||||
AL_API void AL_APIENTRY alDeleteBuffers(ALsizei n, const ALuint *buffers);
 | 
			
		||||
/** Verify a handle is a valid Buffer */
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alIsBuffer(ALuint buffer);
 | 
			
		||||
 | 
			
		||||
/** Specifies the data to be copied into a buffer */
 | 
			
		||||
AL_API void AL_APIENTRY alBufferData(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq);
 | 
			
		||||
 | 
			
		||||
/** Set Buffer parameters, */
 | 
			
		||||
AL_API void AL_APIENTRY alBufferf(ALuint buffer, ALenum param, ALfloat value);
 | 
			
		||||
AL_API void AL_APIENTRY alBuffer3f(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
 | 
			
		||||
AL_API void AL_APIENTRY alBufferfv(ALuint buffer, ALenum param, const ALfloat *values);
 | 
			
		||||
AL_API void AL_APIENTRY alBufferi(ALuint buffer, ALenum param, ALint value);
 | 
			
		||||
AL_API void AL_APIENTRY alBuffer3i(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3);
 | 
			
		||||
AL_API void AL_APIENTRY alBufferiv(ALuint buffer, ALenum param, const ALint *values);
 | 
			
		||||
 | 
			
		||||
/** Get Buffer parameters. */
 | 
			
		||||
AL_API void AL_APIENTRY alGetBufferf(ALuint buffer, ALenum param, ALfloat *value);
 | 
			
		||||
AL_API void AL_APIENTRY alGetBuffer3f(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
 | 
			
		||||
AL_API void AL_APIENTRY alGetBufferfv(ALuint buffer, ALenum param, ALfloat *values);
 | 
			
		||||
AL_API void AL_APIENTRY alGetBufferi(ALuint buffer, ALenum param, ALint *value);
 | 
			
		||||
AL_API void AL_APIENTRY alGetBuffer3i(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3);
 | 
			
		||||
AL_API void AL_APIENTRY alGetBufferiv(ALuint buffer, ALenum param, ALint *values);
 | 
			
		||||
 | 
			
		||||
/** Pointer-to-function type, useful for dynamically getting AL entry points. */
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALENABLE)(ALenum capability);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALDISABLE)(ALenum capability);
 | 
			
		||||
typedef ALboolean     (AL_APIENTRY *LPALISENABLED)(ALenum capability);
 | 
			
		||||
typedef const ALchar* (AL_APIENTRY *LPALGETSTRING)(ALenum param);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETBOOLEANV)(ALenum param, ALboolean *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETINTEGERV)(ALenum param, ALint *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETFLOATV)(ALenum param, ALfloat *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETDOUBLEV)(ALenum param, ALdouble *values);
 | 
			
		||||
typedef ALboolean     (AL_APIENTRY *LPALGETBOOLEAN)(ALenum param);
 | 
			
		||||
typedef ALint         (AL_APIENTRY *LPALGETINTEGER)(ALenum param);
 | 
			
		||||
typedef ALfloat       (AL_APIENTRY *LPALGETFLOAT)(ALenum param);
 | 
			
		||||
typedef ALdouble      (AL_APIENTRY *LPALGETDOUBLE)(ALenum param);
 | 
			
		||||
typedef ALenum        (AL_APIENTRY *LPALGETERROR)(void);
 | 
			
		||||
typedef ALboolean     (AL_APIENTRY *LPALISEXTENSIONPRESENT)(const ALchar *extname);
 | 
			
		||||
typedef void*         (AL_APIENTRY *LPALGETPROCADDRESS)(const ALchar *fname);
 | 
			
		||||
typedef ALenum        (AL_APIENTRY *LPALGETENUMVALUE)(const ALchar *ename);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALLISTENERF)(ALenum param, ALfloat value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALLISTENER3F)(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALLISTENERFV)(ALenum param, const ALfloat *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALLISTENERI)(ALenum param, ALint value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALLISTENER3I)(ALenum param, ALint value1, ALint value2, ALint value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALLISTENERIV)(ALenum param, const ALint *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETLISTENERF)(ALenum param, ALfloat *value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETLISTENER3F)(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETLISTENERFV)(ALenum param, ALfloat *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETLISTENERI)(ALenum param, ALint *value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETLISTENER3I)(ALenum param, ALint *value1, ALint *value2, ALint *value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETLISTENERIV)(ALenum param, ALint *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGENSOURCES)(ALsizei n, ALuint *sources);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALDELETESOURCES)(ALsizei n, const ALuint *sources);
 | 
			
		||||
typedef ALboolean     (AL_APIENTRY *LPALISSOURCE)(ALuint source);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEF)(ALuint source, ALenum param, ALfloat value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCE3F)(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEFV)(ALuint source, ALenum param, const ALfloat *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEI)(ALuint source, ALenum param, ALint value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCE3I)(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEIV)(ALuint source, ALenum param, const ALint *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETSOURCEF)(ALuint source, ALenum param, ALfloat *value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETSOURCE3F)(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETSOURCEFV)(ALuint source, ALenum param, ALfloat *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETSOURCEI)(ALuint source, ALenum param, ALint *value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETSOURCE3I)(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETSOURCEIV)(ALuint source, ALenum param, ALint *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEPLAYV)(ALsizei n, const ALuint *sources);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCESTOPV)(ALsizei n, const ALuint *sources);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEREWINDV)(ALsizei n, const ALuint *sources);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEPAUSEV)(ALsizei n, const ALuint *sources);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEPLAY)(ALuint source);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCESTOP)(ALuint source);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEREWIND)(ALuint source);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEPAUSE)(ALuint source);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEQUEUEBUFFERS)(ALuint source, ALsizei nb, const ALuint *buffers);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSOURCEUNQUEUEBUFFERS)(ALuint source, ALsizei nb, ALuint *buffers);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGENBUFFERS)(ALsizei n, ALuint *buffers);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALDELETEBUFFERS)(ALsizei n, const ALuint *buffers);
 | 
			
		||||
typedef ALboolean     (AL_APIENTRY *LPALISBUFFER)(ALuint buffer);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALBUFFERDATA)(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALBUFFERF)(ALuint buffer, ALenum param, ALfloat value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALBUFFER3F)(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALBUFFERFV)(ALuint buffer, ALenum param, const ALfloat *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALBUFFERI)(ALuint buffer, ALenum param, ALint value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALBUFFER3I)(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALBUFFERIV)(ALuint buffer, ALenum param, const ALint *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETBUFFERF)(ALuint buffer, ALenum param, ALfloat *value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETBUFFER3F)(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETBUFFERFV)(ALuint buffer, ALenum param, ALfloat *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETBUFFERI)(ALuint buffer, ALenum param, ALint *value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETBUFFER3I)(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALGETBUFFERIV)(ALuint buffer, ALenum param, ALint *values);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALDOPPLERFACTOR)(ALfloat value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALDOPPLERVELOCITY)(ALfloat value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALSPEEDOFSOUND)(ALfloat value);
 | 
			
		||||
typedef void          (AL_APIENTRY *LPALDISTANCEMODEL)(ALenum distanceModel);
 | 
			
		||||
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
}  /* extern "C" */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* AL_AL_H */
 | 
			
		||||
@@ -1,237 +0,0 @@
 | 
			
		||||
#ifndef AL_ALC_H
 | 
			
		||||
#define AL_ALC_H
 | 
			
		||||
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_API
 | 
			
		||||
 #if defined(AL_LIBTYPE_STATIC)
 | 
			
		||||
  #define ALC_API
 | 
			
		||||
 #elif defined(_WIN32)
 | 
			
		||||
  #define ALC_API __declspec(dllimport)
 | 
			
		||||
 #else
 | 
			
		||||
  #define ALC_API extern
 | 
			
		||||
 #endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(_WIN32)
 | 
			
		||||
 #define ALC_APIENTRY __cdecl
 | 
			
		||||
#else
 | 
			
		||||
 #define ALC_APIENTRY
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Deprecated macro. */
 | 
			
		||||
#define ALCAPI                                   ALC_API
 | 
			
		||||
#define ALCAPIENTRY                              ALC_APIENTRY
 | 
			
		||||
#define ALC_INVALID                              0
 | 
			
		||||
 | 
			
		||||
/** Supported ALC version? */
 | 
			
		||||
#define ALC_VERSION_0_1                          1
 | 
			
		||||
 | 
			
		||||
/** Opaque device handle */
 | 
			
		||||
typedef struct ALCdevice_struct ALCdevice;
 | 
			
		||||
/** Opaque context handle */
 | 
			
		||||
typedef struct ALCcontext_struct ALCcontext;
 | 
			
		||||
 | 
			
		||||
/** 8-bit boolean */
 | 
			
		||||
typedef char ALCboolean;
 | 
			
		||||
 | 
			
		||||
/** character */
 | 
			
		||||
typedef char ALCchar;
 | 
			
		||||
 | 
			
		||||
/** signed 8-bit 2's complement integer */
 | 
			
		||||
typedef signed char ALCbyte;
 | 
			
		||||
 | 
			
		||||
/** unsigned 8-bit integer */
 | 
			
		||||
typedef unsigned char ALCubyte;
 | 
			
		||||
 | 
			
		||||
/** signed 16-bit 2's complement integer */
 | 
			
		||||
typedef short ALCshort;
 | 
			
		||||
 | 
			
		||||
/** unsigned 16-bit integer */
 | 
			
		||||
typedef unsigned short ALCushort;
 | 
			
		||||
 | 
			
		||||
/** signed 32-bit 2's complement integer */
 | 
			
		||||
typedef int ALCint;
 | 
			
		||||
 | 
			
		||||
/** unsigned 32-bit integer */
 | 
			
		||||
typedef unsigned int ALCuint;
 | 
			
		||||
 | 
			
		||||
/** non-negative 32-bit binary integer size */
 | 
			
		||||
typedef int ALCsizei;
 | 
			
		||||
 | 
			
		||||
/** enumerated 32-bit value */
 | 
			
		||||
typedef int ALCenum;
 | 
			
		||||
 | 
			
		||||
/** 32-bit IEEE754 floating-point */
 | 
			
		||||
typedef float ALCfloat;
 | 
			
		||||
 | 
			
		||||
/** 64-bit IEEE754 floating-point */
 | 
			
		||||
typedef double ALCdouble;
 | 
			
		||||
 | 
			
		||||
/** void type (for opaque pointers only) */
 | 
			
		||||
typedef void ALCvoid;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Enumerant values begin at column 50. No tabs. */
 | 
			
		||||
 | 
			
		||||
/** Boolean False. */
 | 
			
		||||
#define ALC_FALSE                                0
 | 
			
		||||
 | 
			
		||||
/** Boolean True. */
 | 
			
		||||
#define ALC_TRUE                                 1
 | 
			
		||||
 | 
			
		||||
/** Context attribute: <int> Hz. */
 | 
			
		||||
#define ALC_FREQUENCY                            0x1007
 | 
			
		||||
 | 
			
		||||
/** Context attribute: <int> Hz. */
 | 
			
		||||
#define ALC_REFRESH                              0x1008
 | 
			
		||||
 | 
			
		||||
/** Context attribute: AL_TRUE or AL_FALSE. */
 | 
			
		||||
#define ALC_SYNC                                 0x1009
 | 
			
		||||
 | 
			
		||||
/** Context attribute: <int> requested Mono (3D) Sources. */
 | 
			
		||||
#define ALC_MONO_SOURCES                         0x1010
 | 
			
		||||
 | 
			
		||||
/** Context attribute: <int> requested Stereo Sources. */
 | 
			
		||||
#define ALC_STEREO_SOURCES                       0x1011
 | 
			
		||||
 | 
			
		||||
/** No error. */
 | 
			
		||||
#define ALC_NO_ERROR                             0
 | 
			
		||||
 | 
			
		||||
/** Invalid device handle. */
 | 
			
		||||
#define ALC_INVALID_DEVICE                       0xA001
 | 
			
		||||
 | 
			
		||||
/** Invalid context handle. */
 | 
			
		||||
#define ALC_INVALID_CONTEXT                      0xA002
 | 
			
		||||
 | 
			
		||||
/** Invalid enum parameter passed to an ALC call. */
 | 
			
		||||
#define ALC_INVALID_ENUM                         0xA003
 | 
			
		||||
 | 
			
		||||
/** Invalid value parameter passed to an ALC call. */
 | 
			
		||||
#define ALC_INVALID_VALUE                        0xA004
 | 
			
		||||
 | 
			
		||||
/** Out of memory. */
 | 
			
		||||
#define ALC_OUT_OF_MEMORY                        0xA005
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Runtime ALC version. */
 | 
			
		||||
#define ALC_MAJOR_VERSION                        0x1000
 | 
			
		||||
#define ALC_MINOR_VERSION                        0x1001
 | 
			
		||||
 | 
			
		||||
/** Context attribute list properties. */
 | 
			
		||||
#define ALC_ATTRIBUTES_SIZE                      0x1002
 | 
			
		||||
#define ALC_ALL_ATTRIBUTES                       0x1003
 | 
			
		||||
 | 
			
		||||
/** String for the default device specifier. */
 | 
			
		||||
#define ALC_DEFAULT_DEVICE_SPECIFIER             0x1004
 | 
			
		||||
/**
 | 
			
		||||
 * String for the given device's specifier.
 | 
			
		||||
 *
 | 
			
		||||
 * If device handle is NULL, it is instead a null-char separated list of
 | 
			
		||||
 * strings of known device specifiers (list ends with an empty string).
 | 
			
		||||
 */
 | 
			
		||||
#define ALC_DEVICE_SPECIFIER                     0x1005
 | 
			
		||||
/** String for space-separated list of ALC extensions. */
 | 
			
		||||
#define ALC_EXTENSIONS                           0x1006
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Capture extension */
 | 
			
		||||
#define ALC_EXT_CAPTURE 1
 | 
			
		||||
/**
 | 
			
		||||
 * String for the given capture device's specifier.
 | 
			
		||||
 *
 | 
			
		||||
 * If device handle is NULL, it is instead a null-char separated list of
 | 
			
		||||
 * strings of known capture device specifiers (list ends with an empty string).
 | 
			
		||||
 */
 | 
			
		||||
#define ALC_CAPTURE_DEVICE_SPECIFIER             0x310
 | 
			
		||||
/** String for the default capture device specifier. */
 | 
			
		||||
#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER     0x311
 | 
			
		||||
/** Number of sample frames available for capture. */
 | 
			
		||||
#define ALC_CAPTURE_SAMPLES                      0x312
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Enumerate All extension */
 | 
			
		||||
#define ALC_ENUMERATE_ALL_EXT 1
 | 
			
		||||
/** String for the default extended device specifier. */
 | 
			
		||||
#define ALC_DEFAULT_ALL_DEVICES_SPECIFIER        0x1012
 | 
			
		||||
/**
 | 
			
		||||
 * String for the given extended device's specifier.
 | 
			
		||||
 *
 | 
			
		||||
 * If device handle is NULL, it is instead a null-char separated list of
 | 
			
		||||
 * strings of known extended device specifiers (list ends with an empty string).
 | 
			
		||||
 */
 | 
			
		||||
#define ALC_ALL_DEVICES_SPECIFIER                0x1013
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** Context management. */
 | 
			
		||||
ALC_API ALCcontext* ALC_APIENTRY alcCreateContext(ALCdevice *device, const ALCint* attrlist);
 | 
			
		||||
ALC_API ALCboolean  ALC_APIENTRY alcMakeContextCurrent(ALCcontext *context);
 | 
			
		||||
ALC_API void        ALC_APIENTRY alcProcessContext(ALCcontext *context);
 | 
			
		||||
ALC_API void        ALC_APIENTRY alcSuspendContext(ALCcontext *context);
 | 
			
		||||
ALC_API void        ALC_APIENTRY alcDestroyContext(ALCcontext *context);
 | 
			
		||||
ALC_API ALCcontext* ALC_APIENTRY alcGetCurrentContext(void);
 | 
			
		||||
ALC_API ALCdevice*  ALC_APIENTRY alcGetContextsDevice(ALCcontext *context);
 | 
			
		||||
 | 
			
		||||
/** Device management. */
 | 
			
		||||
ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *devicename);
 | 
			
		||||
ALC_API ALCboolean ALC_APIENTRY alcCloseDevice(ALCdevice *device);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error support.
 | 
			
		||||
 *
 | 
			
		||||
 * Obtain the most recent Device error.
 | 
			
		||||
 */
 | 
			
		||||
ALC_API ALCenum ALC_APIENTRY alcGetError(ALCdevice *device);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Extension support.
 | 
			
		||||
 *
 | 
			
		||||
 * Query for the presence of an extension, and obtain any appropriate
 | 
			
		||||
 * function pointers and enum values.
 | 
			
		||||
 */
 | 
			
		||||
ALC_API ALCboolean ALC_APIENTRY alcIsExtensionPresent(ALCdevice *device, const ALCchar *extname);
 | 
			
		||||
ALC_API void*      ALC_APIENTRY alcGetProcAddress(ALCdevice *device, const ALCchar *funcname);
 | 
			
		||||
ALC_API ALCenum    ALC_APIENTRY alcGetEnumValue(ALCdevice *device, const ALCchar *enumname);
 | 
			
		||||
 | 
			
		||||
/** Query function. */
 | 
			
		||||
ALC_API const ALCchar* ALC_APIENTRY alcGetString(ALCdevice *device, ALCenum param);
 | 
			
		||||
ALC_API void           ALC_APIENTRY alcGetIntegerv(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values);
 | 
			
		||||
 | 
			
		||||
/** Capture function. */
 | 
			
		||||
ALC_API ALCdevice* ALC_APIENTRY alcCaptureOpenDevice(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize);
 | 
			
		||||
ALC_API ALCboolean ALC_APIENTRY alcCaptureCloseDevice(ALCdevice *device);
 | 
			
		||||
ALC_API void       ALC_APIENTRY alcCaptureStart(ALCdevice *device);
 | 
			
		||||
ALC_API void       ALC_APIENTRY alcCaptureStop(ALCdevice *device);
 | 
			
		||||
ALC_API void       ALC_APIENTRY alcCaptureSamples(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
 | 
			
		||||
 | 
			
		||||
/** Pointer-to-function type, useful for dynamically getting ALC entry points. */
 | 
			
		||||
typedef ALCcontext*    (ALC_APIENTRY *LPALCCREATECONTEXT)(ALCdevice *device, const ALCint *attrlist);
 | 
			
		||||
typedef ALCboolean     (ALC_APIENTRY *LPALCMAKECONTEXTCURRENT)(ALCcontext *context);
 | 
			
		||||
typedef void           (ALC_APIENTRY *LPALCPROCESSCONTEXT)(ALCcontext *context);
 | 
			
		||||
typedef void           (ALC_APIENTRY *LPALCSUSPENDCONTEXT)(ALCcontext *context);
 | 
			
		||||
typedef void           (ALC_APIENTRY *LPALCDESTROYCONTEXT)(ALCcontext *context);
 | 
			
		||||
typedef ALCcontext*    (ALC_APIENTRY *LPALCGETCURRENTCONTEXT)(void);
 | 
			
		||||
typedef ALCdevice*     (ALC_APIENTRY *LPALCGETCONTEXTSDEVICE)(ALCcontext *context);
 | 
			
		||||
typedef ALCdevice*     (ALC_APIENTRY *LPALCOPENDEVICE)(const ALCchar *devicename);
 | 
			
		||||
typedef ALCboolean     (ALC_APIENTRY *LPALCCLOSEDEVICE)(ALCdevice *device);
 | 
			
		||||
typedef ALCenum        (ALC_APIENTRY *LPALCGETERROR)(ALCdevice *device);
 | 
			
		||||
typedef ALCboolean     (ALC_APIENTRY *LPALCISEXTENSIONPRESENT)(ALCdevice *device, const ALCchar *extname);
 | 
			
		||||
typedef void*          (ALC_APIENTRY *LPALCGETPROCADDRESS)(ALCdevice *device, const ALCchar *funcname);
 | 
			
		||||
typedef ALCenum        (ALC_APIENTRY *LPALCGETENUMVALUE)(ALCdevice *device, const ALCchar *enumname);
 | 
			
		||||
typedef const ALCchar* (ALC_APIENTRY *LPALCGETSTRING)(ALCdevice *device, ALCenum param);
 | 
			
		||||
typedef void           (ALC_APIENTRY *LPALCGETINTEGERV)(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values);
 | 
			
		||||
typedef ALCdevice*     (ALC_APIENTRY *LPALCCAPTUREOPENDEVICE)(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize);
 | 
			
		||||
typedef ALCboolean     (ALC_APIENTRY *LPALCCAPTURECLOSEDEVICE)(ALCdevice *device);
 | 
			
		||||
typedef void           (ALC_APIENTRY *LPALCCAPTURESTART)(ALCdevice *device);
 | 
			
		||||
typedef void           (ALC_APIENTRY *LPALCCAPTURESTOP)(ALCdevice *device);
 | 
			
		||||
typedef void           (ALC_APIENTRY *LPALCCAPTURESAMPLES)(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
 | 
			
		||||
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* AL_ALC_H */
 | 
			
		||||
@@ -1,455 +0,0 @@
 | 
			
		||||
/**
 | 
			
		||||
 * OpenAL cross platform audio library
 | 
			
		||||
 * Copyright (C) 2008 by authors.
 | 
			
		||||
 * This library is free software; you can redistribute it and/or
 | 
			
		||||
 *  modify it under the terms of the GNU Library General Public
 | 
			
		||||
 *  License as published by the Free Software Foundation; either
 | 
			
		||||
 *  version 2 of the License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This library is distributed in the hope that it will be useful,
 | 
			
		||||
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
 *  Library General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU Library General Public
 | 
			
		||||
 *  License along with this library; if not, write to the
 | 
			
		||||
 *  Free Software Foundation, Inc.,
 | 
			
		||||
 *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 | 
			
		||||
 * Or go to http://www.gnu.org/copyleft/lgpl.html
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef AL_ALEXT_H
 | 
			
		||||
#define AL_ALEXT_H
 | 
			
		||||
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
/* Define int64_t and uint64_t types */
 | 
			
		||||
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
 | 
			
		||||
#include <inttypes.h>
 | 
			
		||||
#elif defined(_WIN32) && defined(__GNUC__)
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#elif defined(_WIN32)
 | 
			
		||||
typedef __int64 int64_t;
 | 
			
		||||
typedef unsigned __int64 uint64_t;
 | 
			
		||||
#else
 | 
			
		||||
/* Fallback if nothing above works */
 | 
			
		||||
#include <inttypes.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "alc.h"
 | 
			
		||||
#include "al.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_LOKI_IMA_ADPCM_format
 | 
			
		||||
#define AL_LOKI_IMA_ADPCM_format 1
 | 
			
		||||
#define AL_FORMAT_IMA_ADPCM_MONO16_EXT           0x10000
 | 
			
		||||
#define AL_FORMAT_IMA_ADPCM_STEREO16_EXT         0x10001
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_LOKI_WAVE_format
 | 
			
		||||
#define AL_LOKI_WAVE_format 1
 | 
			
		||||
#define AL_FORMAT_WAVE_EXT                       0x10002
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_vorbis
 | 
			
		||||
#define AL_EXT_vorbis 1
 | 
			
		||||
#define AL_FORMAT_VORBIS_EXT                     0x10003
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_LOKI_quadriphonic
 | 
			
		||||
#define AL_LOKI_quadriphonic 1
 | 
			
		||||
#define AL_FORMAT_QUAD8_LOKI                     0x10004
 | 
			
		||||
#define AL_FORMAT_QUAD16_LOKI                    0x10005
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_float32
 | 
			
		||||
#define AL_EXT_float32 1
 | 
			
		||||
#define AL_FORMAT_MONO_FLOAT32                   0x10010
 | 
			
		||||
#define AL_FORMAT_STEREO_FLOAT32                 0x10011
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_double
 | 
			
		||||
#define AL_EXT_double 1
 | 
			
		||||
#define AL_FORMAT_MONO_DOUBLE_EXT                0x10012
 | 
			
		||||
#define AL_FORMAT_STEREO_DOUBLE_EXT              0x10013
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_MULAW
 | 
			
		||||
#define AL_EXT_MULAW 1
 | 
			
		||||
#define AL_FORMAT_MONO_MULAW_EXT                 0x10014
 | 
			
		||||
#define AL_FORMAT_STEREO_MULAW_EXT               0x10015
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_ALAW
 | 
			
		||||
#define AL_EXT_ALAW 1
 | 
			
		||||
#define AL_FORMAT_MONO_ALAW_EXT                  0x10016
 | 
			
		||||
#define AL_FORMAT_STEREO_ALAW_EXT                0x10017
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_LOKI_audio_channel
 | 
			
		||||
#define ALC_LOKI_audio_channel 1
 | 
			
		||||
#define ALC_CHAN_MAIN_LOKI                       0x500001
 | 
			
		||||
#define ALC_CHAN_PCM_LOKI                        0x500002
 | 
			
		||||
#define ALC_CHAN_CD_LOKI                         0x500003
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_MCFORMATS
 | 
			
		||||
#define AL_EXT_MCFORMATS 1
 | 
			
		||||
#define AL_FORMAT_QUAD8                          0x1204
 | 
			
		||||
#define AL_FORMAT_QUAD16                         0x1205
 | 
			
		||||
#define AL_FORMAT_QUAD32                         0x1206
 | 
			
		||||
#define AL_FORMAT_REAR8                          0x1207
 | 
			
		||||
#define AL_FORMAT_REAR16                         0x1208
 | 
			
		||||
#define AL_FORMAT_REAR32                         0x1209
 | 
			
		||||
#define AL_FORMAT_51CHN8                         0x120A
 | 
			
		||||
#define AL_FORMAT_51CHN16                        0x120B
 | 
			
		||||
#define AL_FORMAT_51CHN32                        0x120C
 | 
			
		||||
#define AL_FORMAT_61CHN8                         0x120D
 | 
			
		||||
#define AL_FORMAT_61CHN16                        0x120E
 | 
			
		||||
#define AL_FORMAT_61CHN32                        0x120F
 | 
			
		||||
#define AL_FORMAT_71CHN8                         0x1210
 | 
			
		||||
#define AL_FORMAT_71CHN16                        0x1211
 | 
			
		||||
#define AL_FORMAT_71CHN32                        0x1212
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_MULAW_MCFORMATS
 | 
			
		||||
#define AL_EXT_MULAW_MCFORMATS 1
 | 
			
		||||
#define AL_FORMAT_MONO_MULAW                     0x10014
 | 
			
		||||
#define AL_FORMAT_STEREO_MULAW                   0x10015
 | 
			
		||||
#define AL_FORMAT_QUAD_MULAW                     0x10021
 | 
			
		||||
#define AL_FORMAT_REAR_MULAW                     0x10022
 | 
			
		||||
#define AL_FORMAT_51CHN_MULAW                    0x10023
 | 
			
		||||
#define AL_FORMAT_61CHN_MULAW                    0x10024
 | 
			
		||||
#define AL_FORMAT_71CHN_MULAW                    0x10025
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_IMA4
 | 
			
		||||
#define AL_EXT_IMA4 1
 | 
			
		||||
#define AL_FORMAT_MONO_IMA4                      0x1300
 | 
			
		||||
#define AL_FORMAT_STEREO_IMA4                    0x1301
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_STATIC_BUFFER
 | 
			
		||||
#define AL_EXT_STATIC_BUFFER 1
 | 
			
		||||
typedef ALvoid (AL_APIENTRY*PFNALBUFFERDATASTATICPROC)(const ALint,ALenum,ALvoid*,ALsizei,ALsizei);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alBufferDataStatic(const ALint buffer, ALenum format, ALvoid *data, ALsizei len, ALsizei freq);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_EXT_EFX
 | 
			
		||||
#define ALC_EXT_EFX 1
 | 
			
		||||
#include "efx.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_EXT_disconnect
 | 
			
		||||
#define ALC_EXT_disconnect 1
 | 
			
		||||
#define ALC_CONNECTED                            0x313
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_EXT_thread_local_context
 | 
			
		||||
#define ALC_EXT_thread_local_context 1
 | 
			
		||||
typedef ALCboolean  (ALC_APIENTRY*PFNALCSETTHREADCONTEXTPROC)(ALCcontext *context);
 | 
			
		||||
typedef ALCcontext* (ALC_APIENTRY*PFNALCGETTHREADCONTEXTPROC)(void);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
ALC_API ALCboolean  ALC_APIENTRY alcSetThreadContext(ALCcontext *context);
 | 
			
		||||
ALC_API ALCcontext* ALC_APIENTRY alcGetThreadContext(void);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_source_distance_model
 | 
			
		||||
#define AL_EXT_source_distance_model 1
 | 
			
		||||
#define AL_SOURCE_DISTANCE_MODEL                 0x200
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_buffer_sub_data
 | 
			
		||||
#define AL_SOFT_buffer_sub_data 1
 | 
			
		||||
#define AL_BYTE_RW_OFFSETS_SOFT                  0x1031
 | 
			
		||||
#define AL_SAMPLE_RW_OFFSETS_SOFT                0x1032
 | 
			
		||||
typedef ALvoid (AL_APIENTRY*PFNALBUFFERSUBDATASOFTPROC)(ALuint,ALenum,const ALvoid*,ALsizei,ALsizei);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alBufferSubDataSOFT(ALuint buffer,ALenum format,const ALvoid *data,ALsizei offset,ALsizei length);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_loop_points
 | 
			
		||||
#define AL_SOFT_loop_points 1
 | 
			
		||||
#define AL_LOOP_POINTS_SOFT                      0x2015
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_FOLDBACK
 | 
			
		||||
#define AL_EXT_FOLDBACK 1
 | 
			
		||||
#define AL_EXT_FOLDBACK_NAME                     "AL_EXT_FOLDBACK"
 | 
			
		||||
#define AL_FOLDBACK_EVENT_BLOCK                  0x4112
 | 
			
		||||
#define AL_FOLDBACK_EVENT_START                  0x4111
 | 
			
		||||
#define AL_FOLDBACK_EVENT_STOP                   0x4113
 | 
			
		||||
#define AL_FOLDBACK_MODE_MONO                    0x4101
 | 
			
		||||
#define AL_FOLDBACK_MODE_STEREO                  0x4102
 | 
			
		||||
typedef void (AL_APIENTRY*LPALFOLDBACKCALLBACK)(ALenum,ALsizei);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTART)(ALenum,ALsizei,ALsizei,ALfloat*,LPALFOLDBACKCALLBACK);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTOP)(void);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
AL_API void AL_APIENTRY alRequestFoldbackStart(ALenum mode,ALsizei count,ALsizei length,ALfloat *mem,LPALFOLDBACKCALLBACK callback);
 | 
			
		||||
AL_API void AL_APIENTRY alRequestFoldbackStop(void);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_EXT_DEDICATED
 | 
			
		||||
#define ALC_EXT_DEDICATED 1
 | 
			
		||||
#define AL_DEDICATED_GAIN                        0x0001
 | 
			
		||||
#define AL_EFFECT_DEDICATED_DIALOGUE             0x9001
 | 
			
		||||
#define AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT 0x9000
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_buffer_samples
 | 
			
		||||
#define AL_SOFT_buffer_samples 1
 | 
			
		||||
/* Channel configurations */
 | 
			
		||||
#define AL_MONO_SOFT                             0x1500
 | 
			
		||||
#define AL_STEREO_SOFT                           0x1501
 | 
			
		||||
#define AL_REAR_SOFT                             0x1502
 | 
			
		||||
#define AL_QUAD_SOFT                             0x1503
 | 
			
		||||
#define AL_5POINT1_SOFT                          0x1504
 | 
			
		||||
#define AL_6POINT1_SOFT                          0x1505
 | 
			
		||||
#define AL_7POINT1_SOFT                          0x1506
 | 
			
		||||
 | 
			
		||||
/* Sample types */
 | 
			
		||||
#define AL_BYTE_SOFT                             0x1400
 | 
			
		||||
#define AL_UNSIGNED_BYTE_SOFT                    0x1401
 | 
			
		||||
#define AL_SHORT_SOFT                            0x1402
 | 
			
		||||
#define AL_UNSIGNED_SHORT_SOFT                   0x1403
 | 
			
		||||
#define AL_INT_SOFT                              0x1404
 | 
			
		||||
#define AL_UNSIGNED_INT_SOFT                     0x1405
 | 
			
		||||
#define AL_FLOAT_SOFT                            0x1406
 | 
			
		||||
#define AL_DOUBLE_SOFT                           0x1407
 | 
			
		||||
#define AL_BYTE3_SOFT                            0x1408
 | 
			
		||||
#define AL_UNSIGNED_BYTE3_SOFT                   0x1409
 | 
			
		||||
 | 
			
		||||
/* Storage formats */
 | 
			
		||||
#define AL_MONO8_SOFT                            0x1100
 | 
			
		||||
#define AL_MONO16_SOFT                           0x1101
 | 
			
		||||
#define AL_MONO32F_SOFT                          0x10010
 | 
			
		||||
#define AL_STEREO8_SOFT                          0x1102
 | 
			
		||||
#define AL_STEREO16_SOFT                         0x1103
 | 
			
		||||
#define AL_STEREO32F_SOFT                        0x10011
 | 
			
		||||
#define AL_QUAD8_SOFT                            0x1204
 | 
			
		||||
#define AL_QUAD16_SOFT                           0x1205
 | 
			
		||||
#define AL_QUAD32F_SOFT                          0x1206
 | 
			
		||||
#define AL_REAR8_SOFT                            0x1207
 | 
			
		||||
#define AL_REAR16_SOFT                           0x1208
 | 
			
		||||
#define AL_REAR32F_SOFT                          0x1209
 | 
			
		||||
#define AL_5POINT1_8_SOFT                        0x120A
 | 
			
		||||
#define AL_5POINT1_16_SOFT                       0x120B
 | 
			
		||||
#define AL_5POINT1_32F_SOFT                      0x120C
 | 
			
		||||
#define AL_6POINT1_8_SOFT                        0x120D
 | 
			
		||||
#define AL_6POINT1_16_SOFT                       0x120E
 | 
			
		||||
#define AL_6POINT1_32F_SOFT                      0x120F
 | 
			
		||||
#define AL_7POINT1_8_SOFT                        0x1210
 | 
			
		||||
#define AL_7POINT1_16_SOFT                       0x1211
 | 
			
		||||
#define AL_7POINT1_32F_SOFT                      0x1212
 | 
			
		||||
 | 
			
		||||
/* Buffer attributes */
 | 
			
		||||
#define AL_INTERNAL_FORMAT_SOFT                  0x2008
 | 
			
		||||
#define AL_BYTE_LENGTH_SOFT                      0x2009
 | 
			
		||||
#define AL_SAMPLE_LENGTH_SOFT                    0x200A
 | 
			
		||||
#define AL_SEC_LENGTH_SOFT                       0x200B
 | 
			
		||||
 | 
			
		||||
typedef void (AL_APIENTRY*LPALBUFFERSAMPLESSOFT)(ALuint,ALuint,ALenum,ALsizei,ALenum,ALenum,const ALvoid*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALBUFFERSUBSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,const ALvoid*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALGETBUFFERSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,ALvoid*);
 | 
			
		||||
typedef ALboolean (AL_APIENTRY*LPALISBUFFERFORMATSUPPORTEDSOFT)(ALenum);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
AL_API void AL_APIENTRY alBufferSamplesSOFT(ALuint buffer, ALuint samplerate, ALenum internalformat, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data);
 | 
			
		||||
AL_API void AL_APIENTRY alBufferSubSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data);
 | 
			
		||||
AL_API void AL_APIENTRY alGetBufferSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, ALvoid *data);
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alIsBufferFormatSupportedSOFT(ALenum format);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_direct_channels
 | 
			
		||||
#define AL_SOFT_direct_channels 1
 | 
			
		||||
#define AL_DIRECT_CHANNELS_SOFT                  0x1033
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_SOFT_loopback
 | 
			
		||||
#define ALC_SOFT_loopback 1
 | 
			
		||||
#define ALC_FORMAT_CHANNELS_SOFT                 0x1990
 | 
			
		||||
#define ALC_FORMAT_TYPE_SOFT                     0x1991
 | 
			
		||||
 | 
			
		||||
/* Sample types */
 | 
			
		||||
#define ALC_BYTE_SOFT                            0x1400
 | 
			
		||||
#define ALC_UNSIGNED_BYTE_SOFT                   0x1401
 | 
			
		||||
#define ALC_SHORT_SOFT                           0x1402
 | 
			
		||||
#define ALC_UNSIGNED_SHORT_SOFT                  0x1403
 | 
			
		||||
#define ALC_INT_SOFT                             0x1404
 | 
			
		||||
#define ALC_UNSIGNED_INT_SOFT                    0x1405
 | 
			
		||||
#define ALC_FLOAT_SOFT                           0x1406
 | 
			
		||||
 | 
			
		||||
/* Channel configurations */
 | 
			
		||||
#define ALC_MONO_SOFT                            0x1500
 | 
			
		||||
#define ALC_STEREO_SOFT                          0x1501
 | 
			
		||||
#define ALC_QUAD_SOFT                            0x1503
 | 
			
		||||
#define ALC_5POINT1_SOFT                         0x1504
 | 
			
		||||
#define ALC_6POINT1_SOFT                         0x1505
 | 
			
		||||
#define ALC_7POINT1_SOFT                         0x1506
 | 
			
		||||
 | 
			
		||||
typedef ALCdevice* (ALC_APIENTRY*LPALCLOOPBACKOPENDEVICESOFT)(const ALCchar*);
 | 
			
		||||
typedef ALCboolean (ALC_APIENTRY*LPALCISRENDERFORMATSUPPORTEDSOFT)(ALCdevice*,ALCsizei,ALCenum,ALCenum);
 | 
			
		||||
typedef void (ALC_APIENTRY*LPALCRENDERSAMPLESSOFT)(ALCdevice*,ALCvoid*,ALCsizei);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
ALC_API ALCdevice* ALC_APIENTRY alcLoopbackOpenDeviceSOFT(const ALCchar *deviceName);
 | 
			
		||||
ALC_API ALCboolean ALC_APIENTRY alcIsRenderFormatSupportedSOFT(ALCdevice *device, ALCsizei freq, ALCenum channels, ALCenum type);
 | 
			
		||||
ALC_API void ALC_APIENTRY alcRenderSamplesSOFT(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_STEREO_ANGLES
 | 
			
		||||
#define AL_EXT_STEREO_ANGLES 1
 | 
			
		||||
#define AL_STEREO_ANGLES                         0x1030
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_SOURCE_RADIUS
 | 
			
		||||
#define AL_EXT_SOURCE_RADIUS 1
 | 
			
		||||
#define AL_SOURCE_RADIUS                         0x1031
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_source_latency
 | 
			
		||||
#define AL_SOFT_source_latency 1
 | 
			
		||||
#define AL_SAMPLE_OFFSET_LATENCY_SOFT            0x1200
 | 
			
		||||
#define AL_SEC_OFFSET_LATENCY_SOFT               0x1201
 | 
			
		||||
typedef int64_t ALint64SOFT;
 | 
			
		||||
typedef uint64_t ALuint64SOFT;
 | 
			
		||||
typedef void (AL_APIENTRY*LPALSOURCEDSOFT)(ALuint,ALenum,ALdouble);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALSOURCE3DSOFT)(ALuint,ALenum,ALdouble,ALdouble,ALdouble);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALSOURCEDVSOFT)(ALuint,ALenum,const ALdouble*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALGETSOURCEDSOFT)(ALuint,ALenum,ALdouble*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALGETSOURCE3DSOFT)(ALuint,ALenum,ALdouble*,ALdouble*,ALdouble*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALGETSOURCEDVSOFT)(ALuint,ALenum,ALdouble*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALSOURCEI64SOFT)(ALuint,ALenum,ALint64SOFT);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALSOURCE3I64SOFT)(ALuint,ALenum,ALint64SOFT,ALint64SOFT,ALint64SOFT);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALSOURCEI64VSOFT)(ALuint,ALenum,const ALint64SOFT*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALGETSOURCEI64SOFT)(ALuint,ALenum,ALint64SOFT*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALGETSOURCE3I64SOFT)(ALuint,ALenum,ALint64SOFT*,ALint64SOFT*,ALint64SOFT*);
 | 
			
		||||
typedef void (AL_APIENTRY*LPALGETSOURCEI64VSOFT)(ALuint,ALenum,ALint64SOFT*);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
AL_API void AL_APIENTRY alSourcedSOFT(ALuint source, ALenum param, ALdouble value);
 | 
			
		||||
AL_API void AL_APIENTRY alSource3dSOFT(ALuint source, ALenum param, ALdouble value1, ALdouble value2, ALdouble value3);
 | 
			
		||||
AL_API void AL_APIENTRY alSourcedvSOFT(ALuint source, ALenum param, const ALdouble *values);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSourcedSOFT(ALuint source, ALenum param, ALdouble *value);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSource3dSOFT(ALuint source, ALenum param, ALdouble *value1, ALdouble *value2, ALdouble *value3);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSourcedvSOFT(ALuint source, ALenum param, ALdouble *values);
 | 
			
		||||
AL_API void AL_APIENTRY alSourcei64SOFT(ALuint source, ALenum param, ALint64SOFT value);
 | 
			
		||||
AL_API void AL_APIENTRY alSource3i64SOFT(ALuint source, ALenum param, ALint64SOFT value1, ALint64SOFT value2, ALint64SOFT value3);
 | 
			
		||||
AL_API void AL_APIENTRY alSourcei64vSOFT(ALuint source, ALenum param, const ALint64SOFT *values);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSourcei64SOFT(ALuint source, ALenum param, ALint64SOFT *value);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSource3i64SOFT(ALuint source, ALenum param, ALint64SOFT *value1, ALint64SOFT *value2, ALint64SOFT *value3);
 | 
			
		||||
AL_API void AL_APIENTRY alGetSourcei64vSOFT(ALuint source, ALenum param, ALint64SOFT *values);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_EXT_DEFAULT_FILTER_ORDER
 | 
			
		||||
#define ALC_EXT_DEFAULT_FILTER_ORDER 1
 | 
			
		||||
#define ALC_DEFAULT_FILTER_ORDER                 0x1100
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_deferred_updates
 | 
			
		||||
#define AL_SOFT_deferred_updates 1
 | 
			
		||||
#define AL_DEFERRED_UPDATES_SOFT                 0xC002
 | 
			
		||||
typedef ALvoid (AL_APIENTRY*LPALDEFERUPDATESSOFT)(void);
 | 
			
		||||
typedef ALvoid (AL_APIENTRY*LPALPROCESSUPDATESSOFT)(void);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alDeferUpdatesSOFT(void);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alProcessUpdatesSOFT(void);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_block_alignment
 | 
			
		||||
#define AL_SOFT_block_alignment 1
 | 
			
		||||
#define AL_UNPACK_BLOCK_ALIGNMENT_SOFT           0x200C
 | 
			
		||||
#define AL_PACK_BLOCK_ALIGNMENT_SOFT             0x200D
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_MSADPCM
 | 
			
		||||
#define AL_SOFT_MSADPCM 1
 | 
			
		||||
#define AL_FORMAT_MONO_MSADPCM_SOFT              0x1302
 | 
			
		||||
#define AL_FORMAT_STEREO_MSADPCM_SOFT            0x1303
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_source_length
 | 
			
		||||
#define AL_SOFT_source_length 1
 | 
			
		||||
/*#define AL_BYTE_LENGTH_SOFT                      0x2009*/
 | 
			
		||||
/*#define AL_SAMPLE_LENGTH_SOFT                    0x200A*/
 | 
			
		||||
/*#define AL_SEC_LENGTH_SOFT                       0x200B*/
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_SOFT_pause_device
 | 
			
		||||
#define ALC_SOFT_pause_device 1
 | 
			
		||||
typedef void (ALC_APIENTRY*LPALCDEVICEPAUSESOFT)(ALCdevice *device);
 | 
			
		||||
typedef void (ALC_APIENTRY*LPALCDEVICERESUMESOFT)(ALCdevice *device);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
ALC_API void ALC_APIENTRY alcDevicePauseSOFT(ALCdevice *device);
 | 
			
		||||
ALC_API void ALC_APIENTRY alcDeviceResumeSOFT(ALCdevice *device);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_BFORMAT
 | 
			
		||||
#define AL_EXT_BFORMAT 1
 | 
			
		||||
#define AL_FORMAT_BFORMAT2D_8                    0x20021
 | 
			
		||||
#define AL_FORMAT_BFORMAT2D_16                   0x20022
 | 
			
		||||
#define AL_FORMAT_BFORMAT2D_FLOAT32              0x20023
 | 
			
		||||
#define AL_FORMAT_BFORMAT3D_8                    0x20031
 | 
			
		||||
#define AL_FORMAT_BFORMAT3D_16                   0x20032
 | 
			
		||||
#define AL_FORMAT_BFORMAT3D_FLOAT32              0x20033
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_EXT_MULAW_BFORMAT
 | 
			
		||||
#define AL_EXT_MULAW_BFORMAT 1
 | 
			
		||||
#define AL_FORMAT_BFORMAT2D_MULAW                0x10031
 | 
			
		||||
#define AL_FORMAT_BFORMAT3D_MULAW                0x10032
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ALC_SOFT_HRTF
 | 
			
		||||
#define ALC_SOFT_HRTF 1
 | 
			
		||||
#define ALC_HRTF_SOFT                            0x1992
 | 
			
		||||
#define ALC_DONT_CARE_SOFT                       0x0002
 | 
			
		||||
#define ALC_HRTF_STATUS_SOFT                     0x1993
 | 
			
		||||
#define ALC_HRTF_DISABLED_SOFT                   0x0000
 | 
			
		||||
#define ALC_HRTF_ENABLED_SOFT                    0x0001
 | 
			
		||||
#define ALC_HRTF_DENIED_SOFT                     0x0002
 | 
			
		||||
#define ALC_HRTF_REQUIRED_SOFT                   0x0003
 | 
			
		||||
#define ALC_HRTF_HEADPHONES_DETECTED_SOFT        0x0004
 | 
			
		||||
#define ALC_HRTF_UNSUPPORTED_FORMAT_SOFT         0x0005
 | 
			
		||||
#define ALC_NUM_HRTF_SPECIFIERS_SOFT             0x1994
 | 
			
		||||
#define ALC_HRTF_SPECIFIER_SOFT                  0x1995
 | 
			
		||||
#define ALC_HRTF_ID_SOFT                         0x1996
 | 
			
		||||
typedef const ALCchar* (ALC_APIENTRY*LPALCGETSTRINGISOFT)(ALCdevice *device, ALCenum paramName, ALCsizei index);
 | 
			
		||||
typedef ALCboolean (ALC_APIENTRY*LPALCRESETDEVICESOFT)(ALCdevice *device, const ALCint *attribs);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
ALC_API const ALCchar* ALC_APIENTRY alcGetStringiSOFT(ALCdevice *device, ALCenum paramName, ALCsizei index);
 | 
			
		||||
ALC_API ALCboolean ALC_APIENTRY alcResetDeviceSOFT(ALCdevice *device, const ALCint *attribs);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_gain_clamp_ex
 | 
			
		||||
#define AL_SOFT_gain_clamp_ex 1
 | 
			
		||||
#define AL_GAIN_LIMIT_SOFT                       0x200E
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AL_SOFT_source_resampler
 | 
			
		||||
#define AL_SOFT_source_resampler
 | 
			
		||||
#define AL_NUM_RESAMPLERS_SOFT                   0x1210
 | 
			
		||||
#define AL_DEFAULT_RESAMPLER_SOFT                0x1211
 | 
			
		||||
#define AL_SOURCE_RESAMPLER_SOFT                 0x1212
 | 
			
		||||
#define AL_RESAMPLER_NAME_SOFT                   0x1213
 | 
			
		||||
typedef const ALchar* (AL_APIENTRY*LPALGETSTRINGISOFT)(ALenum pname, ALsizei index);
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
AL_API const ALchar* AL_APIENTRY alGetStringiSOFT(ALenum pname, ALsizei index);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
@@ -1,3 +0,0 @@
 | 
			
		||||
/* The tokens that would be defined here are already defined in efx.h. This
 | 
			
		||||
 * empty file is here to provide compatibility with Windows-based projects
 | 
			
		||||
 * that would include it. */
 | 
			
		||||
@@ -1,402 +0,0 @@
 | 
			
		||||
/* Reverb presets for EFX */
 | 
			
		||||
 | 
			
		||||
#ifndef EFX_PRESETS_H
 | 
			
		||||
#define EFX_PRESETS_H
 | 
			
		||||
 | 
			
		||||
#ifndef EFXEAXREVERBPROPERTIES_DEFINED
 | 
			
		||||
#define EFXEAXREVERBPROPERTIES_DEFINED
 | 
			
		||||
typedef struct {
 | 
			
		||||
    float flDensity;
 | 
			
		||||
    float flDiffusion;
 | 
			
		||||
    float flGain;
 | 
			
		||||
    float flGainHF;
 | 
			
		||||
    float flGainLF;
 | 
			
		||||
    float flDecayTime;
 | 
			
		||||
    float flDecayHFRatio;
 | 
			
		||||
    float flDecayLFRatio;
 | 
			
		||||
    float flReflectionsGain;
 | 
			
		||||
    float flReflectionsDelay;
 | 
			
		||||
    float flReflectionsPan[3];
 | 
			
		||||
    float flLateReverbGain;
 | 
			
		||||
    float flLateReverbDelay;
 | 
			
		||||
    float flLateReverbPan[3];
 | 
			
		||||
    float flEchoTime;
 | 
			
		||||
    float flEchoDepth;
 | 
			
		||||
    float flModulationTime;
 | 
			
		||||
    float flModulationDepth;
 | 
			
		||||
    float flAirAbsorptionGainHF;
 | 
			
		||||
    float flHFReference;
 | 
			
		||||
    float flLFReference;
 | 
			
		||||
    float flRoomRolloffFactor;
 | 
			
		||||
    int   iDecayHFLimit;
 | 
			
		||||
} EFXEAXREVERBPROPERTIES, *LPEFXEAXREVERBPROPERTIES;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Default Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_GENERIC \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.8913f, 1.0000f, 1.4900f, 0.8300f, 1.0000f, 0.0500f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PADDEDCELL \
 | 
			
		||||
    { 0.1715f, 1.0000f, 0.3162f, 0.0010f, 1.0000f, 0.1700f, 0.1000f, 1.0000f, 0.2500f, 0.0010f, { 0.0000f, 0.0000f, 0.0000f }, 1.2691f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ROOM \
 | 
			
		||||
    { 0.4287f, 1.0000f, 0.3162f, 0.5929f, 1.0000f, 0.4000f, 0.8300f, 1.0000f, 0.1503f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 1.0629f, 0.0030f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_BATHROOM \
 | 
			
		||||
    { 0.1715f, 1.0000f, 0.3162f, 0.2512f, 1.0000f, 1.4900f, 0.5400f, 1.0000f, 0.6531f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 3.2734f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_LIVINGROOM \
 | 
			
		||||
    { 0.9766f, 1.0000f, 0.3162f, 0.0010f, 1.0000f, 0.5000f, 0.1000f, 1.0000f, 0.2051f, 0.0030f, { 0.0000f, 0.0000f, 0.0000f }, 0.2805f, 0.0040f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_STONEROOM \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.7079f, 1.0000f, 2.3100f, 0.6400f, 1.0000f, 0.4411f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1003f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_AUDITORIUM \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.5781f, 1.0000f, 4.3200f, 0.5900f, 1.0000f, 0.4032f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.7170f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CONCERTHALL \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.5623f, 1.0000f, 3.9200f, 0.7000f, 1.0000f, 0.2427f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.9977f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CAVE \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 1.0000f, 1.0000f, 2.9100f, 1.3000f, 1.0000f, 0.5000f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.7063f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ARENA \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.4477f, 1.0000f, 7.2400f, 0.3300f, 1.0000f, 0.2612f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.0186f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_HANGAR \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.3162f, 1.0000f, 10.0500f, 0.2300f, 1.0000f, 0.5000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2560f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CARPETEDHALLWAY \
 | 
			
		||||
    { 0.4287f, 1.0000f, 0.3162f, 0.0100f, 1.0000f, 0.3000f, 0.1000f, 1.0000f, 0.1215f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 0.1531f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_HALLWAY \
 | 
			
		||||
    { 0.3645f, 1.0000f, 0.3162f, 0.7079f, 1.0000f, 1.4900f, 0.5900f, 1.0000f, 0.2458f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.6615f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_STONECORRIDOR \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.7612f, 1.0000f, 2.7000f, 0.7900f, 1.0000f, 0.2472f, 0.0130f, { 0.0000f, 0.0000f, 0.0000f }, 1.5758f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ALLEY \
 | 
			
		||||
    { 1.0000f, 0.3000f, 0.3162f, 0.7328f, 1.0000f, 1.4900f, 0.8600f, 1.0000f, 0.2500f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.9954f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.9500f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FOREST \
 | 
			
		||||
    { 1.0000f, 0.3000f, 0.3162f, 0.0224f, 1.0000f, 1.4900f, 0.5400f, 1.0000f, 0.0525f, 0.1620f, { 0.0000f, 0.0000f, 0.0000f }, 0.7682f, 0.0880f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CITY \
 | 
			
		||||
    { 1.0000f, 0.5000f, 0.3162f, 0.3981f, 1.0000f, 1.4900f, 0.6700f, 1.0000f, 0.0730f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.1427f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_MOUNTAINS \
 | 
			
		||||
    { 1.0000f, 0.2700f, 0.3162f, 0.0562f, 1.0000f, 1.4900f, 0.2100f, 1.0000f, 0.0407f, 0.3000f, { 0.0000f, 0.0000f, 0.0000f }, 0.1919f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_QUARRY \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.3162f, 1.0000f, 1.4900f, 0.8300f, 1.0000f, 0.0000f, 0.0610f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0250f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.7000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PLAIN \
 | 
			
		||||
    { 1.0000f, 0.2100f, 0.3162f, 0.1000f, 1.0000f, 1.4900f, 0.5000f, 1.0000f, 0.0585f, 0.1790f, { 0.0000f, 0.0000f, 0.0000f }, 0.1089f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PARKINGLOT \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 1.0000f, 1.0000f, 1.6500f, 1.5000f, 1.0000f, 0.2082f, 0.0080f, { 0.0000f, 0.0000f, 0.0000f }, 0.2652f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SEWERPIPE \
 | 
			
		||||
    { 0.3071f, 0.8000f, 0.3162f, 0.3162f, 1.0000f, 2.8100f, 0.1400f, 1.0000f, 1.6387f, 0.0140f, { 0.0000f, 0.0000f, 0.0000f }, 3.2471f, 0.0210f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_UNDERWATER \
 | 
			
		||||
    { 0.3645f, 1.0000f, 0.3162f, 0.0100f, 1.0000f, 1.4900f, 0.1000f, 1.0000f, 0.5963f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 7.0795f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 1.1800f, 0.3480f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRUGGED \
 | 
			
		||||
    { 0.4287f, 0.5000f, 0.3162f, 1.0000f, 1.0000f, 8.3900f, 1.3900f, 1.0000f, 0.8760f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 3.1081f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 1.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DIZZY \
 | 
			
		||||
    { 0.3645f, 0.6000f, 0.3162f, 0.6310f, 1.0000f, 17.2300f, 0.5600f, 1.0000f, 0.1392f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.4937f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.8100f, 0.3100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PSYCHOTIC \
 | 
			
		||||
    { 0.0625f, 0.5000f, 0.3162f, 0.8404f, 1.0000f, 7.5600f, 0.9100f, 1.0000f, 0.4864f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 2.4378f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 4.0000f, 1.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
/* Castle Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_SMALLROOM \
 | 
			
		||||
    { 1.0000f, 0.8900f, 0.3162f, 0.3981f, 0.1000f, 1.2200f, 0.8300f, 0.3100f, 0.8913f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_SHORTPASSAGE \
 | 
			
		||||
    { 1.0000f, 0.8900f, 0.3162f, 0.3162f, 0.1000f, 2.3200f, 0.8300f, 0.3100f, 0.8913f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_MEDIUMROOM \
 | 
			
		||||
    { 1.0000f, 0.9300f, 0.3162f, 0.2818f, 0.1000f, 2.0400f, 0.8300f, 0.4600f, 0.6310f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1550f, 0.0300f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_LARGEROOM \
 | 
			
		||||
    { 1.0000f, 0.8200f, 0.3162f, 0.2818f, 0.1259f, 2.5300f, 0.8300f, 0.5000f, 0.4467f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1850f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_LONGPASSAGE \
 | 
			
		||||
    { 1.0000f, 0.8900f, 0.3162f, 0.3981f, 0.1000f, 3.4200f, 0.8300f, 0.3100f, 0.8913f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_HALL \
 | 
			
		||||
    { 1.0000f, 0.8100f, 0.3162f, 0.2818f, 0.1778f, 3.1400f, 0.7900f, 0.6200f, 0.1778f, 0.0560f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_CUPBOARD \
 | 
			
		||||
    { 1.0000f, 0.8900f, 0.3162f, 0.2818f, 0.1000f, 0.6700f, 0.8700f, 0.3100f, 1.4125f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 3.5481f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_COURTYARD \
 | 
			
		||||
    { 1.0000f, 0.4200f, 0.3162f, 0.4467f, 0.1995f, 2.1300f, 0.6100f, 0.2300f, 0.2239f, 0.1600f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0360f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.3700f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CASTLE_ALCOVE \
 | 
			
		||||
    { 1.0000f, 0.8900f, 0.3162f, 0.5012f, 0.1000f, 1.6400f, 0.8700f, 0.3100f, 1.0000f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
/* Factory Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_SMALLROOM \
 | 
			
		||||
    { 0.3645f, 0.8200f, 0.3162f, 0.7943f, 0.5012f, 1.7200f, 0.6500f, 1.3100f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.1190f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_SHORTPASSAGE \
 | 
			
		||||
    { 0.3645f, 0.6400f, 0.2512f, 0.7943f, 0.5012f, 2.5300f, 0.6500f, 1.3100f, 1.0000f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.1350f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_MEDIUMROOM \
 | 
			
		||||
    { 0.4287f, 0.8200f, 0.2512f, 0.7943f, 0.5012f, 2.7600f, 0.6500f, 1.3100f, 0.2818f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1740f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_LARGEROOM \
 | 
			
		||||
    { 0.4287f, 0.7500f, 0.2512f, 0.7079f, 0.6310f, 4.2400f, 0.5100f, 1.3100f, 0.1778f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.2310f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_LONGPASSAGE \
 | 
			
		||||
    { 0.3645f, 0.6400f, 0.2512f, 0.7943f, 0.5012f, 4.0600f, 0.6500f, 1.3100f, 1.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0370f, { 0.0000f, 0.0000f, 0.0000f }, 0.1350f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_HALL \
 | 
			
		||||
    { 0.4287f, 0.7500f, 0.3162f, 0.7079f, 0.6310f, 7.4300f, 0.5100f, 1.3100f, 0.0631f, 0.0730f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_CUPBOARD \
 | 
			
		||||
    { 0.3071f, 0.6300f, 0.2512f, 0.7943f, 0.5012f, 0.4900f, 0.6500f, 1.3100f, 1.2589f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.1070f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_COURTYARD \
 | 
			
		||||
    { 0.3071f, 0.5700f, 0.3162f, 0.3162f, 0.6310f, 2.3200f, 0.2900f, 0.5600f, 0.2239f, 0.1400f, { 0.0000f, 0.0000f, 0.0000f }, 0.3981f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2900f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_FACTORY_ALCOVE \
 | 
			
		||||
    { 0.3645f, 0.5900f, 0.2512f, 0.7943f, 0.5012f, 3.1400f, 0.6500f, 1.3100f, 1.4125f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.1140f, 0.1000f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
/* Ice Palace Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_SMALLROOM \
 | 
			
		||||
    { 1.0000f, 0.8400f, 0.3162f, 0.5623f, 0.2818f, 1.5100f, 1.5300f, 0.2700f, 0.8913f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1640f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_SHORTPASSAGE \
 | 
			
		||||
    { 1.0000f, 0.7500f, 0.3162f, 0.5623f, 0.2818f, 1.7900f, 1.4600f, 0.2800f, 0.5012f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.1770f, 0.0900f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_MEDIUMROOM \
 | 
			
		||||
    { 1.0000f, 0.8700f, 0.3162f, 0.5623f, 0.4467f, 2.2200f, 1.5300f, 0.3200f, 0.3981f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.1860f, 0.1200f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_LARGEROOM \
 | 
			
		||||
    { 1.0000f, 0.8100f, 0.3162f, 0.5623f, 0.4467f, 3.1400f, 1.5300f, 0.3200f, 0.2512f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.2140f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_LONGPASSAGE \
 | 
			
		||||
    { 1.0000f, 0.7700f, 0.3162f, 0.5623f, 0.3981f, 3.0100f, 1.4600f, 0.2800f, 0.7943f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0250f, { 0.0000f, 0.0000f, 0.0000f }, 0.1860f, 0.0400f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_HALL \
 | 
			
		||||
    { 1.0000f, 0.7600f, 0.3162f, 0.4467f, 0.5623f, 5.4900f, 1.5300f, 0.3800f, 0.1122f, 0.0540f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0520f, { 0.0000f, 0.0000f, 0.0000f }, 0.2260f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_CUPBOARD \
 | 
			
		||||
    { 1.0000f, 0.8300f, 0.3162f, 0.5012f, 0.2239f, 0.7600f, 1.5300f, 0.2600f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1430f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_COURTYARD \
 | 
			
		||||
    { 1.0000f, 0.5900f, 0.3162f, 0.2818f, 0.3162f, 2.0400f, 1.2000f, 0.3800f, 0.3162f, 0.1730f, { 0.0000f, 0.0000f, 0.0000f }, 0.3162f, 0.0430f, { 0.0000f, 0.0000f, 0.0000f }, 0.2350f, 0.4800f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_ICEPALACE_ALCOVE \
 | 
			
		||||
    { 1.0000f, 0.8400f, 0.3162f, 0.5623f, 0.2818f, 2.7600f, 1.4600f, 0.2800f, 1.1220f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1610f, 0.0900f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
/* Space Station Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPACESTATION_SMALLROOM \
 | 
			
		||||
    { 0.2109f, 0.7000f, 0.3162f, 0.7079f, 0.8913f, 1.7200f, 0.8200f, 0.5500f, 0.7943f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0130f, { 0.0000f, 0.0000f, 0.0000f }, 0.1880f, 0.2600f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPACESTATION_SHORTPASSAGE \
 | 
			
		||||
    { 0.2109f, 0.8700f, 0.3162f, 0.6310f, 0.8913f, 3.5700f, 0.5000f, 0.5500f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1720f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPACESTATION_MEDIUMROOM \
 | 
			
		||||
    { 0.2109f, 0.7500f, 0.3162f, 0.6310f, 0.8913f, 3.0100f, 0.5000f, 0.5500f, 0.3981f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0350f, { 0.0000f, 0.0000f, 0.0000f }, 0.2090f, 0.3100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPACESTATION_LARGEROOM \
 | 
			
		||||
    { 0.3645f, 0.8100f, 0.3162f, 0.6310f, 0.8913f, 3.8900f, 0.3800f, 0.6100f, 0.3162f, 0.0560f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0350f, { 0.0000f, 0.0000f, 0.0000f }, 0.2330f, 0.2800f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPACESTATION_LONGPASSAGE \
 | 
			
		||||
    { 0.4287f, 0.8200f, 0.3162f, 0.6310f, 0.8913f, 4.6200f, 0.6200f, 0.5500f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0310f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPACESTATION_HALL \
 | 
			
		||||
    { 0.4287f, 0.8700f, 0.3162f, 0.6310f, 0.8913f, 7.1100f, 0.3800f, 0.6100f, 0.1778f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0470f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2500f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPACESTATION_CUPBOARD \
 | 
			
		||||
    { 0.1715f, 0.5600f, 0.3162f, 0.7079f, 0.8913f, 0.7900f, 0.8100f, 0.5500f, 1.4125f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0180f, { 0.0000f, 0.0000f, 0.0000f }, 0.1810f, 0.3100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPACESTATION_ALCOVE \
 | 
			
		||||
    { 0.2109f, 0.7800f, 0.3162f, 0.7079f, 0.8913f, 1.1600f, 0.8100f, 0.5500f, 1.4125f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0180f, { 0.0000f, 0.0000f, 0.0000f }, 0.1920f, 0.2100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
/* Wooden Galleon Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_SMALLROOM \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.1122f, 0.3162f, 0.7900f, 0.3200f, 0.8700f, 1.0000f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_SHORTPASSAGE \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.1259f, 0.3162f, 1.7500f, 0.5000f, 0.8700f, 0.8913f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_MEDIUMROOM \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.1000f, 0.2818f, 1.4700f, 0.4200f, 0.8200f, 0.8913f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_LARGEROOM \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.0891f, 0.2818f, 2.6500f, 0.3300f, 0.8200f, 0.8913f, 0.0660f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_LONGPASSAGE \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.1000f, 0.3162f, 1.9900f, 0.4000f, 0.7900f, 1.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.4467f, 0.0360f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_HALL \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.0794f, 0.2818f, 3.4500f, 0.3000f, 0.8200f, 0.8913f, 0.0880f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0630f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_CUPBOARD \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.1413f, 0.3162f, 0.5600f, 0.4600f, 0.9100f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_COURTYARD \
 | 
			
		||||
    { 1.0000f, 0.6500f, 0.3162f, 0.0794f, 0.3162f, 1.7900f, 0.3500f, 0.7900f, 0.5623f, 0.1230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1000f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_WOODEN_ALCOVE \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.1259f, 0.3162f, 1.2200f, 0.6200f, 0.9100f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
/* Sports Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPORT_EMPTYSTADIUM \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.4467f, 0.7943f, 6.2600f, 0.5100f, 1.1000f, 0.0631f, 0.1830f, { 0.0000f, 0.0000f, 0.0000f }, 0.3981f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPORT_SQUASHCOURT \
 | 
			
		||||
    { 1.0000f, 0.7500f, 0.3162f, 0.3162f, 0.7943f, 2.2200f, 0.9100f, 1.1600f, 0.4467f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1260f, 0.1900f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPORT_SMALLSWIMMINGPOOL \
 | 
			
		||||
    { 1.0000f, 0.7000f, 0.3162f, 0.7943f, 0.8913f, 2.7600f, 1.2500f, 1.1400f, 0.6310f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1790f, 0.1500f, 0.8950f, 0.1900f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPORT_LARGESWIMMINGPOOL \
 | 
			
		||||
    { 1.0000f, 0.8200f, 0.3162f, 0.7943f, 1.0000f, 5.4900f, 1.3100f, 1.1400f, 0.4467f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 0.5012f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2220f, 0.5500f, 1.1590f, 0.2100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPORT_GYMNASIUM \
 | 
			
		||||
    { 1.0000f, 0.8100f, 0.3162f, 0.4467f, 0.8913f, 3.1400f, 1.0600f, 1.3500f, 0.3981f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.5623f, 0.0450f, { 0.0000f, 0.0000f, 0.0000f }, 0.1460f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPORT_FULLSTADIUM \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.0708f, 0.7943f, 5.2500f, 0.1700f, 0.8000f, 0.1000f, 0.1880f, { 0.0000f, 0.0000f, 0.0000f }, 0.2818f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SPORT_STADIUMTANNOY \
 | 
			
		||||
    { 1.0000f, 0.7800f, 0.3162f, 0.5623f, 0.5012f, 2.5300f, 0.8800f, 0.6800f, 0.2818f, 0.2300f, { 0.0000f, 0.0000f, 0.0000f }, 0.5012f, 0.0630f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
/* Prefab Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PREFAB_WORKSHOP \
 | 
			
		||||
    { 0.4287f, 1.0000f, 0.3162f, 0.1413f, 0.3981f, 0.7600f, 1.0000f, 1.0000f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PREFAB_SCHOOLROOM \
 | 
			
		||||
    { 0.4022f, 0.6900f, 0.3162f, 0.6310f, 0.5012f, 0.9800f, 0.4500f, 0.1800f, 1.4125f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.0950f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PREFAB_PRACTISEROOM \
 | 
			
		||||
    { 0.4022f, 0.8700f, 0.3162f, 0.3981f, 0.5012f, 1.1200f, 0.5600f, 0.1800f, 1.2589f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.0950f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PREFAB_OUTHOUSE \
 | 
			
		||||
    { 1.0000f, 0.8200f, 0.3162f, 0.1122f, 0.1585f, 1.3800f, 0.3800f, 0.3500f, 0.8913f, 0.0240f, { 0.0000f, 0.0000f, -0.0000f }, 0.6310f, 0.0440f, { 0.0000f, 0.0000f, 0.0000f }, 0.1210f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PREFAB_CARAVAN \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.0891f, 0.1259f, 0.4300f, 1.5000f, 1.0000f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
/* Dome and Pipe Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DOME_TOMB \
 | 
			
		||||
    { 1.0000f, 0.7900f, 0.3162f, 0.3548f, 0.2239f, 4.1800f, 0.2100f, 0.1000f, 0.3868f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 1.6788f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.1770f, 0.1900f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PIPE_SMALL \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.3548f, 0.2239f, 5.0400f, 0.1000f, 0.1000f, 0.5012f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 2.5119f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DOME_SAINTPAULS \
 | 
			
		||||
    { 1.0000f, 0.8700f, 0.3162f, 0.3548f, 0.2239f, 10.4800f, 0.1900f, 0.1000f, 0.1778f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0420f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1200f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PIPE_LONGTHIN \
 | 
			
		||||
    { 0.2560f, 0.9100f, 0.3162f, 0.4467f, 0.2818f, 9.2100f, 0.1800f, 0.1000f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PIPE_LARGE \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.3548f, 0.2239f, 8.4500f, 0.1000f, 0.1000f, 0.3981f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_PIPE_RESONANT \
 | 
			
		||||
    { 0.1373f, 0.9100f, 0.3162f, 0.4467f, 0.2818f, 6.8100f, 0.1800f, 0.1000f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
/* Outdoors Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_OUTDOORS_BACKYARD \
 | 
			
		||||
    { 1.0000f, 0.4500f, 0.3162f, 0.2512f, 0.5012f, 1.1200f, 0.3400f, 0.4600f, 0.4467f, 0.0690f, { 0.0000f, 0.0000f, -0.0000f }, 0.7079f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.2180f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_OUTDOORS_ROLLINGPLAINS \
 | 
			
		||||
    { 1.0000f, 0.0000f, 0.3162f, 0.0112f, 0.6310f, 2.1300f, 0.2100f, 0.4600f, 0.1778f, 0.3000f, { 0.0000f, 0.0000f, -0.0000f }, 0.4467f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_OUTDOORS_DEEPCANYON \
 | 
			
		||||
    { 1.0000f, 0.7400f, 0.3162f, 0.1778f, 0.6310f, 3.8900f, 0.2100f, 0.4600f, 0.3162f, 0.2230f, { 0.0000f, 0.0000f, -0.0000f }, 0.3548f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_OUTDOORS_CREEK \
 | 
			
		||||
    { 1.0000f, 0.3500f, 0.3162f, 0.1778f, 0.5012f, 2.1300f, 0.2100f, 0.4600f, 0.3981f, 0.1150f, { 0.0000f, 0.0000f, -0.0000f }, 0.1995f, 0.0310f, { 0.0000f, 0.0000f, 0.0000f }, 0.2180f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_OUTDOORS_VALLEY \
 | 
			
		||||
    { 1.0000f, 0.2800f, 0.3162f, 0.0282f, 0.1585f, 2.8800f, 0.2600f, 0.3500f, 0.1413f, 0.2630f, { 0.0000f, 0.0000f, -0.0000f }, 0.3981f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
/* Mood Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_MOOD_HEAVEN \
 | 
			
		||||
    { 1.0000f, 0.9400f, 0.3162f, 0.7943f, 0.4467f, 5.0400f, 1.1200f, 0.5600f, 0.2427f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0800f, 2.7420f, 0.0500f, 0.9977f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_MOOD_HELL \
 | 
			
		||||
    { 1.0000f, 0.5700f, 0.3162f, 0.3548f, 0.4467f, 3.5700f, 0.4900f, 2.0000f, 0.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1100f, 0.0400f, 2.1090f, 0.5200f, 0.9943f, 5000.0000f, 139.5000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_MOOD_MEMORY \
 | 
			
		||||
    { 1.0000f, 0.8500f, 0.3162f, 0.6310f, 0.3548f, 4.0600f, 0.8200f, 0.5600f, 0.0398f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.4740f, 0.4500f, 0.9886f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
/* Driving Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRIVING_COMMENTATOR \
 | 
			
		||||
    { 1.0000f, 0.0000f, 0.3162f, 0.5623f, 0.5012f, 2.4200f, 0.8800f, 0.6800f, 0.1995f, 0.0930f, { 0.0000f, 0.0000f, 0.0000f }, 0.2512f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9886f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRIVING_PITGARAGE \
 | 
			
		||||
    { 0.4287f, 0.5900f, 0.3162f, 0.7079f, 0.5623f, 1.7200f, 0.9300f, 0.8700f, 0.5623f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRIVING_INCAR_RACER \
 | 
			
		||||
    { 0.0832f, 0.8000f, 0.3162f, 1.0000f, 0.7943f, 0.1700f, 2.0000f, 0.4100f, 1.7783f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRIVING_INCAR_SPORTS \
 | 
			
		||||
    { 0.0832f, 0.8000f, 0.3162f, 0.6310f, 1.0000f, 0.1700f, 0.7500f, 0.4100f, 1.0000f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.5623f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRIVING_INCAR_LUXURY \
 | 
			
		||||
    { 0.2560f, 1.0000f, 0.3162f, 0.1000f, 0.5012f, 0.1300f, 0.4100f, 0.4600f, 0.7943f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRIVING_FULLGRANDSTAND \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 0.2818f, 0.6310f, 3.0100f, 1.3700f, 1.2800f, 0.3548f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 0.1778f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10420.2002f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRIVING_EMPTYGRANDSTAND \
 | 
			
		||||
    { 1.0000f, 1.0000f, 0.3162f, 1.0000f, 0.7943f, 4.6200f, 1.7500f, 1.4000f, 0.2082f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 0.2512f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10420.2002f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DRIVING_TUNNEL \
 | 
			
		||||
    { 1.0000f, 0.8100f, 0.3162f, 0.3981f, 0.8913f, 3.4200f, 0.9400f, 1.3100f, 0.7079f, 0.0510f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0470f, { 0.0000f, 0.0000f, 0.0000f }, 0.2140f, 0.0500f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 155.3000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
/* City Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CITY_STREETS \
 | 
			
		||||
    { 1.0000f, 0.7800f, 0.3162f, 0.7079f, 0.8913f, 1.7900f, 1.1200f, 0.9100f, 0.2818f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 0.1995f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CITY_SUBWAY \
 | 
			
		||||
    { 1.0000f, 0.7400f, 0.3162f, 0.7079f, 0.8913f, 3.0100f, 1.2300f, 0.9100f, 0.7079f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.2100f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CITY_MUSEUM \
 | 
			
		||||
    { 1.0000f, 0.8200f, 0.3162f, 0.1778f, 0.1778f, 3.2800f, 1.4000f, 0.5700f, 0.2512f, 0.0390f, { 0.0000f, 0.0000f, -0.0000f }, 0.8913f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 0.1300f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CITY_LIBRARY \
 | 
			
		||||
    { 1.0000f, 0.8200f, 0.3162f, 0.2818f, 0.0891f, 2.7600f, 0.8900f, 0.4100f, 0.3548f, 0.0290f, { 0.0000f, 0.0000f, -0.0000f }, 0.8913f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.1300f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CITY_UNDERPASS \
 | 
			
		||||
    { 1.0000f, 0.8200f, 0.3162f, 0.4467f, 0.8913f, 3.5700f, 1.1200f, 0.9100f, 0.3981f, 0.0590f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0370f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1400f, 0.2500f, 0.0000f, 0.9920f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CITY_ABANDONED \
 | 
			
		||||
    { 1.0000f, 0.6900f, 0.3162f, 0.7943f, 0.8913f, 3.2800f, 1.1700f, 0.9100f, 0.4467f, 0.0440f, { 0.0000f, 0.0000f, 0.0000f }, 0.2818f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9966f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
/* Misc. Presets */
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_DUSTYROOM \
 | 
			
		||||
    { 0.3645f, 0.5600f, 0.3162f, 0.7943f, 0.7079f, 1.7900f, 0.3800f, 0.2100f, 0.5012f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0060f, { 0.0000f, 0.0000f, 0.0000f }, 0.2020f, 0.0500f, 0.2500f, 0.0000f, 0.9886f, 13046.0000f, 163.3000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_CHAPEL \
 | 
			
		||||
    { 1.0000f, 0.8400f, 0.3162f, 0.5623f, 1.0000f, 4.6200f, 0.6400f, 1.2300f, 0.4467f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.1100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
 | 
			
		||||
 | 
			
		||||
#define EFX_REVERB_PRESET_SMALLWATERROOM \
 | 
			
		||||
    { 1.0000f, 0.7000f, 0.3162f, 0.4477f, 1.0000f, 1.5100f, 1.2500f, 1.1400f, 0.8913f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1790f, 0.1500f, 0.8950f, 0.1900f, 0.9920f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
 | 
			
		||||
 | 
			
		||||
#endif /* EFX_PRESETS_H */
 | 
			
		||||
@@ -1,761 +0,0 @@
 | 
			
		||||
#ifndef AL_EFX_H
 | 
			
		||||
#define AL_EFX_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "alc.h"
 | 
			
		||||
#include "al.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define ALC_EXT_EFX_NAME                         "ALC_EXT_EFX"
 | 
			
		||||
 | 
			
		||||
#define ALC_EFX_MAJOR_VERSION                    0x20001
 | 
			
		||||
#define ALC_EFX_MINOR_VERSION                    0x20002
 | 
			
		||||
#define ALC_MAX_AUXILIARY_SENDS                  0x20003
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Listener properties. */
 | 
			
		||||
#define AL_METERS_PER_UNIT                       0x20004
 | 
			
		||||
 | 
			
		||||
/* Source properties. */
 | 
			
		||||
#define AL_DIRECT_FILTER                         0x20005
 | 
			
		||||
#define AL_AUXILIARY_SEND_FILTER                 0x20006
 | 
			
		||||
#define AL_AIR_ABSORPTION_FACTOR                 0x20007
 | 
			
		||||
#define AL_ROOM_ROLLOFF_FACTOR                   0x20008
 | 
			
		||||
#define AL_CONE_OUTER_GAINHF                     0x20009
 | 
			
		||||
#define AL_DIRECT_FILTER_GAINHF_AUTO             0x2000A
 | 
			
		||||
#define AL_AUXILIARY_SEND_FILTER_GAIN_AUTO       0x2000B
 | 
			
		||||
#define AL_AUXILIARY_SEND_FILTER_GAINHF_AUTO     0x2000C
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Effect properties. */
 | 
			
		||||
 | 
			
		||||
/* Reverb effect parameters */
 | 
			
		||||
#define AL_REVERB_DENSITY                        0x0001
 | 
			
		||||
#define AL_REVERB_DIFFUSION                      0x0002
 | 
			
		||||
#define AL_REVERB_GAIN                           0x0003
 | 
			
		||||
#define AL_REVERB_GAINHF                         0x0004
 | 
			
		||||
#define AL_REVERB_DECAY_TIME                     0x0005
 | 
			
		||||
#define AL_REVERB_DECAY_HFRATIO                  0x0006
 | 
			
		||||
#define AL_REVERB_REFLECTIONS_GAIN               0x0007
 | 
			
		||||
#define AL_REVERB_REFLECTIONS_DELAY              0x0008
 | 
			
		||||
#define AL_REVERB_LATE_REVERB_GAIN               0x0009
 | 
			
		||||
#define AL_REVERB_LATE_REVERB_DELAY              0x000A
 | 
			
		||||
#define AL_REVERB_AIR_ABSORPTION_GAINHF          0x000B
 | 
			
		||||
#define AL_REVERB_ROOM_ROLLOFF_FACTOR            0x000C
 | 
			
		||||
#define AL_REVERB_DECAY_HFLIMIT                  0x000D
 | 
			
		||||
 | 
			
		||||
/* EAX Reverb effect parameters */
 | 
			
		||||
#define AL_EAXREVERB_DENSITY                     0x0001
 | 
			
		||||
#define AL_EAXREVERB_DIFFUSION                   0x0002
 | 
			
		||||
#define AL_EAXREVERB_GAIN                        0x0003
 | 
			
		||||
#define AL_EAXREVERB_GAINHF                      0x0004
 | 
			
		||||
#define AL_EAXREVERB_GAINLF                      0x0005
 | 
			
		||||
#define AL_EAXREVERB_DECAY_TIME                  0x0006
 | 
			
		||||
#define AL_EAXREVERB_DECAY_HFRATIO               0x0007
 | 
			
		||||
#define AL_EAXREVERB_DECAY_LFRATIO               0x0008
 | 
			
		||||
#define AL_EAXREVERB_REFLECTIONS_GAIN            0x0009
 | 
			
		||||
#define AL_EAXREVERB_REFLECTIONS_DELAY           0x000A
 | 
			
		||||
#define AL_EAXREVERB_REFLECTIONS_PAN             0x000B
 | 
			
		||||
#define AL_EAXREVERB_LATE_REVERB_GAIN            0x000C
 | 
			
		||||
#define AL_EAXREVERB_LATE_REVERB_DELAY           0x000D
 | 
			
		||||
#define AL_EAXREVERB_LATE_REVERB_PAN             0x000E
 | 
			
		||||
#define AL_EAXREVERB_ECHO_TIME                   0x000F
 | 
			
		||||
#define AL_EAXREVERB_ECHO_DEPTH                  0x0010
 | 
			
		||||
#define AL_EAXREVERB_MODULATION_TIME             0x0011
 | 
			
		||||
#define AL_EAXREVERB_MODULATION_DEPTH            0x0012
 | 
			
		||||
#define AL_EAXREVERB_AIR_ABSORPTION_GAINHF       0x0013
 | 
			
		||||
#define AL_EAXREVERB_HFREFERENCE                 0x0014
 | 
			
		||||
#define AL_EAXREVERB_LFREFERENCE                 0x0015
 | 
			
		||||
#define AL_EAXREVERB_ROOM_ROLLOFF_FACTOR         0x0016
 | 
			
		||||
#define AL_EAXREVERB_DECAY_HFLIMIT               0x0017
 | 
			
		||||
 | 
			
		||||
/* Chorus effect parameters */
 | 
			
		||||
#define AL_CHORUS_WAVEFORM                       0x0001
 | 
			
		||||
#define AL_CHORUS_PHASE                          0x0002
 | 
			
		||||
#define AL_CHORUS_RATE                           0x0003
 | 
			
		||||
#define AL_CHORUS_DEPTH                          0x0004
 | 
			
		||||
#define AL_CHORUS_FEEDBACK                       0x0005
 | 
			
		||||
#define AL_CHORUS_DELAY                          0x0006
 | 
			
		||||
 | 
			
		||||
/* Distortion effect parameters */
 | 
			
		||||
#define AL_DISTORTION_EDGE                       0x0001
 | 
			
		||||
#define AL_DISTORTION_GAIN                       0x0002
 | 
			
		||||
#define AL_DISTORTION_LOWPASS_CUTOFF             0x0003
 | 
			
		||||
#define AL_DISTORTION_EQCENTER                   0x0004
 | 
			
		||||
#define AL_DISTORTION_EQBANDWIDTH                0x0005
 | 
			
		||||
 | 
			
		||||
/* Echo effect parameters */
 | 
			
		||||
#define AL_ECHO_DELAY                            0x0001
 | 
			
		||||
#define AL_ECHO_LRDELAY                          0x0002
 | 
			
		||||
#define AL_ECHO_DAMPING                          0x0003
 | 
			
		||||
#define AL_ECHO_FEEDBACK                         0x0004
 | 
			
		||||
#define AL_ECHO_SPREAD                           0x0005
 | 
			
		||||
 | 
			
		||||
/* Flanger effect parameters */
 | 
			
		||||
#define AL_FLANGER_WAVEFORM                      0x0001
 | 
			
		||||
#define AL_FLANGER_PHASE                         0x0002
 | 
			
		||||
#define AL_FLANGER_RATE                          0x0003
 | 
			
		||||
#define AL_FLANGER_DEPTH                         0x0004
 | 
			
		||||
#define AL_FLANGER_FEEDBACK                      0x0005
 | 
			
		||||
#define AL_FLANGER_DELAY                         0x0006
 | 
			
		||||
 | 
			
		||||
/* Frequency shifter effect parameters */
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_FREQUENCY           0x0001
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_LEFT_DIRECTION      0x0002
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_RIGHT_DIRECTION     0x0003
 | 
			
		||||
 | 
			
		||||
/* Vocal morpher effect parameters */
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEMEA                0x0001
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEMEA_COARSE_TUNING  0x0002
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEMEB                0x0003
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEMEB_COARSE_TUNING  0x0004
 | 
			
		||||
#define AL_VOCAL_MORPHER_WAVEFORM                0x0005
 | 
			
		||||
#define AL_VOCAL_MORPHER_RATE                    0x0006
 | 
			
		||||
 | 
			
		||||
/* Pitchshifter effect parameters */
 | 
			
		||||
#define AL_PITCH_SHIFTER_COARSE_TUNE             0x0001
 | 
			
		||||
#define AL_PITCH_SHIFTER_FINE_TUNE               0x0002
 | 
			
		||||
 | 
			
		||||
/* Ringmodulator effect parameters */
 | 
			
		||||
#define AL_RING_MODULATOR_FREQUENCY              0x0001
 | 
			
		||||
#define AL_RING_MODULATOR_HIGHPASS_CUTOFF        0x0002
 | 
			
		||||
#define AL_RING_MODULATOR_WAVEFORM               0x0003
 | 
			
		||||
 | 
			
		||||
/* Autowah effect parameters */
 | 
			
		||||
#define AL_AUTOWAH_ATTACK_TIME                   0x0001
 | 
			
		||||
#define AL_AUTOWAH_RELEASE_TIME                  0x0002
 | 
			
		||||
#define AL_AUTOWAH_RESONANCE                     0x0003
 | 
			
		||||
#define AL_AUTOWAH_PEAK_GAIN                     0x0004
 | 
			
		||||
 | 
			
		||||
/* Compressor effect parameters */
 | 
			
		||||
#define AL_COMPRESSOR_ONOFF                      0x0001
 | 
			
		||||
 | 
			
		||||
/* Equalizer effect parameters */
 | 
			
		||||
#define AL_EQUALIZER_LOW_GAIN                    0x0001
 | 
			
		||||
#define AL_EQUALIZER_LOW_CUTOFF                  0x0002
 | 
			
		||||
#define AL_EQUALIZER_MID1_GAIN                   0x0003
 | 
			
		||||
#define AL_EQUALIZER_MID1_CENTER                 0x0004
 | 
			
		||||
#define AL_EQUALIZER_MID1_WIDTH                  0x0005
 | 
			
		||||
#define AL_EQUALIZER_MID2_GAIN                   0x0006
 | 
			
		||||
#define AL_EQUALIZER_MID2_CENTER                 0x0007
 | 
			
		||||
#define AL_EQUALIZER_MID2_WIDTH                  0x0008
 | 
			
		||||
#define AL_EQUALIZER_HIGH_GAIN                   0x0009
 | 
			
		||||
#define AL_EQUALIZER_HIGH_CUTOFF                 0x000A
 | 
			
		||||
 | 
			
		||||
/* Effect type */
 | 
			
		||||
#define AL_EFFECT_FIRST_PARAMETER                0x0000
 | 
			
		||||
#define AL_EFFECT_LAST_PARAMETER                 0x8000
 | 
			
		||||
#define AL_EFFECT_TYPE                           0x8001
 | 
			
		||||
 | 
			
		||||
/* Effect types, used with the AL_EFFECT_TYPE property */
 | 
			
		||||
#define AL_EFFECT_NULL                           0x0000
 | 
			
		||||
#define AL_EFFECT_REVERB                         0x0001
 | 
			
		||||
#define AL_EFFECT_CHORUS                         0x0002
 | 
			
		||||
#define AL_EFFECT_DISTORTION                     0x0003
 | 
			
		||||
#define AL_EFFECT_ECHO                           0x0004
 | 
			
		||||
#define AL_EFFECT_FLANGER                        0x0005
 | 
			
		||||
#define AL_EFFECT_FREQUENCY_SHIFTER              0x0006
 | 
			
		||||
#define AL_EFFECT_VOCAL_MORPHER                  0x0007
 | 
			
		||||
#define AL_EFFECT_PITCH_SHIFTER                  0x0008
 | 
			
		||||
#define AL_EFFECT_RING_MODULATOR                 0x0009
 | 
			
		||||
#define AL_EFFECT_AUTOWAH                        0x000A
 | 
			
		||||
#define AL_EFFECT_COMPRESSOR                     0x000B
 | 
			
		||||
#define AL_EFFECT_EQUALIZER                      0x000C
 | 
			
		||||
#define AL_EFFECT_EAXREVERB                      0x8000
 | 
			
		||||
 | 
			
		||||
/* Auxiliary Effect Slot properties. */
 | 
			
		||||
#define AL_EFFECTSLOT_EFFECT                     0x0001
 | 
			
		||||
#define AL_EFFECTSLOT_GAIN                       0x0002
 | 
			
		||||
#define AL_EFFECTSLOT_AUXILIARY_SEND_AUTO        0x0003
 | 
			
		||||
 | 
			
		||||
/* NULL Auxiliary Slot ID to disable a source send. */
 | 
			
		||||
#define AL_EFFECTSLOT_NULL                       0x0000
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Filter properties. */
 | 
			
		||||
 | 
			
		||||
/* Lowpass filter parameters */
 | 
			
		||||
#define AL_LOWPASS_GAIN                          0x0001
 | 
			
		||||
#define AL_LOWPASS_GAINHF                        0x0002
 | 
			
		||||
 | 
			
		||||
/* Highpass filter parameters */
 | 
			
		||||
#define AL_HIGHPASS_GAIN                         0x0001
 | 
			
		||||
#define AL_HIGHPASS_GAINLF                       0x0002
 | 
			
		||||
 | 
			
		||||
/* Bandpass filter parameters */
 | 
			
		||||
#define AL_BANDPASS_GAIN                         0x0001
 | 
			
		||||
#define AL_BANDPASS_GAINLF                       0x0002
 | 
			
		||||
#define AL_BANDPASS_GAINHF                       0x0003
 | 
			
		||||
 | 
			
		||||
/* Filter type */
 | 
			
		||||
#define AL_FILTER_FIRST_PARAMETER                0x0000
 | 
			
		||||
#define AL_FILTER_LAST_PARAMETER                 0x8000
 | 
			
		||||
#define AL_FILTER_TYPE                           0x8001
 | 
			
		||||
 | 
			
		||||
/* Filter types, used with the AL_FILTER_TYPE property */
 | 
			
		||||
#define AL_FILTER_NULL                           0x0000
 | 
			
		||||
#define AL_FILTER_LOWPASS                        0x0001
 | 
			
		||||
#define AL_FILTER_HIGHPASS                       0x0002
 | 
			
		||||
#define AL_FILTER_BANDPASS                       0x0003
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Effect object function types. */
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGENEFFECTS)(ALsizei, ALuint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALDELETEEFFECTS)(ALsizei, const ALuint*);
 | 
			
		||||
typedef ALboolean (AL_APIENTRY *LPALISEFFECT)(ALuint);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALEFFECTI)(ALuint, ALenum, ALint);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALEFFECTIV)(ALuint, ALenum, const ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALEFFECTF)(ALuint, ALenum, ALfloat);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALEFFECTFV)(ALuint, ALenum, const ALfloat*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETEFFECTI)(ALuint, ALenum, ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETEFFECTIV)(ALuint, ALenum, ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETEFFECTF)(ALuint, ALenum, ALfloat*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETEFFECTFV)(ALuint, ALenum, ALfloat*);
 | 
			
		||||
 | 
			
		||||
/* Filter object function types. */
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGENFILTERS)(ALsizei, ALuint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALDELETEFILTERS)(ALsizei, const ALuint*);
 | 
			
		||||
typedef ALboolean (AL_APIENTRY *LPALISFILTER)(ALuint);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALFILTERI)(ALuint, ALenum, ALint);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALFILTERIV)(ALuint, ALenum, const ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALFILTERF)(ALuint, ALenum, ALfloat);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALFILTERFV)(ALuint, ALenum, const ALfloat*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETFILTERI)(ALuint, ALenum, ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETFILTERIV)(ALuint, ALenum, ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETFILTERF)(ALuint, ALenum, ALfloat*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETFILTERFV)(ALuint, ALenum, ALfloat*);
 | 
			
		||||
 | 
			
		||||
/* Auxiliary Effect Slot object function types. */
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGENAUXILIARYEFFECTSLOTS)(ALsizei, ALuint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALDELETEAUXILIARYEFFECTSLOTS)(ALsizei, const ALuint*);
 | 
			
		||||
typedef ALboolean (AL_APIENTRY *LPALISAUXILIARYEFFECTSLOT)(ALuint);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, const ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, const ALfloat*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, ALint*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat*);
 | 
			
		||||
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, ALfloat*);
 | 
			
		||||
 | 
			
		||||
#ifdef AL_ALEXT_PROTOTYPES
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGenEffects(ALsizei n, ALuint *effects);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alDeleteEffects(ALsizei n, const ALuint *effects);
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alIsEffect(ALuint effect);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alEffecti(ALuint effect, ALenum param, ALint iValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alEffectiv(ALuint effect, ALenum param, const ALint *piValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alEffectf(ALuint effect, ALenum param, ALfloat flValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alEffectfv(ALuint effect, ALenum param, const ALfloat *pflValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetEffecti(ALuint effect, ALenum param, ALint *piValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetEffectiv(ALuint effect, ALenum param, ALint *piValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetEffectf(ALuint effect, ALenum param, ALfloat *pflValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetEffectfv(ALuint effect, ALenum param, ALfloat *pflValues);
 | 
			
		||||
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGenFilters(ALsizei n, ALuint *filters);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alDeleteFilters(ALsizei n, const ALuint *filters);
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alIsFilter(ALuint filter);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alFilteri(ALuint filter, ALenum param, ALint iValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alFilteriv(ALuint filter, ALenum param, const ALint *piValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alFilterf(ALuint filter, ALenum param, ALfloat flValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alFilterfv(ALuint filter, ALenum param, const ALfloat *pflValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetFilteri(ALuint filter, ALenum param, ALint *piValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetFilteriv(ALuint filter, ALenum param, ALint *piValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetFilterf(ALuint filter, ALenum param, ALfloat *pflValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetFilterfv(ALuint filter, ALenum param, ALfloat *pflValues);
 | 
			
		||||
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGenAuxiliaryEffectSlots(ALsizei n, ALuint *effectslots);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alDeleteAuxiliaryEffectSlots(ALsizei n, const ALuint *effectslots);
 | 
			
		||||
AL_API ALboolean AL_APIENTRY alIsAuxiliaryEffectSlot(ALuint effectslot);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint iValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, const ALint *piValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat flValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, const ALfloat *pflValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint *piValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, ALint *piValues);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat *pflValue);
 | 
			
		||||
AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, ALfloat *pflValues);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Filter ranges and defaults. */
 | 
			
		||||
 | 
			
		||||
/* Lowpass filter */
 | 
			
		||||
#define AL_LOWPASS_MIN_GAIN                      (0.0f)
 | 
			
		||||
#define AL_LOWPASS_MAX_GAIN                      (1.0f)
 | 
			
		||||
#define AL_LOWPASS_DEFAULT_GAIN                  (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_LOWPASS_MIN_GAINHF                    (0.0f)
 | 
			
		||||
#define AL_LOWPASS_MAX_GAINHF                    (1.0f)
 | 
			
		||||
#define AL_LOWPASS_DEFAULT_GAINHF                (1.0f)
 | 
			
		||||
 | 
			
		||||
/* Highpass filter */
 | 
			
		||||
#define AL_HIGHPASS_MIN_GAIN                     (0.0f)
 | 
			
		||||
#define AL_HIGHPASS_MAX_GAIN                     (1.0f)
 | 
			
		||||
#define AL_HIGHPASS_DEFAULT_GAIN                 (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_HIGHPASS_MIN_GAINLF                   (0.0f)
 | 
			
		||||
#define AL_HIGHPASS_MAX_GAINLF                   (1.0f)
 | 
			
		||||
#define AL_HIGHPASS_DEFAULT_GAINLF               (1.0f)
 | 
			
		||||
 | 
			
		||||
/* Bandpass filter */
 | 
			
		||||
#define AL_BANDPASS_MIN_GAIN                     (0.0f)
 | 
			
		||||
#define AL_BANDPASS_MAX_GAIN                     (1.0f)
 | 
			
		||||
#define AL_BANDPASS_DEFAULT_GAIN                 (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_BANDPASS_MIN_GAINHF                   (0.0f)
 | 
			
		||||
#define AL_BANDPASS_MAX_GAINHF                   (1.0f)
 | 
			
		||||
#define AL_BANDPASS_DEFAULT_GAINHF               (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_BANDPASS_MIN_GAINLF                   (0.0f)
 | 
			
		||||
#define AL_BANDPASS_MAX_GAINLF                   (1.0f)
 | 
			
		||||
#define AL_BANDPASS_DEFAULT_GAINLF               (1.0f)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Effect parameter ranges and defaults. */
 | 
			
		||||
 | 
			
		||||
/* Standard reverb effect */
 | 
			
		||||
#define AL_REVERB_MIN_DENSITY                    (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_DENSITY                    (1.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_DENSITY                (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_DIFFUSION                  (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_DIFFUSION                  (1.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_DIFFUSION              (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_GAIN                       (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_GAIN                       (1.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_GAIN                   (0.32f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_GAINHF                     (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_GAINHF                     (1.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_GAINHF                 (0.89f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_DECAY_TIME                 (0.1f)
 | 
			
		||||
#define AL_REVERB_MAX_DECAY_TIME                 (20.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_DECAY_TIME             (1.49f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_DECAY_HFRATIO              (0.1f)
 | 
			
		||||
#define AL_REVERB_MAX_DECAY_HFRATIO              (2.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_DECAY_HFRATIO          (0.83f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_REFLECTIONS_GAIN           (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_REFLECTIONS_GAIN           (3.16f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_REFLECTIONS_GAIN       (0.05f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_REFLECTIONS_DELAY          (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_REFLECTIONS_DELAY          (0.3f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_REFLECTIONS_DELAY      (0.007f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_LATE_REVERB_GAIN           (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_LATE_REVERB_GAIN           (10.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_LATE_REVERB_GAIN       (1.26f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_LATE_REVERB_DELAY          (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_LATE_REVERB_DELAY          (0.1f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_LATE_REVERB_DELAY      (0.011f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_AIR_ABSORPTION_GAINHF      (0.892f)
 | 
			
		||||
#define AL_REVERB_MAX_AIR_ABSORPTION_GAINHF      (1.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_AIR_ABSORPTION_GAINHF  (0.994f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_ROOM_ROLLOFF_FACTOR        (0.0f)
 | 
			
		||||
#define AL_REVERB_MAX_ROOM_ROLLOFF_FACTOR        (10.0f)
 | 
			
		||||
#define AL_REVERB_DEFAULT_ROOM_ROLLOFF_FACTOR    (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_REVERB_MIN_DECAY_HFLIMIT              AL_FALSE
 | 
			
		||||
#define AL_REVERB_MAX_DECAY_HFLIMIT              AL_TRUE
 | 
			
		||||
#define AL_REVERB_DEFAULT_DECAY_HFLIMIT          AL_TRUE
 | 
			
		||||
 | 
			
		||||
/* EAX reverb effect */
 | 
			
		||||
#define AL_EAXREVERB_MIN_DENSITY                 (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_DENSITY                 (1.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_DENSITY             (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_DIFFUSION               (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_DIFFUSION               (1.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_DIFFUSION           (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_GAIN                    (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_GAIN                    (1.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_GAIN                (0.32f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_GAINHF                  (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_GAINHF                  (1.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_GAINHF              (0.89f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_GAINLF                  (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_GAINLF                  (1.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_GAINLF              (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_DECAY_TIME              (0.1f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_DECAY_TIME              (20.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_DECAY_TIME          (1.49f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_DECAY_HFRATIO           (0.1f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_DECAY_HFRATIO           (2.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_DECAY_HFRATIO       (0.83f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_DECAY_LFRATIO           (0.1f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_DECAY_LFRATIO           (2.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_DECAY_LFRATIO       (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_REFLECTIONS_GAIN        (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_REFLECTIONS_GAIN        (3.16f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_REFLECTIONS_GAIN    (0.05f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_REFLECTIONS_DELAY       (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_REFLECTIONS_DELAY       (0.3f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_REFLECTIONS_DELAY   (0.007f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_REFLECTIONS_PAN_XYZ (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_LATE_REVERB_GAIN        (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_LATE_REVERB_GAIN        (10.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_LATE_REVERB_GAIN    (1.26f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_LATE_REVERB_DELAY       (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_LATE_REVERB_DELAY       (0.1f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_LATE_REVERB_DELAY   (0.011f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_LATE_REVERB_PAN_XYZ (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_ECHO_TIME               (0.075f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_ECHO_TIME               (0.25f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_ECHO_TIME           (0.25f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_ECHO_DEPTH              (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_ECHO_DEPTH              (1.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_ECHO_DEPTH          (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_MODULATION_TIME         (0.04f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_MODULATION_TIME         (4.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_MODULATION_TIME     (0.25f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_MODULATION_DEPTH        (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_MODULATION_DEPTH        (1.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_MODULATION_DEPTH    (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_AIR_ABSORPTION_GAINHF   (0.892f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_AIR_ABSORPTION_GAINHF   (1.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_AIR_ABSORPTION_GAINHF (0.994f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_HFREFERENCE             (1000.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_HFREFERENCE             (20000.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_HFREFERENCE         (5000.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_LFREFERENCE             (20.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_LFREFERENCE             (1000.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_LFREFERENCE         (250.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_ROOM_ROLLOFF_FACTOR     (0.0f)
 | 
			
		||||
#define AL_EAXREVERB_MAX_ROOM_ROLLOFF_FACTOR     (10.0f)
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EAXREVERB_MIN_DECAY_HFLIMIT           AL_FALSE
 | 
			
		||||
#define AL_EAXREVERB_MAX_DECAY_HFLIMIT           AL_TRUE
 | 
			
		||||
#define AL_EAXREVERB_DEFAULT_DECAY_HFLIMIT       AL_TRUE
 | 
			
		||||
 | 
			
		||||
/* Chorus effect */
 | 
			
		||||
#define AL_CHORUS_WAVEFORM_SINUSOID              (0)
 | 
			
		||||
#define AL_CHORUS_WAVEFORM_TRIANGLE              (1)
 | 
			
		||||
 | 
			
		||||
#define AL_CHORUS_MIN_WAVEFORM                   (0)
 | 
			
		||||
#define AL_CHORUS_MAX_WAVEFORM                   (1)
 | 
			
		||||
#define AL_CHORUS_DEFAULT_WAVEFORM               (1)
 | 
			
		||||
 | 
			
		||||
#define AL_CHORUS_MIN_PHASE                      (-180)
 | 
			
		||||
#define AL_CHORUS_MAX_PHASE                      (180)
 | 
			
		||||
#define AL_CHORUS_DEFAULT_PHASE                  (90)
 | 
			
		||||
 | 
			
		||||
#define AL_CHORUS_MIN_RATE                       (0.0f)
 | 
			
		||||
#define AL_CHORUS_MAX_RATE                       (10.0f)
 | 
			
		||||
#define AL_CHORUS_DEFAULT_RATE                   (1.1f)
 | 
			
		||||
 | 
			
		||||
#define AL_CHORUS_MIN_DEPTH                      (0.0f)
 | 
			
		||||
#define AL_CHORUS_MAX_DEPTH                      (1.0f)
 | 
			
		||||
#define AL_CHORUS_DEFAULT_DEPTH                  (0.1f)
 | 
			
		||||
 | 
			
		||||
#define AL_CHORUS_MIN_FEEDBACK                   (-1.0f)
 | 
			
		||||
#define AL_CHORUS_MAX_FEEDBACK                   (1.0f)
 | 
			
		||||
#define AL_CHORUS_DEFAULT_FEEDBACK               (0.25f)
 | 
			
		||||
 | 
			
		||||
#define AL_CHORUS_MIN_DELAY                      (0.0f)
 | 
			
		||||
#define AL_CHORUS_MAX_DELAY                      (0.016f)
 | 
			
		||||
#define AL_CHORUS_DEFAULT_DELAY                  (0.016f)
 | 
			
		||||
 | 
			
		||||
/* Distortion effect */
 | 
			
		||||
#define AL_DISTORTION_MIN_EDGE                   (0.0f)
 | 
			
		||||
#define AL_DISTORTION_MAX_EDGE                   (1.0f)
 | 
			
		||||
#define AL_DISTORTION_DEFAULT_EDGE               (0.2f)
 | 
			
		||||
 | 
			
		||||
#define AL_DISTORTION_MIN_GAIN                   (0.01f)
 | 
			
		||||
#define AL_DISTORTION_MAX_GAIN                   (1.0f)
 | 
			
		||||
#define AL_DISTORTION_DEFAULT_GAIN               (0.05f)
 | 
			
		||||
 | 
			
		||||
#define AL_DISTORTION_MIN_LOWPASS_CUTOFF         (80.0f)
 | 
			
		||||
#define AL_DISTORTION_MAX_LOWPASS_CUTOFF         (24000.0f)
 | 
			
		||||
#define AL_DISTORTION_DEFAULT_LOWPASS_CUTOFF     (8000.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_DISTORTION_MIN_EQCENTER               (80.0f)
 | 
			
		||||
#define AL_DISTORTION_MAX_EQCENTER               (24000.0f)
 | 
			
		||||
#define AL_DISTORTION_DEFAULT_EQCENTER           (3600.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_DISTORTION_MIN_EQBANDWIDTH            (80.0f)
 | 
			
		||||
#define AL_DISTORTION_MAX_EQBANDWIDTH            (24000.0f)
 | 
			
		||||
#define AL_DISTORTION_DEFAULT_EQBANDWIDTH        (3600.0f)
 | 
			
		||||
 | 
			
		||||
/* Echo effect */
 | 
			
		||||
#define AL_ECHO_MIN_DELAY                        (0.0f)
 | 
			
		||||
#define AL_ECHO_MAX_DELAY                        (0.207f)
 | 
			
		||||
#define AL_ECHO_DEFAULT_DELAY                    (0.1f)
 | 
			
		||||
 | 
			
		||||
#define AL_ECHO_MIN_LRDELAY                      (0.0f)
 | 
			
		||||
#define AL_ECHO_MAX_LRDELAY                      (0.404f)
 | 
			
		||||
#define AL_ECHO_DEFAULT_LRDELAY                  (0.1f)
 | 
			
		||||
 | 
			
		||||
#define AL_ECHO_MIN_DAMPING                      (0.0f)
 | 
			
		||||
#define AL_ECHO_MAX_DAMPING                      (0.99f)
 | 
			
		||||
#define AL_ECHO_DEFAULT_DAMPING                  (0.5f)
 | 
			
		||||
 | 
			
		||||
#define AL_ECHO_MIN_FEEDBACK                     (0.0f)
 | 
			
		||||
#define AL_ECHO_MAX_FEEDBACK                     (1.0f)
 | 
			
		||||
#define AL_ECHO_DEFAULT_FEEDBACK                 (0.5f)
 | 
			
		||||
 | 
			
		||||
#define AL_ECHO_MIN_SPREAD                       (-1.0f)
 | 
			
		||||
#define AL_ECHO_MAX_SPREAD                       (1.0f)
 | 
			
		||||
#define AL_ECHO_DEFAULT_SPREAD                   (-1.0f)
 | 
			
		||||
 | 
			
		||||
/* Flanger effect */
 | 
			
		||||
#define AL_FLANGER_WAVEFORM_SINUSOID             (0)
 | 
			
		||||
#define AL_FLANGER_WAVEFORM_TRIANGLE             (1)
 | 
			
		||||
 | 
			
		||||
#define AL_FLANGER_MIN_WAVEFORM                  (0)
 | 
			
		||||
#define AL_FLANGER_MAX_WAVEFORM                  (1)
 | 
			
		||||
#define AL_FLANGER_DEFAULT_WAVEFORM              (1)
 | 
			
		||||
 | 
			
		||||
#define AL_FLANGER_MIN_PHASE                     (-180)
 | 
			
		||||
#define AL_FLANGER_MAX_PHASE                     (180)
 | 
			
		||||
#define AL_FLANGER_DEFAULT_PHASE                 (0)
 | 
			
		||||
 | 
			
		||||
#define AL_FLANGER_MIN_RATE                      (0.0f)
 | 
			
		||||
#define AL_FLANGER_MAX_RATE                      (10.0f)
 | 
			
		||||
#define AL_FLANGER_DEFAULT_RATE                  (0.27f)
 | 
			
		||||
 | 
			
		||||
#define AL_FLANGER_MIN_DEPTH                     (0.0f)
 | 
			
		||||
#define AL_FLANGER_MAX_DEPTH                     (1.0f)
 | 
			
		||||
#define AL_FLANGER_DEFAULT_DEPTH                 (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_FLANGER_MIN_FEEDBACK                  (-1.0f)
 | 
			
		||||
#define AL_FLANGER_MAX_FEEDBACK                  (1.0f)
 | 
			
		||||
#define AL_FLANGER_DEFAULT_FEEDBACK              (-0.5f)
 | 
			
		||||
 | 
			
		||||
#define AL_FLANGER_MIN_DELAY                     (0.0f)
 | 
			
		||||
#define AL_FLANGER_MAX_DELAY                     (0.004f)
 | 
			
		||||
#define AL_FLANGER_DEFAULT_DELAY                 (0.002f)
 | 
			
		||||
 | 
			
		||||
/* Frequency shifter effect */
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_MIN_FREQUENCY       (0.0f)
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_MAX_FREQUENCY       (24000.0f)
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_DEFAULT_FREQUENCY   (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_MIN_LEFT_DIRECTION  (0)
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_MAX_LEFT_DIRECTION  (2)
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_DEFAULT_LEFT_DIRECTION (0)
 | 
			
		||||
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_DIRECTION_DOWN      (0)
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_DIRECTION_UP        (1)
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_DIRECTION_OFF       (2)
 | 
			
		||||
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_MIN_RIGHT_DIRECTION (0)
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_MAX_RIGHT_DIRECTION (2)
 | 
			
		||||
#define AL_FREQUENCY_SHIFTER_DEFAULT_RIGHT_DIRECTION (0)
 | 
			
		||||
 | 
			
		||||
/* Vocal morpher effect */
 | 
			
		||||
#define AL_VOCAL_MORPHER_MIN_PHONEMEA            (0)
 | 
			
		||||
#define AL_VOCAL_MORPHER_MAX_PHONEMEA            (29)
 | 
			
		||||
#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA        (0)
 | 
			
		||||
 | 
			
		||||
#define AL_VOCAL_MORPHER_MIN_PHONEMEA_COARSE_TUNING (-24)
 | 
			
		||||
#define AL_VOCAL_MORPHER_MAX_PHONEMEA_COARSE_TUNING (24)
 | 
			
		||||
#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA_COARSE_TUNING (0)
 | 
			
		||||
 | 
			
		||||
#define AL_VOCAL_MORPHER_MIN_PHONEMEB            (0)
 | 
			
		||||
#define AL_VOCAL_MORPHER_MAX_PHONEMEB            (29)
 | 
			
		||||
#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB        (10)
 | 
			
		||||
 | 
			
		||||
#define AL_VOCAL_MORPHER_MIN_PHONEMEB_COARSE_TUNING (-24)
 | 
			
		||||
#define AL_VOCAL_MORPHER_MAX_PHONEMEB_COARSE_TUNING (24)
 | 
			
		||||
#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB_COARSE_TUNING (0)
 | 
			
		||||
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_A               (0)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_E               (1)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_I               (2)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_O               (3)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_U               (4)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_AA              (5)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_AE              (6)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_AH              (7)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_AO              (8)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_EH              (9)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_ER              (10)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_IH              (11)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_IY              (12)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_UH              (13)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_UW              (14)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_B               (15)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_D               (16)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_F               (17)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_G               (18)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_J               (19)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_K               (20)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_L               (21)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_M               (22)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_N               (23)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_P               (24)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_R               (25)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_S               (26)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_T               (27)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_V               (28)
 | 
			
		||||
#define AL_VOCAL_MORPHER_PHONEME_Z               (29)
 | 
			
		||||
 | 
			
		||||
#define AL_VOCAL_MORPHER_WAVEFORM_SINUSOID       (0)
 | 
			
		||||
#define AL_VOCAL_MORPHER_WAVEFORM_TRIANGLE       (1)
 | 
			
		||||
#define AL_VOCAL_MORPHER_WAVEFORM_SAWTOOTH       (2)
 | 
			
		||||
 | 
			
		||||
#define AL_VOCAL_MORPHER_MIN_WAVEFORM            (0)
 | 
			
		||||
#define AL_VOCAL_MORPHER_MAX_WAVEFORM            (2)
 | 
			
		||||
#define AL_VOCAL_MORPHER_DEFAULT_WAVEFORM        (0)
 | 
			
		||||
 | 
			
		||||
#define AL_VOCAL_MORPHER_MIN_RATE                (0.0f)
 | 
			
		||||
#define AL_VOCAL_MORPHER_MAX_RATE                (10.0f)
 | 
			
		||||
#define AL_VOCAL_MORPHER_DEFAULT_RATE            (1.41f)
 | 
			
		||||
 | 
			
		||||
/* Pitch shifter effect */
 | 
			
		||||
#define AL_PITCH_SHIFTER_MIN_COARSE_TUNE         (-12)
 | 
			
		||||
#define AL_PITCH_SHIFTER_MAX_COARSE_TUNE         (12)
 | 
			
		||||
#define AL_PITCH_SHIFTER_DEFAULT_COARSE_TUNE     (12)
 | 
			
		||||
 | 
			
		||||
#define AL_PITCH_SHIFTER_MIN_FINE_TUNE           (-50)
 | 
			
		||||
#define AL_PITCH_SHIFTER_MAX_FINE_TUNE           (50)
 | 
			
		||||
#define AL_PITCH_SHIFTER_DEFAULT_FINE_TUNE       (0)
 | 
			
		||||
 | 
			
		||||
/* Ring modulator effect */
 | 
			
		||||
#define AL_RING_MODULATOR_MIN_FREQUENCY          (0.0f)
 | 
			
		||||
#define AL_RING_MODULATOR_MAX_FREQUENCY          (8000.0f)
 | 
			
		||||
#define AL_RING_MODULATOR_DEFAULT_FREQUENCY      (440.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_RING_MODULATOR_MIN_HIGHPASS_CUTOFF    (0.0f)
 | 
			
		||||
#define AL_RING_MODULATOR_MAX_HIGHPASS_CUTOFF    (24000.0f)
 | 
			
		||||
#define AL_RING_MODULATOR_DEFAULT_HIGHPASS_CUTOFF (800.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_RING_MODULATOR_SINUSOID               (0)
 | 
			
		||||
#define AL_RING_MODULATOR_SAWTOOTH               (1)
 | 
			
		||||
#define AL_RING_MODULATOR_SQUARE                 (2)
 | 
			
		||||
 | 
			
		||||
#define AL_RING_MODULATOR_MIN_WAVEFORM           (0)
 | 
			
		||||
#define AL_RING_MODULATOR_MAX_WAVEFORM           (2)
 | 
			
		||||
#define AL_RING_MODULATOR_DEFAULT_WAVEFORM       (0)
 | 
			
		||||
 | 
			
		||||
/* Autowah effect */
 | 
			
		||||
#define AL_AUTOWAH_MIN_ATTACK_TIME               (0.0001f)
 | 
			
		||||
#define AL_AUTOWAH_MAX_ATTACK_TIME               (1.0f)
 | 
			
		||||
#define AL_AUTOWAH_DEFAULT_ATTACK_TIME           (0.06f)
 | 
			
		||||
 | 
			
		||||
#define AL_AUTOWAH_MIN_RELEASE_TIME              (0.0001f)
 | 
			
		||||
#define AL_AUTOWAH_MAX_RELEASE_TIME              (1.0f)
 | 
			
		||||
#define AL_AUTOWAH_DEFAULT_RELEASE_TIME          (0.06f)
 | 
			
		||||
 | 
			
		||||
#define AL_AUTOWAH_MIN_RESONANCE                 (2.0f)
 | 
			
		||||
#define AL_AUTOWAH_MAX_RESONANCE                 (1000.0f)
 | 
			
		||||
#define AL_AUTOWAH_DEFAULT_RESONANCE             (1000.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_AUTOWAH_MIN_PEAK_GAIN                 (0.00003f)
 | 
			
		||||
#define AL_AUTOWAH_MAX_PEAK_GAIN                 (31621.0f)
 | 
			
		||||
#define AL_AUTOWAH_DEFAULT_PEAK_GAIN             (11.22f)
 | 
			
		||||
 | 
			
		||||
/* Compressor effect */
 | 
			
		||||
#define AL_COMPRESSOR_MIN_ONOFF                  (0)
 | 
			
		||||
#define AL_COMPRESSOR_MAX_ONOFF                  (1)
 | 
			
		||||
#define AL_COMPRESSOR_DEFAULT_ONOFF              (1)
 | 
			
		||||
 | 
			
		||||
/* Equalizer effect */
 | 
			
		||||
#define AL_EQUALIZER_MIN_LOW_GAIN                (0.126f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_LOW_GAIN                (7.943f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_LOW_GAIN            (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_LOW_CUTOFF              (50.0f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_LOW_CUTOFF              (800.0f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_LOW_CUTOFF          (200.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_MID1_GAIN               (0.126f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_MID1_GAIN               (7.943f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_MID1_GAIN           (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_MID1_CENTER             (200.0f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_MID1_CENTER             (3000.0f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_MID1_CENTER         (500.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_MID1_WIDTH              (0.01f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_MID1_WIDTH              (1.0f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_MID1_WIDTH          (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_MID2_GAIN               (0.126f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_MID2_GAIN               (7.943f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_MID2_GAIN           (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_MID2_CENTER             (1000.0f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_MID2_CENTER             (8000.0f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_MID2_CENTER         (3000.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_MID2_WIDTH              (0.01f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_MID2_WIDTH              (1.0f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_MID2_WIDTH          (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_HIGH_GAIN               (0.126f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_HIGH_GAIN               (7.943f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_HIGH_GAIN           (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_EQUALIZER_MIN_HIGH_CUTOFF             (4000.0f)
 | 
			
		||||
#define AL_EQUALIZER_MAX_HIGH_CUTOFF             (16000.0f)
 | 
			
		||||
#define AL_EQUALIZER_DEFAULT_HIGH_CUTOFF         (6000.0f)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Source parameter value ranges and defaults. */
 | 
			
		||||
#define AL_MIN_AIR_ABSORPTION_FACTOR             (0.0f)
 | 
			
		||||
#define AL_MAX_AIR_ABSORPTION_FACTOR             (10.0f)
 | 
			
		||||
#define AL_DEFAULT_AIR_ABSORPTION_FACTOR         (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_MIN_ROOM_ROLLOFF_FACTOR               (0.0f)
 | 
			
		||||
#define AL_MAX_ROOM_ROLLOFF_FACTOR               (10.0f)
 | 
			
		||||
#define AL_DEFAULT_ROOM_ROLLOFF_FACTOR           (0.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_MIN_CONE_OUTER_GAINHF                 (0.0f)
 | 
			
		||||
#define AL_MAX_CONE_OUTER_GAINHF                 (1.0f)
 | 
			
		||||
#define AL_DEFAULT_CONE_OUTER_GAINHF             (1.0f)
 | 
			
		||||
 | 
			
		||||
#define AL_MIN_DIRECT_FILTER_GAINHF_AUTO         AL_FALSE
 | 
			
		||||
#define AL_MAX_DIRECT_FILTER_GAINHF_AUTO         AL_TRUE
 | 
			
		||||
#define AL_DEFAULT_DIRECT_FILTER_GAINHF_AUTO     AL_TRUE
 | 
			
		||||
 | 
			
		||||
#define AL_MIN_AUXILIARY_SEND_FILTER_GAIN_AUTO   AL_FALSE
 | 
			
		||||
#define AL_MAX_AUXILIARY_SEND_FILTER_GAIN_AUTO   AL_TRUE
 | 
			
		||||
#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE
 | 
			
		||||
 | 
			
		||||
#define AL_MIN_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_FALSE
 | 
			
		||||
#define AL_MAX_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE
 | 
			
		||||
#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Listener parameter value ranges and defaults. */
 | 
			
		||||
#define AL_MIN_METERS_PER_UNIT                   FLT_MIN
 | 
			
		||||
#define AL_MAX_METERS_PER_UNIT                   FLT_MAX
 | 
			
		||||
#define AL_DEFAULT_METERS_PER_UNIT               (1.0f)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}  /* extern "C" */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* AL_EFX_H */
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										3476
									
								
								templates/android_project/src/core.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3476
									
								
								templates/android_project/src/core.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										58
									
								
								templates/android_project/src/game_crash.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								templates/android_project/src/game_crash.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
/*******************************************************************************************
 | 
			
		||||
*
 | 
			
		||||
*   raylib - Android Basic Game template
 | 
			
		||||
*
 | 
			
		||||
*   <Game title>
 | 
			
		||||
*   <Game description>
 | 
			
		||||
*
 | 
			
		||||
*   This game has been created using raylib v1.2 (www.raylib.com)
 | 
			
		||||
*   raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
 | 
			
		||||
*
 | 
			
		||||
*   Copyright (c) 2014 Ramon Santamaria (@raysan5)
 | 
			
		||||
*
 | 
			
		||||
********************************************************************************************/
 | 
			
		||||
 | 
			
		||||
#include "raylib.h"
 | 
			
		||||
 | 
			
		||||
#include "android_native_app_glue.h"
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
// Android Main entry point
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
void android_main(struct android_app *app) 
 | 
			
		||||
{
 | 
			
		||||
    // Initialization
 | 
			
		||||
    //--------------------------------------------------------------------------------------
 | 
			
		||||
    const int screenWidth = 800;
 | 
			
		||||
    const int screenHeight = 450;
 | 
			
		||||
 | 
			
		||||
    InitWindow(screenWidth, screenHeight, app);
 | 
			
		||||
    
 | 
			
		||||
    // TODO: Initialize all required variables and load all required data here!
 | 
			
		||||
 | 
			
		||||
    SetTargetFPS(60);               // Not required on Android, already locked to 60 fps
 | 
			
		||||
    //--------------------------------------------------------------------------------------
 | 
			
		||||
    
 | 
			
		||||
    // Main game loop
 | 
			
		||||
    while (!WindowShouldClose())    // Detect window close button or ESC key
 | 
			
		||||
    {
 | 
			
		||||
        // Update
 | 
			
		||||
        //----------------------------------------------------------------------------------
 | 
			
		||||
        // ...
 | 
			
		||||
        //----------------------------------------------------------------------------------
 | 
			
		||||
        
 | 
			
		||||
        // Draw
 | 
			
		||||
        //----------------------------------------------------------------------------------
 | 
			
		||||
        BeginDrawing();
 | 
			
		||||
        
 | 
			
		||||
            ClearBackground(RAYWHITE);
 | 
			
		||||
 | 
			
		||||
        EndDrawing();
 | 
			
		||||
        //----------------------------------------------------------------------------------
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // De-Initialization
 | 
			
		||||
    //--------------------------------------------------------------------------------------
 | 
			
		||||
    CloseWindow();          // Close window and OpenGL context
 | 
			
		||||
    //--------------------------------------------------------------------------------------
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										684
									
								
								templates/android_project/src/game_ok.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										684
									
								
								templates/android_project/src/game_ok.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,684 @@
 | 
			
		||||
 | 
			
		||||
//#include <android/sensor.h>           // Android sensors functions (accelerometer, gyroscope, light...)
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <android/log.h>
 | 
			
		||||
#include <android/window.h>             // Defines AWINDOW_FLAG_FULLSCREEN and others
 | 
			
		||||
#include <android/asset_manager.h>
 | 
			
		||||
#include <android_native_app_glue.h>    // Defines basic app state struct and manages activity
 | 
			
		||||
 | 
			
		||||
#include <EGL/egl.h>        // Khronos EGL library - Native platform display device control functions
 | 
			
		||||
#include <GLES2/gl2.h>      // Khronos OpenGL ES 2.0 library
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>          // Standard input / output lib
 | 
			
		||||
#include <stdlib.h>         // Required for: malloc(), free(), rand(), atexit()
 | 
			
		||||
#include <stdint.h>         // Required for: typedef unsigned long long int uint64_t, used by hi-res timer
 | 
			
		||||
#include <stdarg.h>         // Required for: va_list, va_start(), vfprintf(), va_end()
 | 
			
		||||
#include <time.h>           // Required for: time() - Android/RPI hi-res timer (NOTE: Linux only!)
 | 
			
		||||
#include <math.h>           // Required for: tan() [Used in Begin3dMode() to set perspective]
 | 
			
		||||
#include <string.h>         // Required for: strlen(), strrchr(), strcmp()
 | 
			
		||||
 | 
			
		||||
//#define RLGL_STANDALONE
 | 
			
		||||
//#include "rlgl.h"           // rlgl library: OpenGL 1.1 immediate-mode style coding
 | 
			
		||||
 | 
			
		||||
#ifndef __cplusplus
 | 
			
		||||
// Boolean type
 | 
			
		||||
    #if !defined(_STDBOOL_H) || !defined(__STDBOOL_H)   // CLang uses second form
 | 
			
		||||
        typedef enum { false, true } bool;
 | 
			
		||||
    #endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Trace log type
 | 
			
		||||
typedef enum { 
 | 
			
		||||
    LOG_INFO = 0,
 | 
			
		||||
    LOG_WARNING, 
 | 
			
		||||
    LOG_ERROR, 
 | 
			
		||||
    LOG_DEBUG, 
 | 
			
		||||
    LOG_OTHER 
 | 
			
		||||
} LogType;
 | 
			
		||||
 | 
			
		||||
static int screenWidth;
 | 
			
		||||
static int screenHeight;
 | 
			
		||||
 | 
			
		||||
static struct android_app *app;                 // Android activity
 | 
			
		||||
static struct android_poll_source *source;      // Android events polling source
 | 
			
		||||
static int ident, events;                       // Android ALooper_pollAll() variables
 | 
			
		||||
static const char *internalDataPath;            // Android internal data path to write data (/data/data/<package>/files)
 | 
			
		||||
 | 
			
		||||
static bool windowReady = false;                // Used to detect display initialization
 | 
			
		||||
static bool appEnabled = true;                  // Used to detec if app is active
 | 
			
		||||
static bool contextRebindRequired = false;      // Used to know context rebind required
 | 
			
		||||
 | 
			
		||||
static EGLDisplay display;              // Native display device (physical screen connection)
 | 
			
		||||
static EGLSurface surface;              // Surface to draw on, framebuffers (connected to context)
 | 
			
		||||
static EGLContext context;              // Graphic context, mode in which drawing can be done
 | 
			
		||||
static EGLConfig config;                // Graphic config
 | 
			
		||||
static uint64_t baseTime;               // Base time measure for hi-res timer
 | 
			
		||||
static bool windowShouldClose = false;  // Flag to set window for closing
 | 
			
		||||
 | 
			
		||||
static AAssetManager *assetManager;
 | 
			
		||||
 | 
			
		||||
static void AndroidCommandCallback(struct android_app *app, int32_t cmd);                  // Process Android activity lifecycle commands
 | 
			
		||||
static int32_t AndroidInputCallback(struct android_app *app, AInputEvent *event);          // Process Android inputs
 | 
			
		||||
 | 
			
		||||
static void TraceLog(int msgType, const char *text, ...);
 | 
			
		||||
 | 
			
		||||
static int android_read(void *cookie, char *buf, int size);
 | 
			
		||||
static int android_write(void *cookie, const char *buf, int size);
 | 
			
		||||
static fpos_t android_seek(void *cookie, fpos_t offset, int whence);
 | 
			
		||||
static int android_close(void *cookie);
 | 
			
		||||
 | 
			
		||||
static void InitWindow(int width, int height, void *state);     // Initialize Android activity
 | 
			
		||||
static void InitGraphicsDevice(int width, int height);          // Initialize graphic device
 | 
			
		||||
static void CloseWindow(void);                                  // Close window and unload OpenGL context
 | 
			
		||||
static bool WindowShouldClose(void);    // Check if KEY_ESCAPE pressed or Close icon pressed
 | 
			
		||||
 | 
			
		||||
static void BeginDrawing(void);            // Setup canvas (framebuffer) to start drawing
 | 
			
		||||
static void EndDrawing(void);              // End canvas drawing and swap buffers (double buffering)
 | 
			
		||||
static void SwapBuffers(void);      // Copy back buffer to front buffers
 | 
			
		||||
static void PollInputEvents(void);  // Poll all input events
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
// Android Main entry point
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
void android_main(struct android_app *app) 
 | 
			
		||||
{
 | 
			
		||||
    InitWindow(1280, 720, app);
 | 
			
		||||
    
 | 
			
		||||
    while (!WindowShouldClose())
 | 
			
		||||
    {
 | 
			
		||||
        BeginDrawing();
 | 
			
		||||
        
 | 
			
		||||
            
 | 
			
		||||
        EndDrawing();
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    CloseWindow();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Initialize Android activity
 | 
			
		||||
static void InitWindow(int width, int height, void *state)
 | 
			
		||||
{
 | 
			
		||||
    TraceLog(LOG_INFO, "Initializing raylib stripped");
 | 
			
		||||
 | 
			
		||||
    screenWidth = width;
 | 
			
		||||
    screenHeight = height;
 | 
			
		||||
 | 
			
		||||
    app = (struct android_app *)state;
 | 
			
		||||
    internalDataPath = app->activity->internalDataPath;
 | 
			
		||||
 | 
			
		||||
    // Set desired windows flags before initializing anything
 | 
			
		||||
    ANativeActivity_setWindowFlags(app->activity, AWINDOW_FLAG_FULLSCREEN, 0);  //AWINDOW_FLAG_SCALED, AWINDOW_FLAG_DITHER
 | 
			
		||||
    //ANativeActivity_setWindowFlags(app->activity, AWINDOW_FLAG_FORCE_NOT_FULLSCREEN, AWINDOW_FLAG_FULLSCREEN);
 | 
			
		||||
 | 
			
		||||
    int orientation = AConfiguration_getOrientation(app->config);
 | 
			
		||||
 | 
			
		||||
    if (orientation == ACONFIGURATION_ORIENTATION_PORT) TraceLog(LOG_INFO, "PORTRAIT window orientation");
 | 
			
		||||
    else if (orientation == ACONFIGURATION_ORIENTATION_LAND) TraceLog(LOG_INFO, "LANDSCAPE window orientation");
 | 
			
		||||
 | 
			
		||||
    // TODO: Automatic orientation doesn't seem to work
 | 
			
		||||
    if (width <= height)
 | 
			
		||||
    {
 | 
			
		||||
        AConfiguration_setOrientation(app->config, ACONFIGURATION_ORIENTATION_PORT);
 | 
			
		||||
        TraceLog(LOG_WARNING, "Window set to portraid mode");
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        AConfiguration_setOrientation(app->config, ACONFIGURATION_ORIENTATION_LAND);
 | 
			
		||||
        TraceLog(LOG_WARNING, "Window set to landscape mode");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //AConfiguration_getDensity(app->config);
 | 
			
		||||
    //AConfiguration_getKeyboard(app->config);
 | 
			
		||||
    //AConfiguration_getScreenSize(app->config);
 | 
			
		||||
    //AConfiguration_getScreenLong(app->config);
 | 
			
		||||
 | 
			
		||||
    //state->userData = &engine;
 | 
			
		||||
    app->onAppCmd = AndroidCommandCallback;
 | 
			
		||||
    app->onInputEvent = AndroidInputCallback;
 | 
			
		||||
 | 
			
		||||
    assetManager = app->activity->assetManager;
 | 
			
		||||
 | 
			
		||||
    TraceLog(LOG_INFO, "Android app initialized successfully");
 | 
			
		||||
 | 
			
		||||
    // Wait for window to be initialized (display and context)
 | 
			
		||||
    while (!windowReady)
 | 
			
		||||
    {
 | 
			
		||||
        // Process events loop
 | 
			
		||||
        while ((ident = ALooper_pollAll(0, NULL, &events,(void**)&source)) >= 0)
 | 
			
		||||
        {
 | 
			
		||||
            // Process this event
 | 
			
		||||
            if (source != NULL) source->process(app, source);
 | 
			
		||||
 | 
			
		||||
            // NOTE: Never close window, native activity is controlled by the system!
 | 
			
		||||
            //if (app->destroyRequested != 0) windowShouldClose = true;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Close window and unload OpenGL context
 | 
			
		||||
static void CloseWindow(void)
 | 
			
		||||
{
 | 
			
		||||
    //rlglClose();                // De-init rlgl
 | 
			
		||||
    
 | 
			
		||||
    // Close surface, context and display
 | 
			
		||||
    if (display != EGL_NO_DISPLAY)
 | 
			
		||||
    {
 | 
			
		||||
        eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
 | 
			
		||||
 | 
			
		||||
        if (surface != EGL_NO_SURFACE)
 | 
			
		||||
        {
 | 
			
		||||
            eglDestroySurface(display, surface);
 | 
			
		||||
            surface = EGL_NO_SURFACE;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (context != EGL_NO_CONTEXT)
 | 
			
		||||
        {
 | 
			
		||||
            eglDestroyContext(display, context);
 | 
			
		||||
            context = EGL_NO_CONTEXT;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        eglTerminate(display);
 | 
			
		||||
        display = EGL_NO_DISPLAY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    TraceLog(LOG_INFO, "Window closed successfully");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Check if KEY_ESCAPE pressed or Close icon pressed
 | 
			
		||||
static bool WindowShouldClose(void)
 | 
			
		||||
{
 | 
			
		||||
    return windowShouldClose;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void InitGraphicsDevice(int width, int height)
 | 
			
		||||
{
 | 
			
		||||
    screenWidth = width;        // User desired width
 | 
			
		||||
    screenHeight = height;      // User desired height
 | 
			
		||||
 | 
			
		||||
    EGLint samples = 0;
 | 
			
		||||
    EGLint sampleBuffer = 0;
 | 
			
		||||
 | 
			
		||||
    const EGLint framebufferAttribs[] =
 | 
			
		||||
    {
 | 
			
		||||
        EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,     // Type of context support -> Required on RPI?
 | 
			
		||||
        //EGL_SURFACE_TYPE, EGL_WINDOW_BIT,          // Don't use it on Android!
 | 
			
		||||
        EGL_RED_SIZE, 8,            // RED color bit depth (alternative: 5)
 | 
			
		||||
        EGL_GREEN_SIZE, 8,          // GREEN color bit depth (alternative: 6)
 | 
			
		||||
        EGL_BLUE_SIZE, 8,           // BLUE color bit depth (alternative: 5)
 | 
			
		||||
        //EGL_ALPHA_SIZE, 8,        // ALPHA bit depth (required for transparent framebuffer)
 | 
			
		||||
        //EGL_TRANSPARENT_TYPE, EGL_NONE, // Request transparent framebuffer (EGL_TRANSPARENT_RGB does not work on RPI)
 | 
			
		||||
        EGL_DEPTH_SIZE, 16,         // Depth buffer size (Required to use Depth testing!)
 | 
			
		||||
        //EGL_STENCIL_SIZE, 8,      // Stencil buffer size
 | 
			
		||||
        EGL_SAMPLE_BUFFERS, sampleBuffer,    // Activate MSAA
 | 
			
		||||
        EGL_SAMPLES, samples,       // 4x Antialiasing if activated (Free on MALI GPUs)
 | 
			
		||||
        EGL_NONE
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    EGLint contextAttribs[] =
 | 
			
		||||
    {
 | 
			
		||||
        EGL_CONTEXT_CLIENT_VERSION, 2,
 | 
			
		||||
        EGL_NONE
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    EGLint numConfigs;
 | 
			
		||||
 | 
			
		||||
    // Get an EGL display connection
 | 
			
		||||
    display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
 | 
			
		||||
 | 
			
		||||
    // Initialize the EGL display connection
 | 
			
		||||
    eglInitialize(display, NULL, NULL);
 | 
			
		||||
 | 
			
		||||
    // Get an appropriate EGL framebuffer configuration
 | 
			
		||||
    eglChooseConfig(display, framebufferAttribs, &config, 1, &numConfigs);
 | 
			
		||||
 | 
			
		||||
    // Set rendering API
 | 
			
		||||
    eglBindAPI(EGL_OPENGL_ES_API);
 | 
			
		||||
 | 
			
		||||
    // Create an EGL rendering context
 | 
			
		||||
    context = eglCreateContext(display, config, EGL_NO_CONTEXT, contextAttribs);
 | 
			
		||||
 | 
			
		||||
    // Create an EGL window surface
 | 
			
		||||
    //---------------------------------------------------------------------------------
 | 
			
		||||
#if defined(PLATFORM_ANDROID)
 | 
			
		||||
    EGLint displayFormat;
 | 
			
		||||
 | 
			
		||||
    int displayWidth = ANativeWindow_getWidth(app->window);
 | 
			
		||||
    int displayHeight = ANativeWindow_getHeight(app->window);
 | 
			
		||||
 | 
			
		||||
    // EGL_NATIVE_VISUAL_ID is an attribute of the EGLConfig that is guaranteed to be accepted by ANativeWindow_setBuffersGeometry()
 | 
			
		||||
    // As soon as we picked a EGLConfig, we can safely reconfigure the ANativeWindow buffers to match, using EGL_NATIVE_VISUAL_ID
 | 
			
		||||
    eglGetConfigAttrib(display, config, EGL_NATIVE_VISUAL_ID, &displayFormat);
 | 
			
		||||
 | 
			
		||||
    // At this point we need to manage render size vs screen size
 | 
			
		||||
    // NOTE: This function use and modify global module variables: screenWidth/screenHeight and renderWidth/renderHeight and downscaleView
 | 
			
		||||
    
 | 
			
		||||
    //SetupFramebufferSize(displayWidth, displayHeight);
 | 
			
		||||
 | 
			
		||||
    //ANativeWindow_setBuffersGeometry(app->window, renderWidth, renderHeight, displayFormat);
 | 
			
		||||
    ANativeWindow_setBuffersGeometry(app->window, 0, 0, displayFormat);       // Force use of native display size
 | 
			
		||||
 | 
			
		||||
    surface = eglCreateWindowSurface(display, config, app->window, NULL);
 | 
			
		||||
#endif  // defined(PLATFORM_ANDROID)
 | 
			
		||||
 | 
			
		||||
    //eglSwapInterval(display, 1);
 | 
			
		||||
 | 
			
		||||
    if (eglMakeCurrent(display, surface, surface, context) == EGL_FALSE)
 | 
			
		||||
    {
 | 
			
		||||
        TraceLog(LOG_ERROR, "Unable to attach EGL rendering context to EGL surface");
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        // Grab the width and height of the surface
 | 
			
		||||
        //eglQuerySurface(display, surface, EGL_WIDTH, &renderWidth);
 | 
			
		||||
        //eglQuerySurface(display, surface, EGL_HEIGHT, &renderHeight);
 | 
			
		||||
 | 
			
		||||
        TraceLog(LOG_INFO, "Display device initialized successfully");
 | 
			
		||||
        TraceLog(LOG_INFO, "Display size: %i x %i", displayWidth, displayHeight);
 | 
			
		||||
    }
 | 
			
		||||
/*
 | 
			
		||||
    // Initialize OpenGL context (states and resources)
 | 
			
		||||
    // NOTE: screenWidth and screenHeight not used, just stored as globals
 | 
			
		||||
    rlglInit(screenWidth, screenHeight);
 | 
			
		||||
 | 
			
		||||
    // Setup default viewport
 | 
			
		||||
    rlViewport(0, 0, screenWidth, screenHeight);
 | 
			
		||||
 | 
			
		||||
    // Initialize internal projection and modelview matrices
 | 
			
		||||
    // NOTE: Default to orthographic projection mode with top-left corner at (0,0)
 | 
			
		||||
    rlMatrixMode(RL_PROJECTION);                // Switch to PROJECTION matrix
 | 
			
		||||
    rlLoadIdentity();                           // Reset current matrix (PROJECTION)
 | 
			
		||||
    rlOrtho(0, screenWidth, screenHeight, 0, 0.0f, 1.0f);
 | 
			
		||||
    rlMatrixMode(RL_MODELVIEW);                 // Switch back to MODELVIEW matrix
 | 
			
		||||
    rlLoadIdentity();                           // Reset current matrix (MODELVIEW)
 | 
			
		||||
 | 
			
		||||
    // Clear full framebuffer (not only render area) to color
 | 
			
		||||
    rlClearColor(245, 245, 245, 255);
 | 
			
		||||
*/
 | 
			
		||||
    glClearColor(1, 0, 0, 1);
 | 
			
		||||
    
 | 
			
		||||
#if defined(PLATFORM_ANDROID)
 | 
			
		||||
    windowReady = true;             // IMPORTANT!
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Copy back buffer to front buffers
 | 
			
		||||
static void SwapBuffers(void)
 | 
			
		||||
{
 | 
			
		||||
#if defined(PLATFORM_ANDROID) || defined(PLATFORM_RPI)
 | 
			
		||||
    eglSwapBuffers(display, surface);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if defined(PLATFORM_ANDROID)
 | 
			
		||||
// Android: Process activity lifecycle commands
 | 
			
		||||
static void AndroidCommandCallback(struct android_app *app, int32_t cmd)
 | 
			
		||||
{
 | 
			
		||||
    switch (cmd)
 | 
			
		||||
    {
 | 
			
		||||
        case APP_CMD_START:
 | 
			
		||||
        {
 | 
			
		||||
            //rendering = true;
 | 
			
		||||
            TraceLog(LOG_INFO, "APP_CMD_START");
 | 
			
		||||
        } break;
 | 
			
		||||
        case APP_CMD_RESUME:
 | 
			
		||||
        {
 | 
			
		||||
            TraceLog(LOG_INFO, "APP_CMD_RESUME");
 | 
			
		||||
        } break;
 | 
			
		||||
        case APP_CMD_INIT_WINDOW:
 | 
			
		||||
        {
 | 
			
		||||
            TraceLog(LOG_INFO, "APP_CMD_INIT_WINDOW");
 | 
			
		||||
 | 
			
		||||
            if (app->window != NULL)
 | 
			
		||||
            {
 | 
			
		||||
                if (contextRebindRequired)
 | 
			
		||||
                {
 | 
			
		||||
                    // Reset screen scaling to full display size
 | 
			
		||||
                    EGLint displayFormat;
 | 
			
		||||
                    eglGetConfigAttrib(display, config, EGL_NATIVE_VISUAL_ID, &displayFormat);
 | 
			
		||||
                    ANativeWindow_setBuffersGeometry(app->window, screenWidth, screenHeight, displayFormat);
 | 
			
		||||
 | 
			
		||||
                    // Recreate display surface and re-attach OpenGL context
 | 
			
		||||
                    surface = eglCreateWindowSurface(display, config, app->window, NULL);
 | 
			
		||||
                    eglMakeCurrent(display, surface, surface, context);
 | 
			
		||||
 | 
			
		||||
                    contextRebindRequired = false;
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    // Init graphics device (display device and OpenGL context)
 | 
			
		||||
                    InitGraphicsDevice(screenWidth, screenHeight);
 | 
			
		||||
 | 
			
		||||
                    // TODO: GPU assets reload in case of lost focus (lost context)
 | 
			
		||||
                    // NOTE: This problem has been solved just unbinding and rebinding context from display
 | 
			
		||||
                    /*
 | 
			
		||||
                    if (assetsReloadRequired)
 | 
			
		||||
                    {
 | 
			
		||||
                        for (int i = 0; i < assetsCount; i++)
 | 
			
		||||
                        {
 | 
			
		||||
                            // TODO: Unload old asset if required
 | 
			
		||||
 | 
			
		||||
                            // Load texture again to pointed texture
 | 
			
		||||
                            (*textureAsset + i) = LoadTexture(assetPath[i]);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    */
 | 
			
		||||
 | 
			
		||||
                    // Init hi-res timer
 | 
			
		||||
                    //InitTimer();          // TODO.
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        } break;
 | 
			
		||||
        case APP_CMD_GAINED_FOCUS:
 | 
			
		||||
        {
 | 
			
		||||
            TraceLog(LOG_INFO, "APP_CMD_GAINED_FOCUS");
 | 
			
		||||
            appEnabled = true;
 | 
			
		||||
            //ResumeMusicStream();
 | 
			
		||||
        } break;
 | 
			
		||||
        case APP_CMD_PAUSE:
 | 
			
		||||
        {
 | 
			
		||||
            TraceLog(LOG_INFO, "APP_CMD_PAUSE");
 | 
			
		||||
        } break;
 | 
			
		||||
        case APP_CMD_LOST_FOCUS:
 | 
			
		||||
        {
 | 
			
		||||
            //DrawFrame();
 | 
			
		||||
            TraceLog(LOG_INFO, "APP_CMD_LOST_FOCUS");
 | 
			
		||||
            appEnabled = false;
 | 
			
		||||
            //PauseMusicStream();
 | 
			
		||||
        } break;
 | 
			
		||||
        case APP_CMD_TERM_WINDOW:
 | 
			
		||||
        {
 | 
			
		||||
            // Dettach OpenGL context and destroy display surface
 | 
			
		||||
            // NOTE 1: Detaching context before destroying display surface avoids losing our resources (textures, shaders, VBOs...)
 | 
			
		||||
            // NOTE 2: In some cases (too many context loaded), OS could unload context automatically... :(
 | 
			
		||||
            eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
 | 
			
		||||
            eglDestroySurface(display, surface);
 | 
			
		||||
 | 
			
		||||
            contextRebindRequired = true;
 | 
			
		||||
 | 
			
		||||
            TraceLog(LOG_INFO, "APP_CMD_TERM_WINDOW");
 | 
			
		||||
        } break;
 | 
			
		||||
        case APP_CMD_SAVE_STATE:
 | 
			
		||||
        {
 | 
			
		||||
            TraceLog(LOG_INFO, "APP_CMD_SAVE_STATE");
 | 
			
		||||
        } break;
 | 
			
		||||
        case APP_CMD_STOP:
 | 
			
		||||
        {
 | 
			
		||||
            TraceLog(LOG_INFO, "APP_CMD_STOP");
 | 
			
		||||
        } break;
 | 
			
		||||
        case APP_CMD_DESTROY:
 | 
			
		||||
        {
 | 
			
		||||
            // TODO: Finish activity?
 | 
			
		||||
            //ANativeActivity_finish(app->activity);
 | 
			
		||||
 | 
			
		||||
            TraceLog(LOG_INFO, "APP_CMD_DESTROY");
 | 
			
		||||
        } break;
 | 
			
		||||
        case APP_CMD_CONFIG_CHANGED:
 | 
			
		||||
        {
 | 
			
		||||
            //AConfiguration_fromAssetManager(app->config, app->activity->assetManager);
 | 
			
		||||
            //print_cur_config(app);
 | 
			
		||||
 | 
			
		||||
            // Check screen orientation here!
 | 
			
		||||
 | 
			
		||||
            TraceLog(LOG_INFO, "APP_CMD_CONFIG_CHANGED");
 | 
			
		||||
        } break;
 | 
			
		||||
        default: break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Android: Get input events
 | 
			
		||||
static int32_t AndroidInputCallback(struct android_app *app, AInputEvent *event)
 | 
			
		||||
{
 | 
			
		||||
    //http://developer.android.com/ndk/reference/index.html
 | 
			
		||||
 | 
			
		||||
    int type = AInputEvent_getType(event);
 | 
			
		||||
 | 
			
		||||
    if (type == AINPUT_EVENT_TYPE_MOTION)
 | 
			
		||||
    {
 | 
			
		||||
        /*
 | 
			
		||||
        // Get first touch position
 | 
			
		||||
        touchPosition[0].x = AMotionEvent_getX(event, 0);
 | 
			
		||||
        touchPosition[0].y = AMotionEvent_getY(event, 0);
 | 
			
		||||
 | 
			
		||||
        // Get second touch position
 | 
			
		||||
        touchPosition[1].x = AMotionEvent_getX(event, 1);
 | 
			
		||||
        touchPosition[1].y = AMotionEvent_getY(event, 1);
 | 
			
		||||
        */
 | 
			
		||||
    }
 | 
			
		||||
    else if (type == AINPUT_EVENT_TYPE_KEY)
 | 
			
		||||
    {
 | 
			
		||||
        int32_t keycode = AKeyEvent_getKeyCode(event);
 | 
			
		||||
        //int32_t AKeyEvent_getMetaState(event);
 | 
			
		||||
 | 
			
		||||
        // Save current button and its state
 | 
			
		||||
        // NOTE: Android key action is 0 for down and 1 for up
 | 
			
		||||
        if (AKeyEvent_getAction(event) == 0)
 | 
			
		||||
        {
 | 
			
		||||
            //currentKeyState[keycode] = 1;  // Key down
 | 
			
		||||
            //lastKeyPressed = keycode;
 | 
			
		||||
        }
 | 
			
		||||
        //else currentKeyState[keycode] = 0;  // Key up
 | 
			
		||||
 | 
			
		||||
        if (keycode == AKEYCODE_POWER)
 | 
			
		||||
        {
 | 
			
		||||
            // Let the OS handle input to avoid app stuck. Behaviour: CMD_PAUSE -> CMD_SAVE_STATE -> CMD_STOP -> CMD_CONFIG_CHANGED -> CMD_LOST_FOCUS
 | 
			
		||||
            // Resuming Behaviour: CMD_START -> CMD_RESUME -> CMD_CONFIG_CHANGED -> CMD_CONFIG_CHANGED -> CMD_GAINED_FOCUS
 | 
			
		||||
            // It seems like locking mobile, screen size (CMD_CONFIG_CHANGED) is affected.
 | 
			
		||||
            // NOTE: AndroidManifest.xml must have <activity android:configChanges="orientation|keyboardHidden|screenSize" >
 | 
			
		||||
            // Before that change, activity was calling CMD_TERM_WINDOW and CMD_DESTROY when locking mobile, so that was not a normal behaviour
 | 
			
		||||
            return 0;
 | 
			
		||||
        }
 | 
			
		||||
        else if ((keycode == AKEYCODE_BACK) || (keycode == AKEYCODE_MENU))
 | 
			
		||||
        {
 | 
			
		||||
            // Eat BACK_BUTTON and AKEYCODE_MENU, just do nothing... and don't let to be handled by OS!
 | 
			
		||||
            return 1;
 | 
			
		||||
        }
 | 
			
		||||
        else if ((keycode == AKEYCODE_VOLUME_UP) || (keycode == AKEYCODE_VOLUME_DOWN))
 | 
			
		||||
        {
 | 
			
		||||
            // Set default OS behaviour
 | 
			
		||||
            return 0;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    int32_t action = AMotionEvent_getAction(event);
 | 
			
		||||
    unsigned int flags = action & AMOTION_EVENT_ACTION_MASK;
 | 
			
		||||
/*
 | 
			
		||||
    GestureEvent gestureEvent;
 | 
			
		||||
 | 
			
		||||
    // Register touch actions
 | 
			
		||||
    if (flags == AMOTION_EVENT_ACTION_DOWN) gestureEvent.touchAction = TOUCH_DOWN;
 | 
			
		||||
    else if (flags == AMOTION_EVENT_ACTION_UP) gestureEvent.touchAction = TOUCH_UP;
 | 
			
		||||
    else if (flags == AMOTION_EVENT_ACTION_MOVE) gestureEvent.touchAction = TOUCH_MOVE;
 | 
			
		||||
 | 
			
		||||
    // Register touch points count
 | 
			
		||||
    gestureEvent.pointCount = AMotionEvent_getPointerCount(event);
 | 
			
		||||
 | 
			
		||||
    // Register touch points id
 | 
			
		||||
    gestureEvent.pointerId[0] = AMotionEvent_getPointerId(event, 0);
 | 
			
		||||
    gestureEvent.pointerId[1] = AMotionEvent_getPointerId(event, 1);
 | 
			
		||||
 | 
			
		||||
    // Register touch points position
 | 
			
		||||
    // NOTE: Only two points registered
 | 
			
		||||
    gestureEvent.position[0] = (Vector2){ AMotionEvent_getX(event, 0), AMotionEvent_getY(event, 0) };
 | 
			
		||||
    gestureEvent.position[1] = (Vector2){ AMotionEvent_getX(event, 1), AMotionEvent_getY(event, 1) };
 | 
			
		||||
 | 
			
		||||
    // Normalize gestureEvent.position[x] for screenWidth and screenHeight
 | 
			
		||||
    gestureEvent.position[0].x /= (float)GetScreenWidth();
 | 
			
		||||
    gestureEvent.position[0].y /= (float)GetScreenHeight();
 | 
			
		||||
 | 
			
		||||
    gestureEvent.position[1].x /= (float)GetScreenWidth();
 | 
			
		||||
    gestureEvent.position[1].y /= (float)GetScreenHeight();
 | 
			
		||||
 | 
			
		||||
    // Gesture data is sent to gestures system for processing
 | 
			
		||||
    ProcessGestureEvent(gestureEvent);
 | 
			
		||||
*/
 | 
			
		||||
    return 0;   // return 1;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(PLATFORM_ANDROID)
 | 
			
		||||
/*
 | 
			
		||||
// Initialize asset manager from android app
 | 
			
		||||
void InitAssetManager(AAssetManager *manager)
 | 
			
		||||
{
 | 
			
		||||
    assetManager = manager;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Replacement for fopen
 | 
			
		||||
FILE *android_fopen(const char *fileName, const char *mode)
 | 
			
		||||
{
 | 
			
		||||
    if (mode[0] == 'w') return NULL;
 | 
			
		||||
 | 
			
		||||
    AAsset *asset = AAssetManager_open(assetManager, fileName, 0);
 | 
			
		||||
 | 
			
		||||
    if (!asset) return NULL;
 | 
			
		||||
 | 
			
		||||
    return funopen(asset, android_read, android_write, android_seek, android_close);
 | 
			
		||||
}
 | 
			
		||||
*/
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
// Module specific Functions Definition
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
#if defined(PLATFORM_ANDROID)
 | 
			
		||||
static int android_read(void *cookie, char *buf, int size)
 | 
			
		||||
{
 | 
			
		||||
    return AAsset_read((AAsset *)cookie, buf, size);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int android_write(void *cookie, const char *buf, int size)
 | 
			
		||||
{
 | 
			
		||||
    TraceLog(LOG_ERROR, "Can't provide write access to the APK");
 | 
			
		||||
 | 
			
		||||
    return EACCES;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static fpos_t android_seek(void *cookie, fpos_t offset, int whence)
 | 
			
		||||
{
 | 
			
		||||
    return AAsset_seek((AAsset *)cookie, offset, whence);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int android_close(void *cookie)
 | 
			
		||||
{
 | 
			
		||||
    AAsset_close((AAsset *)cookie);
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Show trace log messages (LOG_INFO, LOG_WARNING, LOG_ERROR, LOG_DEBUG)
 | 
			
		||||
static void TraceLog(int msgType, const char *text, ...)
 | 
			
		||||
{
 | 
			
		||||
    static char buffer[128];
 | 
			
		||||
    int traceDebugMsgs = 0;
 | 
			
		||||
    
 | 
			
		||||
#if defined(SUPPORT_TRACELOG_DEBUG)
 | 
			
		||||
    traceDebugMsgs = 1;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    switch(msgType)
 | 
			
		||||
    {
 | 
			
		||||
        case LOG_INFO: strcpy(buffer, "INFO: "); break;
 | 
			
		||||
        case LOG_ERROR: strcpy(buffer, "ERROR: "); break;
 | 
			
		||||
        case LOG_WARNING: strcpy(buffer, "WARNING: "); break;
 | 
			
		||||
        case LOG_DEBUG: strcpy(buffer, "DEBUG: "); break;
 | 
			
		||||
        default: break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    strcat(buffer, text);
 | 
			
		||||
    strcat(buffer, "\n");
 | 
			
		||||
 | 
			
		||||
    va_list args;
 | 
			
		||||
    va_start(args, text);
 | 
			
		||||
 | 
			
		||||
#if defined(PLATFORM_ANDROID)
 | 
			
		||||
    switch(msgType)
 | 
			
		||||
    {
 | 
			
		||||
        case LOG_INFO: __android_log_vprint(ANDROID_LOG_INFO, "raylib", buffer, args); break;
 | 
			
		||||
        case LOG_ERROR: __android_log_vprint(ANDROID_LOG_ERROR, "raylib", buffer, args); break;
 | 
			
		||||
        case LOG_WARNING: __android_log_vprint(ANDROID_LOG_WARN, "raylib", buffer, args); break;
 | 
			
		||||
        case LOG_DEBUG: if (traceDebugMsgs) __android_log_vprint(ANDROID_LOG_DEBUG, "raylib", buffer, args); break;
 | 
			
		||||
        default: break;
 | 
			
		||||
    }
 | 
			
		||||
#else
 | 
			
		||||
    if ((msgType != LOG_DEBUG) || ((msgType == LOG_DEBUG) && (traceDebugMsgs))) vprintf(buffer, args);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    va_end(args);
 | 
			
		||||
 | 
			
		||||
    if (msgType == LOG_ERROR) exit(1);  // If LOG_ERROR message, exit program
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Setup canvas (framebuffer) to start drawing
 | 
			
		||||
static void BeginDrawing(void)
 | 
			
		||||
{
 | 
			
		||||
/*
 | 
			
		||||
    currentTime = GetTime();            // Number of elapsed seconds since InitTimer() was called
 | 
			
		||||
    updateTime = currentTime - previousTime;
 | 
			
		||||
    previousTime = currentTime;
 | 
			
		||||
*/
 | 
			
		||||
    //rlClearScreenBuffers();             // Clear current framebuffers
 | 
			
		||||
    //rlLoadIdentity();                   // Reset current matrix (MODELVIEW)
 | 
			
		||||
    
 | 
			
		||||
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// End canvas drawing and swap buffers (double buffering)
 | 
			
		||||
static void EndDrawing(void)
 | 
			
		||||
{
 | 
			
		||||
    //rlglDraw();                     // Draw Buffers (Only OpenGL 3+ and ES2)
 | 
			
		||||
    
 | 
			
		||||
    SwapBuffers();                  // Copy back buffer to front buffer
 | 
			
		||||
    PollInputEvents();              // Poll user events
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    // Frame time control system
 | 
			
		||||
    currentTime = GetTime();
 | 
			
		||||
    drawTime = currentTime - previousTime;
 | 
			
		||||
    previousTime = currentTime;
 | 
			
		||||
    
 | 
			
		||||
    frameTime = updateTime + drawTime;
 | 
			
		||||
 | 
			
		||||
    // Wait for some milliseconds...
 | 
			
		||||
    if (frameTime < targetTime)
 | 
			
		||||
    {
 | 
			
		||||
        Wait((targetTime - frameTime)*1000.0f);
 | 
			
		||||
 | 
			
		||||
        currentTime = GetTime();
 | 
			
		||||
        double extraTime = currentTime - previousTime;
 | 
			
		||||
        previousTime = currentTime;
 | 
			
		||||
 | 
			
		||||
        frameTime += extraTime;
 | 
			
		||||
    }
 | 
			
		||||
*/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Poll (store) all input events
 | 
			
		||||
static void PollInputEvents(void)
 | 
			
		||||
{
 | 
			
		||||
    // Reset last key pressed registered
 | 
			
		||||
    //lastKeyPressed = -1;
 | 
			
		||||
    
 | 
			
		||||
#if defined(PLATFORM_ANDROID)
 | 
			
		||||
    // Register previous keys states
 | 
			
		||||
    // NOTE: Android supports up to 260 keys
 | 
			
		||||
    //for (int i = 0; i < 260; i++) previousKeyState[i] = currentKeyState[i];
 | 
			
		||||
 | 
			
		||||
    // Poll Events (registered events)
 | 
			
		||||
    // NOTE: Activity is paused if not enabled (appEnabled)
 | 
			
		||||
    while ((ident = ALooper_pollAll(appEnabled ? 0 : -1, NULL, &events,(void**)&source)) >= 0)
 | 
			
		||||
    {
 | 
			
		||||
        // Process this event
 | 
			
		||||
        if (source != NULL) source->process(app, source);
 | 
			
		||||
 | 
			
		||||
        // NOTE: Never close window, native activity is controlled by the system!
 | 
			
		||||
        if (app->destroyRequested != 0)
 | 
			
		||||
        {
 | 
			
		||||
            //TraceLog(LOG_INFO, "Closing Window...");
 | 
			
		||||
            //windowShouldClose = true;
 | 
			
		||||
            //ANativeActivity_finish(app->activity);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1367
									
								
								templates/android_project/src/raymath.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1367
									
								
								templates/android_project/src/raymath.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										4184
									
								
								templates/android_project/src/rlgl.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4184
									
								
								templates/android_project/src/rlgl.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										474
									
								
								templates/android_project/src/rlgl.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										474
									
								
								templates/android_project/src/rlgl.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,474 @@
 | 
			
		||||
/**********************************************************************************************
 | 
			
		||||
*
 | 
			
		||||
*   rlgl - raylib OpenGL abstraction layer
 | 
			
		||||
*
 | 
			
		||||
*   rlgl is a wrapper for multiple OpenGL versions (1.1, 2.1, 3.3 Core, ES 2.0) to 
 | 
			
		||||
*   pseudo-OpenGL 1.1 style functions (rlVertex, rlTranslate, rlRotate...). 
 | 
			
		||||
*
 | 
			
		||||
*   When chosing an OpenGL version greater than OpenGL 1.1, rlgl stores vertex data on internal 
 | 
			
		||||
*   VBO buffers (and VAOs if available). It requires calling 3 functions:
 | 
			
		||||
*       rlglInit()  - Initialize internal buffers and auxiliar resources
 | 
			
		||||
*       rlglDraw()  - Process internal buffers and send required draw calls
 | 
			
		||||
*       rlglClose() - De-initialize internal buffers data and other auxiliar resources
 | 
			
		||||
*
 | 
			
		||||
*   CONFIGURATION:
 | 
			
		||||
*
 | 
			
		||||
*   #define GRAPHICS_API_OPENGL_11
 | 
			
		||||
*   #define GRAPHICS_API_OPENGL_21
 | 
			
		||||
*   #define GRAPHICS_API_OPENGL_33
 | 
			
		||||
*   #define GRAPHICS_API_OPENGL_ES2
 | 
			
		||||
*       Use selected OpenGL graphics backend, should be supported by platform
 | 
			
		||||
*       Those preprocessor defines are only used on rlgl module, if OpenGL version is 
 | 
			
		||||
*       required by any other module, use rlGetVersion() tocheck it
 | 
			
		||||
*
 | 
			
		||||
*   #define RLGL_STANDALONE
 | 
			
		||||
*       Use rlgl as standalone library (no raylib dependency)
 | 
			
		||||
*
 | 
			
		||||
*   #define SUPPORT_VR_SIMULATION / SUPPORT_STEREO_RENDERING
 | 
			
		||||
*       Support VR simulation functionality (stereo rendering)
 | 
			
		||||
*
 | 
			
		||||
*   #define SUPPORT_SHADER_DISTORTION
 | 
			
		||||
*       Include stereo rendering distortion shader (shader_distortion.h)
 | 
			
		||||
*
 | 
			
		||||
*   DEPENDENCIES:
 | 
			
		||||
*       raymath     - 3D math functionality (Vector3, Matrix, Quaternion)
 | 
			
		||||
*       GLAD        - OpenGL extensions loading (OpenGL 3.3 Core only)
 | 
			
		||||
*
 | 
			
		||||
*
 | 
			
		||||
*   LICENSE: zlib/libpng
 | 
			
		||||
*
 | 
			
		||||
*   Copyright (c) 2014-2017 Ramon Santamaria (@raysan5)
 | 
			
		||||
*
 | 
			
		||||
*   This software is provided "as-is", without any express or implied warranty. In no event
 | 
			
		||||
*   will the authors be held liable for any damages arising from the use of this software.
 | 
			
		||||
*
 | 
			
		||||
*   Permission is granted to anyone to use this software for any purpose, including commercial
 | 
			
		||||
*   applications, and to alter it and redistribute it freely, subject to the following restrictions:
 | 
			
		||||
*
 | 
			
		||||
*     1. The origin of this software must not be misrepresented; you must not claim that you
 | 
			
		||||
*     wrote the original software. If you use this software in a product, an acknowledgment
 | 
			
		||||
*     in the product documentation would be appreciated but is not required.
 | 
			
		||||
*
 | 
			
		||||
*     2. Altered source versions must be plainly marked as such, and must not be misrepresented
 | 
			
		||||
*     as being the original software.
 | 
			
		||||
*
 | 
			
		||||
*     3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*
 | 
			
		||||
**********************************************************************************************/
 | 
			
		||||
 | 
			
		||||
#ifndef RLGL_H
 | 
			
		||||
#define RLGL_H
 | 
			
		||||
 | 
			
		||||
#if defined(RLGL_STANDALONE)
 | 
			
		||||
    #define RAYMATH_STANDALONE
 | 
			
		||||
#else
 | 
			
		||||
    #include "raylib.h"         // Required for: Model, Shader, Texture2D, TraceLog()
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "raymath.h"            // Required for: Vector3, Matrix
 | 
			
		||||
 | 
			
		||||
// Security check in case no GRAPHICS_API_OPENGL_* defined
 | 
			
		||||
#if !defined(GRAPHICS_API_OPENGL_11) && !defined(GRAPHICS_API_OPENGL_21) && !defined(GRAPHICS_API_OPENGL_33) && !defined(GRAPHICS_API_OPENGL_ES2)
 | 
			
		||||
    #define GRAPHICS_API_OPENGL_11
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Security check in case multiple GRAPHICS_API_OPENGL_* defined
 | 
			
		||||
#if defined(GRAPHICS_API_OPENGL_11)
 | 
			
		||||
    #if defined(GRAPHICS_API_OPENGL_21)
 | 
			
		||||
        #undef GRAPHICS_API_OPENGL_21
 | 
			
		||||
    #endif
 | 
			
		||||
    #if defined(GRAPHICS_API_OPENGL_33)
 | 
			
		||||
        #undef GRAPHICS_API_OPENGL_33
 | 
			
		||||
    #endif
 | 
			
		||||
    #if defined(GRAPHICS_API_OPENGL_ES2)
 | 
			
		||||
        #undef GRAPHICS_API_OPENGL_ES2
 | 
			
		||||
    #endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(GRAPHICS_API_OPENGL_21)
 | 
			
		||||
    #define GRAPHICS_API_OPENGL_33
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
// Defines and Macros
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
#if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33)
 | 
			
		||||
    // NOTE: This is the maximum amount of lines, triangles and quads per frame, be careful!
 | 
			
		||||
    #define MAX_LINES_BATCH         8192
 | 
			
		||||
    #define MAX_TRIANGLES_BATCH     4096
 | 
			
		||||
    #define MAX_QUADS_BATCH         8192
 | 
			
		||||
#elif defined(GRAPHICS_API_OPENGL_ES2)
 | 
			
		||||
    // NOTE: Reduce memory sizes for embedded systems (RPI and HTML5)
 | 
			
		||||
    // NOTE: On HTML5 (emscripten) this is allocated on heap, by default it's only 16MB!...just take care...
 | 
			
		||||
    #define MAX_LINES_BATCH         1024    // Critical for wire shapes (sphere)
 | 
			
		||||
    #define MAX_TRIANGLES_BATCH     2048    // Critical for some shapes (sphere)
 | 
			
		||||
    #define MAX_QUADS_BATCH         1024    // Be careful with text, every letter maps a quad
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Texture parameters (equivalent to OpenGL defines)
 | 
			
		||||
#define RL_TEXTURE_WRAP_S               0x2802      // GL_TEXTURE_WRAP_S
 | 
			
		||||
#define RL_TEXTURE_WRAP_T               0x2803      // GL_TEXTURE_WRAP_T
 | 
			
		||||
#define RL_TEXTURE_MAG_FILTER           0x2800      // GL_TEXTURE_MAG_FILTER
 | 
			
		||||
#define RL_TEXTURE_MIN_FILTER           0x2801      // GL_TEXTURE_MIN_FILTER
 | 
			
		||||
#define RL_TEXTURE_ANISOTROPIC_FILTER   0x3000      // Anisotropic filter (custom identifier)
 | 
			
		||||
 | 
			
		||||
#define RL_FILTER_NEAREST               0x2600      // GL_NEAREST
 | 
			
		||||
#define RL_FILTER_LINEAR                0x2601      // GL_LINEAR
 | 
			
		||||
#define RL_FILTER_MIP_NEAREST           0x2700      // GL_NEAREST_MIPMAP_NEAREST
 | 
			
		||||
#define RL_FILTER_NEAREST_MIP_LINEAR    0x2702      // GL_NEAREST_MIPMAP_LINEAR
 | 
			
		||||
#define RL_FILTER_LINEAR_MIP_NEAREST    0x2701      // GL_LINEAR_MIPMAP_NEAREST
 | 
			
		||||
#define RL_FILTER_MIP_LINEAR            0x2703      // GL_LINEAR_MIPMAP_LINEAR
 | 
			
		||||
 | 
			
		||||
#define RL_WRAP_REPEAT                  0x2901      // GL_REPEAT
 | 
			
		||||
#define RL_WRAP_CLAMP                   0x812F      // GL_CLAMP_TO_EDGE
 | 
			
		||||
#define RL_WRAP_CLAMP_MIRROR            0x8742      // GL_MIRROR_CLAMP_EXT
 | 
			
		||||
 | 
			
		||||
// Matrix modes (equivalent to OpenGL)
 | 
			
		||||
#define RL_MODELVIEW                    0x1700      // GL_MODELVIEW 
 | 
			
		||||
#define RL_PROJECTION                   0x1701      // GL_PROJECTION
 | 
			
		||||
#define RL_TEXTURE                      0x1702      // GL_TEXTURE
 | 
			
		||||
 | 
			
		||||
// Primitive assembly draw modes
 | 
			
		||||
#define RL_LINES                        0x0001      // GL_LINES
 | 
			
		||||
#define RL_TRIANGLES                    0x0004      // GL_TRIANGLES
 | 
			
		||||
#define RL_QUADS                        0x0007      // GL_QUADS
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
// Types and Structures Definition
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
typedef enum { OPENGL_11 = 1, OPENGL_21, OPENGL_33, OPENGL_ES_20 } GlVersion;
 | 
			
		||||
 | 
			
		||||
typedef unsigned char byte;
 | 
			
		||||
 | 
			
		||||
#if defined(RLGL_STANDALONE)
 | 
			
		||||
    #ifndef __cplusplus
 | 
			
		||||
    // Boolean type
 | 
			
		||||
    typedef enum { false, true } bool;
 | 
			
		||||
    #endif
 | 
			
		||||
    
 | 
			
		||||
    // Shader location point type
 | 
			
		||||
    typedef enum {
 | 
			
		||||
        LOC_VERTEX_POSITION = 0,
 | 
			
		||||
        LOC_VERTEX_TEXCOORD01,
 | 
			
		||||
        LOC_VERTEX_TEXCOORD02,
 | 
			
		||||
        LOC_VERTEX_NORMAL,
 | 
			
		||||
        LOC_VERTEX_TANGENT,
 | 
			
		||||
        LOC_VERTEX_COLOR,
 | 
			
		||||
        LOC_MATRIX_MVP,
 | 
			
		||||
        LOC_MATRIX_MODEL,
 | 
			
		||||
        LOC_MATRIX_VIEW,
 | 
			
		||||
        LOC_MATRIX_PROJECTION,
 | 
			
		||||
        LOC_VECTOR_VIEW,
 | 
			
		||||
        LOC_COLOR_DIFFUSE,
 | 
			
		||||
        LOC_COLOR_SPECULAR,
 | 
			
		||||
        LOC_COLOR_AMBIENT,
 | 
			
		||||
        LOC_MAP_ALBEDO,          // LOC_MAP_DIFFUSE
 | 
			
		||||
        LOC_MAP_METALNESS,       // LOC_MAP_SPECULAR
 | 
			
		||||
        LOC_MAP_NORMAL,
 | 
			
		||||
        LOC_MAP_ROUGHNESS,
 | 
			
		||||
        LOC_MAP_OCCUSION,
 | 
			
		||||
        LOC_MAP_EMISSION,
 | 
			
		||||
        LOC_MAP_HEIGHT,
 | 
			
		||||
        LOC_MAP_CUBEMAP,
 | 
			
		||||
        LOC_MAP_IRRADIANCE,
 | 
			
		||||
        LOC_MAP_PREFILTER,
 | 
			
		||||
        LOC_MAP_BRDF
 | 
			
		||||
    } ShaderLocationIndex;
 | 
			
		||||
 | 
			
		||||
    #define LOC_MAP_DIFFUSE      LOC_MAP_ALBEDO
 | 
			
		||||
    #define LOC_MAP_SPECULAR     LOC_MAP_METALNESS
 | 
			
		||||
 | 
			
		||||
    // Material map type
 | 
			
		||||
    typedef enum {
 | 
			
		||||
        MAP_ALBEDO    = 0,       // MAP_DIFFUSE
 | 
			
		||||
        MAP_METALNESS = 1,       // MAP_SPECULAR
 | 
			
		||||
        MAP_NORMAL    = 2,
 | 
			
		||||
        MAP_ROUGHNESS = 3,
 | 
			
		||||
        MAP_OCCLUSION,
 | 
			
		||||
        MAP_EMISSION,
 | 
			
		||||
        MAP_HEIGHT,
 | 
			
		||||
        MAP_CUBEMAP,             // NOTE: Uses GL_TEXTURE_CUBE_MAP
 | 
			
		||||
        MAP_IRRADIANCE,          // NOTE: Uses GL_TEXTURE_CUBE_MAP
 | 
			
		||||
        MAP_PREFILTER,           // NOTE: Uses GL_TEXTURE_CUBE_MAP
 | 
			
		||||
        MAP_BRDF
 | 
			
		||||
    } TexmapIndex;
 | 
			
		||||
 | 
			
		||||
    #define MAP_DIFFUSE      MAP_ALBEDO
 | 
			
		||||
    #define MAP_SPECULAR     MAP_METALNESS
 | 
			
		||||
 | 
			
		||||
    // Color type, RGBA (32bit)
 | 
			
		||||
    typedef struct Color {
 | 
			
		||||
        unsigned char r;
 | 
			
		||||
        unsigned char g;
 | 
			
		||||
        unsigned char b;
 | 
			
		||||
        unsigned char a;
 | 
			
		||||
    } Color;
 | 
			
		||||
    
 | 
			
		||||
    // Texture2D type
 | 
			
		||||
    // NOTE: Data stored in GPU memory
 | 
			
		||||
    typedef struct Texture2D {
 | 
			
		||||
        unsigned int id;        // OpenGL texture id
 | 
			
		||||
        int width;              // Texture base width
 | 
			
		||||
        int height;             // Texture base height
 | 
			
		||||
        int mipmaps;            // Mipmap levels, 1 by default
 | 
			
		||||
        int format;             // Data format (TextureFormat)
 | 
			
		||||
    } Texture2D;
 | 
			
		||||
 | 
			
		||||
    // RenderTexture2D type, for texture rendering
 | 
			
		||||
    typedef struct RenderTexture2D {
 | 
			
		||||
        unsigned int id;        // Render texture (fbo) id
 | 
			
		||||
        Texture2D texture;      // Color buffer attachment texture
 | 
			
		||||
        Texture2D depth;        // Depth buffer attachment texture
 | 
			
		||||
    } RenderTexture2D;
 | 
			
		||||
 | 
			
		||||
    // Vertex data definning a mesh
 | 
			
		||||
    typedef struct Mesh {
 | 
			
		||||
        int vertexCount;        // number of vertices stored in arrays
 | 
			
		||||
        int triangleCount;      // number of triangles stored (indexed or not)
 | 
			
		||||
        float *vertices;        // vertex position (XYZ - 3 components per vertex) (shader-location = 0)
 | 
			
		||||
        float *texcoords;       // vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)
 | 
			
		||||
        float *texcoords2;      // vertex second texture coordinates (useful for lightmaps) (shader-location = 5)
 | 
			
		||||
        float *normals;         // vertex normals (XYZ - 3 components per vertex) (shader-location = 2)
 | 
			
		||||
        float *tangents;        // vertex tangents (XYZ - 3 components per vertex) (shader-location = 4)
 | 
			
		||||
        unsigned char *colors;  // vertex colors (RGBA - 4 components per vertex) (shader-location = 3)
 | 
			
		||||
        unsigned short *indices;// vertex indices (in case vertex data comes indexed)
 | 
			
		||||
 | 
			
		||||
        unsigned int vaoId;     // OpenGL Vertex Array Object id
 | 
			
		||||
        unsigned int vboId[7];  // OpenGL Vertex Buffer Objects id (7 types of vertex data)
 | 
			
		||||
    } Mesh;
 | 
			
		||||
    
 | 
			
		||||
    // Shader and material limits
 | 
			
		||||
    #define MAX_SHADER_LOCATIONS    32
 | 
			
		||||
    #define MAX_MATERIAL_MAPS       12
 | 
			
		||||
    
 | 
			
		||||
    // Shader type (generic)
 | 
			
		||||
    typedef struct Shader {
 | 
			
		||||
        unsigned int id;                // Shader program id
 | 
			
		||||
        int locs[MAX_SHADER_LOCATIONS]; // Shader locations array
 | 
			
		||||
    } Shader;
 | 
			
		||||
 | 
			
		||||
    // Material texture map
 | 
			
		||||
    typedef struct MaterialMap {
 | 
			
		||||
        Texture2D texture;      // Material map texture
 | 
			
		||||
        Color color;            // Material map color
 | 
			
		||||
        float value;            // Material map value
 | 
			
		||||
    } MaterialMap;
 | 
			
		||||
 | 
			
		||||
    // Material type (generic)
 | 
			
		||||
    typedef struct Material {
 | 
			
		||||
        Shader shader;          // Material shader
 | 
			
		||||
        MaterialMap maps[MAX_MATERIAL_MAPS]; // Material maps
 | 
			
		||||
        float *params;          // Material generic parameters (if required)
 | 
			
		||||
    } Material;
 | 
			
		||||
 | 
			
		||||
    // Camera type, defines a camera position/orientation in 3d space
 | 
			
		||||
    typedef struct Camera {
 | 
			
		||||
        Vector3 position;       // Camera position
 | 
			
		||||
        Vector3 target;         // Camera target it looks-at
 | 
			
		||||
        Vector3 up;             // Camera up vector (rotation over its axis)
 | 
			
		||||
        float fovy;             // Camera field-of-view apperture in Y (degrees)
 | 
			
		||||
    } Camera;
 | 
			
		||||
    
 | 
			
		||||
    // TraceLog message types
 | 
			
		||||
    typedef enum { 
 | 
			
		||||
        LOG_INFO = 0, 
 | 
			
		||||
        LOG_ERROR, 
 | 
			
		||||
        LOG_WARNING, 
 | 
			
		||||
        LOG_DEBUG, 
 | 
			
		||||
        LOG_OTHER 
 | 
			
		||||
    } TraceLogType;
 | 
			
		||||
    
 | 
			
		||||
    // Texture formats (support depends on OpenGL version)
 | 
			
		||||
    typedef enum {
 | 
			
		||||
        UNCOMPRESSED_GRAYSCALE = 1,     // 8 bit per pixel (no alpha)
 | 
			
		||||
        UNCOMPRESSED_GRAY_ALPHA,
 | 
			
		||||
        UNCOMPRESSED_R5G6B5,            // 16 bpp
 | 
			
		||||
        UNCOMPRESSED_R8G8B8,            // 24 bpp
 | 
			
		||||
        UNCOMPRESSED_R5G5B5A1,          // 16 bpp (1 bit alpha)
 | 
			
		||||
        UNCOMPRESSED_R4G4B4A4,          // 16 bpp (4 bit alpha)
 | 
			
		||||
        UNCOMPRESSED_R8G8B8A8,          // 32 bpp
 | 
			
		||||
        UNCOMPRESSED_R32G32B32,         // 32 bit per channel (float) - HDR
 | 
			
		||||
        COMPRESSED_DXT1_RGB,            // 4 bpp (no alpha)
 | 
			
		||||
        COMPRESSED_DXT1_RGBA,           // 4 bpp (1 bit alpha)
 | 
			
		||||
        COMPRESSED_DXT3_RGBA,           // 8 bpp
 | 
			
		||||
        COMPRESSED_DXT5_RGBA,           // 8 bpp
 | 
			
		||||
        COMPRESSED_ETC1_RGB,            // 4 bpp
 | 
			
		||||
        COMPRESSED_ETC2_RGB,            // 4 bpp
 | 
			
		||||
        COMPRESSED_ETC2_EAC_RGBA,       // 8 bpp
 | 
			
		||||
        COMPRESSED_PVRT_RGB,            // 4 bpp
 | 
			
		||||
        COMPRESSED_PVRT_RGBA,           // 4 bpp
 | 
			
		||||
        COMPRESSED_ASTC_4x4_RGBA,       // 8 bpp
 | 
			
		||||
        COMPRESSED_ASTC_8x8_RGBA        // 2 bpp
 | 
			
		||||
    } TextureFormat;
 | 
			
		||||
 | 
			
		||||
    // Texture parameters: filter mode
 | 
			
		||||
    // NOTE 1: Filtering considers mipmaps if available in the texture
 | 
			
		||||
    // NOTE 2: Filter is accordingly set for minification and magnification
 | 
			
		||||
    typedef enum { 
 | 
			
		||||
        FILTER_POINT = 0,               // No filter, just pixel aproximation
 | 
			
		||||
        FILTER_BILINEAR,                // Linear filtering
 | 
			
		||||
        FILTER_TRILINEAR,               // Trilinear filtering (linear with mipmaps)
 | 
			
		||||
        FILTER_ANISOTROPIC_4X,          // Anisotropic filtering 4x
 | 
			
		||||
        FILTER_ANISOTROPIC_8X,          // Anisotropic filtering 8x
 | 
			
		||||
        FILTER_ANISOTROPIC_16X,         // Anisotropic filtering 16x
 | 
			
		||||
    } TextureFilterMode;
 | 
			
		||||
    
 | 
			
		||||
    // Texture parameters: wrap mode
 | 
			
		||||
    typedef enum { 
 | 
			
		||||
        WRAP_REPEAT = 0, 
 | 
			
		||||
        WRAP_CLAMP, 
 | 
			
		||||
        WRAP_MIRROR 
 | 
			
		||||
    } TextureWrapMode;
 | 
			
		||||
 | 
			
		||||
    // Color blending modes (pre-defined)
 | 
			
		||||
    typedef enum { 
 | 
			
		||||
        BLEND_ALPHA = 0, 
 | 
			
		||||
        BLEND_ADDITIVE, 
 | 
			
		||||
        BLEND_MULTIPLIED 
 | 
			
		||||
    } BlendMode;
 | 
			
		||||
 | 
			
		||||
    // VR Head Mounted Display devices
 | 
			
		||||
    typedef enum {
 | 
			
		||||
        HMD_DEFAULT_DEVICE = 0,
 | 
			
		||||
        HMD_OCULUS_RIFT_DK2,
 | 
			
		||||
        HMD_OCULUS_RIFT_CV1,
 | 
			
		||||
        HMD_VALVE_HTC_VIVE,
 | 
			
		||||
        HMD_SAMSUNG_GEAR_VR,
 | 
			
		||||
        HMD_GOOGLE_CARDBOARD,
 | 
			
		||||
        HMD_SONY_PLAYSTATION_VR,
 | 
			
		||||
        HMD_RAZER_OSVR,
 | 
			
		||||
        HMD_FOVE_VR,
 | 
			
		||||
    } VrDevice;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {            // Prevents name mangling of functions
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//------------------------------------------------------------------------------------
 | 
			
		||||
// Functions Declaration - Matrix operations
 | 
			
		||||
//------------------------------------------------------------------------------------
 | 
			
		||||
void rlMatrixMode(int mode);                    // Choose the current matrix to be transformed
 | 
			
		||||
void rlPushMatrix(void);                        // Push the current matrix to stack
 | 
			
		||||
void rlPopMatrix(void);                         // Pop lattest inserted matrix from stack
 | 
			
		||||
void rlLoadIdentity(void);                      // Reset current matrix to identity matrix
 | 
			
		||||
void rlTranslatef(float x, float y, float z);   // Multiply the current matrix by a translation matrix
 | 
			
		||||
void rlRotatef(float angleDeg, float x, float y, float z);  // Multiply the current matrix by a rotation matrix
 | 
			
		||||
void rlScalef(float x, float y, float z);       // Multiply the current matrix by a scaling matrix
 | 
			
		||||
void rlMultMatrixf(float *matf);                // Multiply the current matrix by another matrix
 | 
			
		||||
void rlFrustum(double left, double right, double bottom, double top, double near, double far);
 | 
			
		||||
void rlOrtho(double left, double right, double bottom, double top, double near, double far);
 | 
			
		||||
void rlViewport(int x, int y, int width, int height); // Set the viewport area
 | 
			
		||||
 | 
			
		||||
//------------------------------------------------------------------------------------
 | 
			
		||||
// Functions Declaration - Vertex level operations
 | 
			
		||||
//------------------------------------------------------------------------------------
 | 
			
		||||
void rlBegin(int mode);                         // Initialize drawing mode (how to organize vertex)
 | 
			
		||||
void rlEnd(void);                               // Finish vertex providing
 | 
			
		||||
void rlVertex2i(int x, int y);                  // Define one vertex (position) - 2 int
 | 
			
		||||
void rlVertex2f(float x, float y);              // Define one vertex (position) - 2 float
 | 
			
		||||
void rlVertex3f(float x, float y, float z);     // Define one vertex (position) - 3 float
 | 
			
		||||
void rlTexCoord2f(float x, float y);            // Define one vertex (texture coordinate) - 2 float
 | 
			
		||||
void rlNormal3f(float x, float y, float z);     // Define one vertex (normal) - 3 float
 | 
			
		||||
void rlColor4ub(byte r, byte g, byte b, byte a);    // Define one vertex (color) - 4 byte
 | 
			
		||||
void rlColor3f(float x, float y, float z);          // Define one vertex (color) - 3 float
 | 
			
		||||
void rlColor4f(float x, float y, float z, float w); // Define one vertex (color) - 4 float
 | 
			
		||||
 | 
			
		||||
//------------------------------------------------------------------------------------
 | 
			
		||||
// Functions Declaration - OpenGL equivalent functions (common to 1.1, 3.3+, ES2)
 | 
			
		||||
// NOTE: This functions are used to completely abstract raylib code from OpenGL layer
 | 
			
		||||
//------------------------------------------------------------------------------------
 | 
			
		||||
void rlEnableTexture(unsigned int id);                  // Enable texture usage
 | 
			
		||||
void rlDisableTexture(void);                            // Disable texture usage
 | 
			
		||||
void rlTextureParameters(unsigned int id, int param, int value); // Set texture parameters (filter, wrap)
 | 
			
		||||
void rlEnableRenderTexture(unsigned int id);            // Enable render texture (fbo)
 | 
			
		||||
void rlDisableRenderTexture(void);                      // Disable render texture (fbo), return to default framebuffer
 | 
			
		||||
void rlEnableDepthTest(void);                           // Enable depth test
 | 
			
		||||
void rlDisableDepthTest(void);                          // Disable depth test
 | 
			
		||||
void rlEnableWireMode(void);                            // Enable wire mode
 | 
			
		||||
void rlDisableWireMode(void);                           // Disable wire mode
 | 
			
		||||
void rlDeleteTextures(unsigned int id);                 // Delete OpenGL texture from GPU
 | 
			
		||||
void rlDeleteRenderTextures(RenderTexture2D target);    // Delete render textures (fbo) from GPU
 | 
			
		||||
void rlDeleteShader(unsigned int id);                   // Delete OpenGL shader program from GPU
 | 
			
		||||
void rlDeleteVertexArrays(unsigned int id);             // Unload vertex data (VAO) from GPU memory
 | 
			
		||||
void rlDeleteBuffers(unsigned int id);                  // Unload vertex data (VBO) from GPU memory
 | 
			
		||||
void rlClearColor(byte r, byte g, byte b, byte a);      // Clear color buffer with color
 | 
			
		||||
void rlClearScreenBuffers(void);                        // Clear used screen buffers (color and depth)
 | 
			
		||||
 | 
			
		||||
//------------------------------------------------------------------------------------
 | 
			
		||||
// Functions Declaration - rlgl functionality
 | 
			
		||||
//------------------------------------------------------------------------------------
 | 
			
		||||
void rlglInit(int width, int height);           // Initialize rlgl (buffers, shaders, textures, states)
 | 
			
		||||
void rlglClose(void);                           // De-inititialize rlgl (buffers, shaders, textures)
 | 
			
		||||
void rlglDraw(void);                            // Update and Draw default buffers (lines, triangles, quads)
 | 
			
		||||
 | 
			
		||||
int rlGetVersion(void);                         // Returns current OpenGL version
 | 
			
		||||
void rlLoadExtensions(void *loader);            // Load OpenGL extensions
 | 
			
		||||
Vector3 rlUnproject(Vector3 source, Matrix proj, Matrix view);  // Get world coordinates from screen coordinates
 | 
			
		||||
 | 
			
		||||
// Textures data management
 | 
			
		||||
unsigned int rlLoadTexture(void *data, int width, int height, int format, int mipmapCount);    // Load texture in GPU
 | 
			
		||||
void rlUpdateTexture(unsigned int id, int width, int height, int format, const void *data);    // Update GPU texture with new data
 | 
			
		||||
void rlUnloadTexture(unsigned int id);
 | 
			
		||||
void rlGenerateMipmaps(Texture2D *texture);                         // Generate mipmap data for selected texture
 | 
			
		||||
void *rlReadTexturePixels(Texture2D texture);                       // Read texture pixel data
 | 
			
		||||
unsigned char *rlReadScreenPixels(int width, int height);           // Read screen pixel data (color buffer)
 | 
			
		||||
RenderTexture2D rlLoadRenderTexture(int width, int height);         // Load a texture to be used for rendering (fbo with color and depth attachments)
 | 
			
		||||
 | 
			
		||||
// Vertex data management
 | 
			
		||||
void rlLoadMesh(Mesh *mesh, bool dynamic);                          // Upload vertex data into GPU and provided VAO/VBO ids
 | 
			
		||||
void rlUpdateMesh(Mesh mesh, int buffer, int numVertex);            // Update vertex data on GPU (upload new data to one buffer)
 | 
			
		||||
void rlDrawMesh(Mesh mesh, Material material, Matrix transform);    // Draw a 3d mesh with material and transform
 | 
			
		||||
void rlUnloadMesh(Mesh *mesh);                                      // Unload mesh data from CPU and GPU
 | 
			
		||||
 | 
			
		||||
// NOTE: There is a set of shader related functions that are available to end user,
 | 
			
		||||
// to avoid creating function wrappers through core module, they have been directly declared in raylib.h
 | 
			
		||||
 | 
			
		||||
#if defined(RLGL_STANDALONE)
 | 
			
		||||
//------------------------------------------------------------------------------------
 | 
			
		||||
// Shaders System Functions (Module: rlgl)
 | 
			
		||||
// NOTE: This functions are useless when using OpenGL 1.1
 | 
			
		||||
//------------------------------------------------------------------------------------
 | 
			
		||||
Shader LoadShader(char *vsFileName, char *fsFileName);  // Load a custom shader and bind default locations
 | 
			
		||||
void UnloadShader(Shader shader);                       // Unload a custom shader from memory
 | 
			
		||||
 | 
			
		||||
Shader GetShaderDefault(void);                          // Get default shader
 | 
			
		||||
Texture2D GetTextureDefault(void);                      // Get default texture
 | 
			
		||||
 | 
			
		||||
// Shader configuration functions
 | 
			
		||||
int GetShaderLocation(Shader shader, const char *uniformName);              // Get shader uniform location
 | 
			
		||||
void SetShaderValue(Shader shader, int uniformLoc, float *value, int size); // Set shader uniform value (float)
 | 
			
		||||
void SetShaderValuei(Shader shader, int uniformLoc, int *value, int size);  // Set shader uniform value (int)
 | 
			
		||||
void SetShaderValueMatrix(Shader shader, int uniformLoc, Matrix mat);       // Set shader uniform value (matrix 4x4)
 | 
			
		||||
void SetMatrixProjection(Matrix proj);                              // Set a custom projection matrix (replaces internal projection matrix)
 | 
			
		||||
void SetMatrixModelview(Matrix view);                               // Set a custom modelview matrix (replaces internal modelview matrix)
 | 
			
		||||
 | 
			
		||||
// Texture maps generation (PBR)
 | 
			
		||||
// NOTE: Required shaders should be provided
 | 
			
		||||
Texture2D GenTextureCubemap(Shader shader, Texture2D skyHDR, int size);     // Generate cubemap texture from HDR texture
 | 
			
		||||
Texture2D GenTextureIrradiance(Shader shader, Texture2D cubemap, int size); // Generate irradiance texture using cubemap data
 | 
			
		||||
Texture2D GenTexturePrefilter(Shader shader, Texture2D cubemap, int size);  // Generate prefilter texture using cubemap data
 | 
			
		||||
Texture2D GenTextureBRDF(Shader shader, Texture2D cubemap, int size);       // Generate BRDF texture using cubemap data
 | 
			
		||||
 | 
			
		||||
// Shading and blending
 | 
			
		||||
void BeginShaderMode(Shader shader);                    // Begin custom shader drawing
 | 
			
		||||
void EndShaderMode(void);                               // End custom shader drawing (use default shader)
 | 
			
		||||
void BeginBlendMode(int mode);                          // Begin blending mode (alpha, additive, multiplied)
 | 
			
		||||
void EndBlendMode(void);                                // End blending mode (reset to default: alpha blending)
 | 
			
		||||
 | 
			
		||||
// VR simulator functionality
 | 
			
		||||
void InitVrSimulator(int vrDevice);                     // Init VR simulator for selected device
 | 
			
		||||
void CloseVrSimulator(void);                            // Close VR simulator for current device
 | 
			
		||||
void UpdateVrTracking(Camera *camera);                  // Update VR tracking (position and orientation) and camera
 | 
			
		||||
void ToggleVrMode(void);                                // Enable/Disable VR experience (device or simulator)
 | 
			
		||||
void BeginVrDrawing(void);                              // Begin VR stereo rendering
 | 
			
		||||
void EndVrDrawing(void);                                // End VR stereo rendering
 | 
			
		||||
 | 
			
		||||
void TraceLog(int msgType, const char *text, ...);      // Show trace log messages (LOG_INFO, LOG_WARNING, LOG_ERROR, LOG_DEBUG)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif // RLGL_H
 | 
			
		||||
							
								
								
									
										214
									
								
								templates/android_project/src/utils.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										214
									
								
								templates/android_project/src/utils.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,214 @@
 | 
			
		||||
/**********************************************************************************************
 | 
			
		||||
*
 | 
			
		||||
*   raylib.utils - Some common utility functions
 | 
			
		||||
*
 | 
			
		||||
*   CONFIGURATION:
 | 
			
		||||
*
 | 
			
		||||
*   #define SUPPORT_SAVE_PNG (defined by default)
 | 
			
		||||
*       Support saving image data as PNG fileformat
 | 
			
		||||
*       NOTE: Requires stb_image_write library
 | 
			
		||||
*
 | 
			
		||||
*   #define SUPPORT_SAVE_BMP
 | 
			
		||||
*       Support saving image data as BMP fileformat
 | 
			
		||||
*       NOTE: Requires stb_image_write library
 | 
			
		||||
*
 | 
			
		||||
*   #define SUPPORT_TRACELOG
 | 
			
		||||
*       Show TraceLog() output messages
 | 
			
		||||
*       NOTE: By default LOG_DEBUG traces not shown
 | 
			
		||||
*
 | 
			
		||||
*   #define SUPPORT_TRACELOG_DEBUG
 | 
			
		||||
*       Show TraceLog() LOG_DEBUG messages
 | 
			
		||||
*
 | 
			
		||||
*   DEPENDENCIES:
 | 
			
		||||
*       stb_image_write - BMP/PNG writting functions
 | 
			
		||||
*
 | 
			
		||||
*
 | 
			
		||||
*   LICENSE: zlib/libpng
 | 
			
		||||
*
 | 
			
		||||
*   Copyright (c) 2014-2017 Ramon Santamaria (@raysan5)
 | 
			
		||||
*
 | 
			
		||||
*   This software is provided "as-is", without any express or implied warranty. In no event
 | 
			
		||||
*   will the authors be held liable for any damages arising from the use of this software.
 | 
			
		||||
*
 | 
			
		||||
*   Permission is granted to anyone to use this software for any purpose, including commercial
 | 
			
		||||
*   applications, and to alter it and redistribute it freely, subject to the following restrictions:
 | 
			
		||||
*
 | 
			
		||||
*     1. The origin of this software must not be misrepresented; you must not claim that you
 | 
			
		||||
*     wrote the original software. If you use this software in a product, an acknowledgment
 | 
			
		||||
*     in the product documentation would be appreciated but is not required.
 | 
			
		||||
*
 | 
			
		||||
*     2. Altered source versions must be plainly marked as such, and must not be misrepresented
 | 
			
		||||
*     as being the original software.
 | 
			
		||||
*
 | 
			
		||||
*     3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*
 | 
			
		||||
**********************************************************************************************/
 | 
			
		||||
 | 
			
		||||
#define SUPPORT_TRACELOG            // Output tracelog messages
 | 
			
		||||
//#define SUPPORT_TRACELOG_DEBUG     // Avoid LOG_DEBUG messages tracing
 | 
			
		||||
 | 
			
		||||
#include "raylib.h"                 // Required for: LogType enum
 | 
			
		||||
#include "utils.h"
 | 
			
		||||
 | 
			
		||||
#if defined(PLATFORM_ANDROID)
 | 
			
		||||
    #include <errno.h>
 | 
			
		||||
    #include <android/log.h>
 | 
			
		||||
    #include <android/asset_manager.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>                 // Required for: malloc(), free()
 | 
			
		||||
#include <stdio.h>                  // Required for: fopen(), fclose(), fputc(), fwrite(), printf(), fprintf(), funopen()
 | 
			
		||||
#include <stdarg.h>                 // Required for: va_list, va_start(), vfprintf(), va_end()
 | 
			
		||||
#include <string.h>                 // Required for: strlen(), strrchr(), strcmp()
 | 
			
		||||
 | 
			
		||||
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_RPI)
 | 
			
		||||
    #define STB_IMAGE_WRITE_IMPLEMENTATION
 | 
			
		||||
    #include "external/stb_image_write.h"    // Required for: stbi_write_bmp(), stbi_write_png()
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//#define RRES_IMPLEMENTATION
 | 
			
		||||
//#include "rres.h"
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
// Global Variables Definition
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
#if defined(PLATFORM_ANDROID)
 | 
			
		||||
AAssetManager *assetManager;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
// Module specific Functions Declaration
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
#if defined(PLATFORM_ANDROID)
 | 
			
		||||
static int android_read(void *cookie, char *buf, int size);
 | 
			
		||||
static int android_write(void *cookie, const char *buf, int size);
 | 
			
		||||
static fpos_t android_seek(void *cookie, fpos_t offset, int whence);
 | 
			
		||||
static int android_close(void *cookie);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
// Module Functions Definition - Utilities
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
// Show trace log messages (LOG_INFO, LOG_WARNING, LOG_ERROR, LOG_DEBUG)
 | 
			
		||||
void TraceLog(int msgType, const char *text, ...)
 | 
			
		||||
{
 | 
			
		||||
#if defined(SUPPORT_TRACELOG)
 | 
			
		||||
    static char buffer[128];
 | 
			
		||||
    int traceDebugMsgs = 0;
 | 
			
		||||
    
 | 
			
		||||
#if defined(SUPPORT_TRACELOG_DEBUG)
 | 
			
		||||
    traceDebugMsgs = 1;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    switch(msgType)
 | 
			
		||||
    {
 | 
			
		||||
        case LOG_INFO: strcpy(buffer, "INFO: "); break;
 | 
			
		||||
        case LOG_ERROR: strcpy(buffer, "ERROR: "); break;
 | 
			
		||||
        case LOG_WARNING: strcpy(buffer, "WARNING: "); break;
 | 
			
		||||
        case LOG_DEBUG: strcpy(buffer, "DEBUG: "); break;
 | 
			
		||||
        default: break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    strcat(buffer, text);
 | 
			
		||||
    strcat(buffer, "\n");
 | 
			
		||||
 | 
			
		||||
    va_list args;
 | 
			
		||||
    va_start(args, text);
 | 
			
		||||
 | 
			
		||||
#if defined(PLATFORM_ANDROID)
 | 
			
		||||
    switch(msgType)
 | 
			
		||||
    {
 | 
			
		||||
        case LOG_INFO: __android_log_vprint(ANDROID_LOG_INFO, "raylib", buffer, args); break;
 | 
			
		||||
        case LOG_ERROR: __android_log_vprint(ANDROID_LOG_ERROR, "raylib", buffer, args); break;
 | 
			
		||||
        case LOG_WARNING: __android_log_vprint(ANDROID_LOG_WARN, "raylib", buffer, args); break;
 | 
			
		||||
        case LOG_DEBUG: if (traceDebugMsgs) __android_log_vprint(ANDROID_LOG_DEBUG, "raylib", buffer, args); break;
 | 
			
		||||
        default: break;
 | 
			
		||||
    }
 | 
			
		||||
#else
 | 
			
		||||
    if ((msgType != LOG_DEBUG) || ((msgType == LOG_DEBUG) && (traceDebugMsgs))) vprintf(buffer, args);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    va_end(args);
 | 
			
		||||
 | 
			
		||||
    if (msgType == LOG_ERROR) exit(1);  // If LOG_ERROR message, exit program
 | 
			
		||||
    
 | 
			
		||||
#endif  // SUPPORT_TRACELOG
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_RPI)
 | 
			
		||||
 | 
			
		||||
#if defined(SUPPORT_SAVE_BMP)
 | 
			
		||||
// Creates a BMP image file from an array of pixel data
 | 
			
		||||
void SaveBMP(const char *fileName, unsigned char *imgData, int width, int height, int compSize)
 | 
			
		||||
{
 | 
			
		||||
    stbi_write_bmp(fileName, width, height, compSize, imgData);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(SUPPORT_SAVE_PNG)
 | 
			
		||||
// Creates a PNG image file from an array of pixel data
 | 
			
		||||
void SavePNG(const char *fileName, unsigned char *imgData, int width, int height, int compSize)
 | 
			
		||||
{
 | 
			
		||||
    stbi_write_png(fileName, width, height, compSize, imgData, width*compSize);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Keep track of memory allocated
 | 
			
		||||
// NOTE: mallocType defines the type of data allocated
 | 
			
		||||
/*
 | 
			
		||||
void RecordMalloc(int mallocType, int mallocSize, const char *msg)
 | 
			
		||||
{
 | 
			
		||||
    // TODO: Investigate how to record memory allocation data...
 | 
			
		||||
    // Maybe creating my own malloc function...
 | 
			
		||||
}
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#if defined(PLATFORM_ANDROID)
 | 
			
		||||
// Initialize asset manager from android app
 | 
			
		||||
void InitAssetManager(AAssetManager *manager)
 | 
			
		||||
{
 | 
			
		||||
    assetManager = manager;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Replacement for fopen
 | 
			
		||||
FILE *android_fopen(const char *fileName, const char *mode)
 | 
			
		||||
{
 | 
			
		||||
    if (mode[0] == 'w') return NULL;
 | 
			
		||||
 | 
			
		||||
    AAsset *asset = AAssetManager_open(assetManager, fileName, 0);
 | 
			
		||||
 | 
			
		||||
    if (!asset) return NULL;
 | 
			
		||||
 | 
			
		||||
    return funopen(asset, android_read, android_write, android_seek, android_close);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
// Module specific Functions Definition
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
#if defined(PLATFORM_ANDROID)
 | 
			
		||||
static int android_read(void *cookie, char *buf, int size)
 | 
			
		||||
{
 | 
			
		||||
    return AAsset_read((AAsset *)cookie, buf, size);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int android_write(void *cookie, const char *buf, int size)
 | 
			
		||||
{
 | 
			
		||||
    TraceLog(LOG_ERROR, "Can't provide write access to the APK");
 | 
			
		||||
 | 
			
		||||
    return EACCES;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static fpos_t android_seek(void *cookie, fpos_t offset, int whence)
 | 
			
		||||
{
 | 
			
		||||
    return AAsset_seek((AAsset *)cookie, offset, whence);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int android_close(void *cookie)
 | 
			
		||||
{
 | 
			
		||||
    AAsset_close((AAsset *)cookie);
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										79
									
								
								templates/android_project/src/utils.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								templates/android_project/src/utils.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,79 @@
 | 
			
		||||
/**********************************************************************************************
 | 
			
		||||
*
 | 
			
		||||
*   raylib.utils - Some common utility functions
 | 
			
		||||
*
 | 
			
		||||
*
 | 
			
		||||
*   LICENSE: zlib/libpng
 | 
			
		||||
*
 | 
			
		||||
*   Copyright (c) 2014-2017 Ramon Santamaria (@raysan5)
 | 
			
		||||
*
 | 
			
		||||
*   This software is provided "as-is", without any express or implied warranty. In no event
 | 
			
		||||
*   will the authors be held liable for any damages arising from the use of this software.
 | 
			
		||||
*
 | 
			
		||||
*   Permission is granted to anyone to use this software for any purpose, including commercial
 | 
			
		||||
*   applications, and to alter it and redistribute it freely, subject to the following restrictions:
 | 
			
		||||
*
 | 
			
		||||
*     1. The origin of this software must not be misrepresented; you must not claim that you
 | 
			
		||||
*     wrote the original software. If you use this software in a product, an acknowledgment
 | 
			
		||||
*     in the product documentation would be appreciated but is not required.
 | 
			
		||||
*
 | 
			
		||||
*     2. Altered source versions must be plainly marked as such, and must not be misrepresented
 | 
			
		||||
*     as being the original software.
 | 
			
		||||
*
 | 
			
		||||
*     3. This notice may not be removed or altered from any source distribution.
 | 
			
		||||
*
 | 
			
		||||
**********************************************************************************************/
 | 
			
		||||
 | 
			
		||||
#ifndef UTILS_H
 | 
			
		||||
#define UTILS_H
 | 
			
		||||
 | 
			
		||||
#if defined(PLATFORM_ANDROID)
 | 
			
		||||
    #include <stdio.h>                      // Required for: FILE
 | 
			
		||||
    #include <android/asset_manager.h>      // Required for: AAssetManager
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//#include "rres.h"
 | 
			
		||||
 | 
			
		||||
#define SUPPORT_SAVE_PNG
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
// Some basic Defines
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
#if defined(PLATFORM_ANDROID)
 | 
			
		||||
    #define fopen(name, mode) android_fopen(name, mode) 
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
// Types and Structures Definition
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {            // Prevents name mangling of functions
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
// Global Variables Definition
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
// Nop...
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
// Module Functions Declaration
 | 
			
		||||
//----------------------------------------------------------------------------------
 | 
			
		||||
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_RPI)
 | 
			
		||||
#if defined(SUPPORT_SAVE_BMP)
 | 
			
		||||
void SaveBMP(const char *fileName, unsigned char *imgData, int width, int height, int compSize);
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(SUPPORT_SAVE_PNG)
 | 
			
		||||
void SavePNG(const char *fileName, unsigned char *imgData, int width, int height, int compSize);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(PLATFORM_ANDROID)
 | 
			
		||||
void InitAssetManager(AAssetManager *manager);  // Initialize asset manager from android app
 | 
			
		||||
FILE *android_fopen(const char *fileName, const char *mode);    // Replacement for fopen()
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif // UTILS_H
 | 
			
		||||
		Reference in New Issue
	
	Block a user