2134
|
1 #include <al.h>
|
|
2
|
|
3 // X-RAM Function pointer definitions
|
|
4 typedef ALboolean (__cdecl *EAXSetBufferMode)(ALsizei n, ALuint *buffers, ALint value);
|
|
5 typedef ALenum (__cdecl *EAXGetBufferMode)(ALuint buffer, ALint *value);
|
|
6
|
|
7 //////////////////////////////////////////////////////////////////////////////
|
|
8 // Query for X-RAM extension
|
|
9 //
|
|
10 // if (alIsExtensionPresent("EAX-RAM") == AL_TRUE)
|
|
11 // X-RAM Extension found
|
|
12 //
|
|
13 //////////////////////////////////////////////////////////////////////////////
|
|
14
|
|
15
|
|
16 //////////////////////////////////////////////////////////////////////////////
|
|
17 // X-RAM enum names
|
|
18 //
|
|
19 // "AL_EAX_RAM_SIZE"
|
|
20 // "AL_EAX_RAM_FREE"
|
|
21 // "AL_STORAGE_AUTOMATIC"
|
|
22 // "AL_STORAGE_HARDWARE"
|
|
23 // "AL_STORAGE_ACCESSIBLE"
|
|
24 //
|
|
25 // Query enum values using alGetEnumValue, for example
|
|
26 //
|
|
27 // long lRamSizeEnum = alGetEnumValue("AL_EAX_RAM_SIZE")
|
|
28 //
|
|
29 //////////////////////////////////////////////////////////////////////////////
|
|
30
|
|
31
|
|
32 //////////////////////////////////////////////////////////////////////////////
|
|
33 // Query total amount of X-RAM
|
|
34 //
|
|
35 // long lTotalSize = alGetInteger(alGetEnumValue("AL_EAX_RAM_SIZE")
|
|
36 //
|
|
37 //////////////////////////////////////////////////////////////////////////////
|
|
38
|
|
39
|
|
40 //////////////////////////////////////////////////////////////////////////////
|
|
41 // Query free X-RAM available
|
|
42 //
|
|
43 // long lFreeSize = alGetInteger(alGetEnumValue("AL_EAX_RAM_FREE")
|
|
44 //
|
|
45 //////////////////////////////////////////////////////////////////////////////
|
|
46
|
|
47
|
|
48 //////////////////////////////////////////////////////////////////////////////
|
|
49 // Query X-RAM Function pointers
|
|
50 //
|
|
51 // Use typedefs defined above to get the X-RAM function pointers using
|
|
52 // alGetProcAddress
|
|
53 //
|
|
54 // EAXSetBufferMode eaxSetBufferMode;
|
|
55 // EAXGetBufferMode eaxGetBufferMode;
|
|
56 //
|
|
57 // eaxSetBufferMode = (EAXSetBufferMode)alGetProcAddress("EAXSetBufferMode");
|
|
58 // eaxGetBufferMode = (EAXGetBufferMode)alGetProcAddress("EAXGetBufferMode");
|
|
59 //
|
|
60 //////////////////////////////////////////////////////////////////////////////
|
|
61
|
|
62
|
|
63 //////////////////////////////////////////////////////////////////////////////
|
|
64 // Force an Open AL Buffer into X-RAM (good for non-streaming buffers)
|
|
65 //
|
|
66 // ALuint uiBuffer;
|
|
67 // alGenBuffers(1, &uiBuffer);
|
|
68 // eaxSetBufferMode(1, &uiBuffer, alGetEnumValue("AL_STORAGE_HARDWARE"));
|
|
69 // alBufferData(...);
|
|
70 //
|
|
71 //////////////////////////////////////////////////////////////////////////////
|
|
72
|
|
73
|
|
74 //////////////////////////////////////////////////////////////////////////////
|
|
75 // Force an Open AL Buffer into 'accessible' (currently host) RAM (good for streaming buffers)
|
|
76 //
|
|
77 // ALuint uiBuffer;
|
|
78 // alGenBuffers(1, &uiBuffer);
|
|
79 // eaxSetBufferMode(1, &uiBuffer, alGetEnumValue("AL_STORAGE_ACCESSIBLE"));
|
|
80 // alBufferData(...);
|
|
81 //
|
|
82 //////////////////////////////////////////////////////////////////////////////
|
|
83
|
|
84
|
|
85 //////////////////////////////////////////////////////////////////////////////
|
|
86 // Put an Open AL Buffer into X-RAM if memory is available, otherwise use
|
|
87 // host RAM. This is the default mode.
|
|
88 //
|
|
89 // ALuint uiBuffer;
|
|
90 // alGenBuffers(1, &uiBuffer);
|
|
91 // eaxSetBufferMode(1, &uiBuffer, alGetEnumValue("AL_STORAGE_AUTOMATIC"));
|
|
92 // alBufferData(...);
|
|
93 //
|
|
94 ////////////////////////////////////////////////////////////////////////////// |