Changeset 252
- Timestamp:
- 04/02/07 11:03:29 (1 year ago)
- Files:
-
- trunk/docs/credit.html (modified) (3 diffs)
- trunk/docs/index_a.html (modified) (9 diffs)
- trunk/docs/loading.html (modified) (4 diffs)
- trunk/docs/selective.html (modified) (6 diffs)
- trunk/docs/styles.css (modified) (5 diffs)
- trunk/docs/terms.html (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/docs/credit.html
r209 r252 13 13 <h3>Credit Where Credit is Due</h3> 14 14 <blockquote> 15 When I first started Derelict, I did it because it was something I needed. I 16 decided to make it available to the D community at large in case other D 17 programmers found a need for it also. I never really expected that anyone would. 18 Thus, it was surprising to learn that not only were people using it, but they 19 were willing to contribute to it! 15 When I first started Derelict, I did it because it was something I needed. I 16 decided to make it available to the D community at large in case other D 17 programmers found a need for it also. I never really expected that anyone would. 18 Thus, it was surprising to learn that not only were people using it, but they 19 were willing to contribute to it! 20 20 <p> 21 21 Contributions have come in various forms: bug reports, bug fixes, new ports, 22 22 and advice. For the first year of Derelict's existence, I did not maintain a 23 23 list of contributors. But, most everyone is on record in the forums (or my email 24 box). Names in parentheses are the handles on either the Derelict forums or the 24 box). Names in parentheses are the handles on either the Derelict forums or the 25 25 D newsgroups (D NGs). If I missed anyone, forgive me! 26 26 </blockquote> … … 37 37 </ul> 38 38 </p><p> 39 <b>Package Creators</b> - people who have created the initial versions of current Derelict packages<br> 39 <b>Package Creators</b> - people who have created the initial versions of past 40 and current Derelict packages<br> 40 41 <ul> 41 <li>Michael Parker (Aldacron) - DerelictGL, DerelictGLU, DerelictSDL, DerelictAL, 42 <li>Michael Parker (Aldacron) - DerelictGL, DerelictGLU, DerelictSDL, DerelictAL, 42 43 DerelictSDLImage, DerelictSDLNet</li> 43 44 <li>John Reimer (JJR) - DerelictGLFW, DerelictFT</li> … … 49 50 </ul> 50 51 </p><p> 51 <b>Bug Reporters/Bug Fixers</b> - people (other than the maintainers), who have 52 submitted bug reports and/or fixes (in no particular order)<br> 52 <b>Contributers</b> - people (other than the maintainers), who have submitted 53 bug reports, fixes, and enhancements in order to make Derelict what it has 54 become (in no particular order)<br> 53 55 <ul> 54 <li>Clay Smith (clayasaurus) - has caught numerous bugs and made several fixes; 55 did a lot of work getting Derelict on Linux before John came in</li> 56 <li>Justin Calvarese (jcc7) - took some of my crashing Derelict code and narrowed it down to 57 the minimal case so that we could report a DMD bug to Walter</li> 58 <li>Miguel Ferreira Simões - caught and fixed a major DerelictGL bug</li> 59 <li>Sebastian Beschke (randomZ) - reported an access violation in DerelictGL; 60 submitted some DerelictSDLttf fixes.</li> 61 <li>??? (xicesky) - submitted a fix for a bug in DerelictSDLMixer</li> 62 <li>Trevor Parscal - reported conflicts between DerelictGL and external Win32 GDI bindings</li> 63 <li>Eric Poggel (JoeCoder) - fixed a bug with buildme.d on Linux; reported some DerelictGL bugs</li> 64 <li>??? (silvestre) - fixed a bug with OpenGL version handling</li> 65 <li>??? (lindquist) - added some missing OpenGL 1.4 declarations</li> 66 <li>??? (odeamus) - reported missing declarations in DerelictFT; reported typo in DerelictGL</li> 56 <li>Clay Smith (clayasaurus)</li> 57 <li>Justin Calvarese (jcc7)</li> 58 <li>Miguel Ferreira Simões</li> 59 <li>Sebastian Beschke (randomZ)</li> 60 <li>??? (xicesky)</li> 61 <li>Trevor Parscal</li> 62 <li>Eric Poggel (JoeCoder)</li> 63 <li>??? (silvestre)</li> 64 <li>??? (lindquist)</li> 65 <li>??? (odeamus)</li> 66 <li>Lucas Goss (lgoss007)</li> 67 <li>Matti Niemenmaa (Deewiant)</li> 68 <li>Anders F Björklund (afb)</li> 69 <li>James Pelcis (jpelcis</li> 70 <li>Eric Poggel (JoeCoder)</li> 71 <li>William R. DeVore (quartz)</li> 72 <li>??? (volcore)</li> 73 <li>Paolo Invernizzi</li> 74 <li>??? (demise)</li> 75 <li>??? (wct)</li> 67 76 </ul> 68 77 </p><p> 69 <b>Other Contributors</b> - people who contributed enhancements/improvements that 70 weren't bug fixes. 71 <ul> 72 <li>Lucas Goss (lgoss007) - implemented and submitted build scripts for Linux (which 73 have been superseded by the new build system - but thanks anyway!)</li> 74 <li>Matti Niemenmaa (Deewiant) - updated DerelictGLFW to work with GLFW 2.5</li> 75 <li>Anders F Björklund (afb) - submitted a patch to derelict.util.loader to make it work with GDC.</li> 76 <li>James Pelcis (jpelcis) - submitted up to date versions of DerelictSDLImage, DerelictSDLMixer, 77 DerelictSDLNet, and DerelictSDLttf. 78 <li>Eric Poggel (JoeCoder) - knocked up the initial version of the documentaion style sheet.</li> 79 <li>??? (lindquist) - added support for some OpenGL extensions</li> 80 <li>William R. DeVore (quartz) - added support for GL_ATI extensions</li> 81 </ul> 78 If your handle is listed next to a '???', please let me know your name and I'll 79 fill it in. 82 80 </p><p> 83 <b>Derelict's Little Helpers</b> - people (other than the maintainers) who have 84 been extremely helpful to new Derelict users on the forums and the D NGs<br> 85 <ul> 86 <li>Clay Smith (clayasaurus)</li> 87 </ul> 88 </p><p> 89 <b>Misc.</b> - people who have influenced the development of Derelict in a 81 <b>Misc.</b> - people who have influenced the development of Derelict in a 90 82 profound way.<br> 91 83 <ul> trunk/docs/index_a.html
r219 r252 13 13 Derelict is a collection of D bindings to C shared (dynamic) libraries which are 14 14 useful for multimedia applications, with a heavy bias toward libraries commonly 15 used in game development. Derelict currently includes bindings for the following 15 used in game development. Derelict currently includes bindings for the following 16 16 libraries: 17 17 … … 32 32 <p> 33 33 34 Over the past few years, D bindings for some of the above libraries have been created 34 Over the past few years, D bindings for some of the above libraries have been created 35 35 as part of other projects. One thing all of the existing bindings had in common 36 36 was that they required users to statically link to import libraries. None of the 37 37 bindings were designed to allow a user to manually load libraries via an operating 38 38 system API (such as LoadLibrary/GetProcAddress on Windows, or libdl on Linux and 39 Mac). Linking to a shared library's static import library is not a bad thing, 39 Mac). Linking to a shared library's static import library is not a bad thing, 40 40 but having the option to load a shared library manually allows the developer a 41 41 great deal more flexibility - particularly when things go wrong. … … 47 47 you wish to link with, then you need to go through the step of converting the 48 48 library to the proper format, or, if the library's source is available, compile 49 the library with a compiler that outputs the proper object format (currently, 49 the library with a compiler that outputs the proper object format (currently, 50 50 this is only an issue on Windows when using the DMD tools). This is only a minor 51 51 annoyance that can usually be handled once and forgotten about until you upgrade 52 to a new version of a library. But, there is a more serious issue with static 52 to a new version of a library. But, there is a more serious issue with static 53 53 import libraries in that they lack flexibility and robustness. 54 54 </p><p> … … 58 58 fail to load and the operating system will display an error message to the user. 59 59 This could also occur if the only version of a shared library available on the 60 user's system is older than the version of the static import library. The 60 user's system is older than the version of the static import library. The 61 61 error message displayed may not be very user-friendly. Some users who do not 62 62 understand the concepts behind the error message could become frustrated with 63 you, the developer, and may even view you as unprofessional. When it comes to 63 you, the developer, and may even view you as unprofessional. When it comes to 64 64 software, there is no such thing as one-size-fits-all. A large company like Adobe, 65 65 or someone making free software, may not find such errors a concern. A solo … … 88 88 <h4>Special Features</h4> 89 89 Derelict goes one step further and allows selective loading of shared library 90 symbols. This gives you the freedom to do things like falling back to older 90 symbols. This gives you the freedom to do things like falling back to older 91 91 versions of a shared library when a current version is not available. For example, 92 92 if a particular Derelict package is setup to load version 2 of a shared library, 93 93 but your application does not use any exported functions or variables that are 94 specific to version 2, then you can use selective symbol loading to allow 94 specific to version 2, then you can use selective symbol loading to allow 95 95 version 1 of the shared library to be loaded if version 2 fails to load. 96 96 </p><p> … … 98 98 of manually loading libraries, other features (such as <a href="selective.html"> 99 99 selective symbol exceptions</a>) are provided through the DerelictUtil package. 100 As a side effect, all Derelict packages have an implicit dependency upon DerelictUtil. 100 As a side effect, all Derelict packages have an implicit dependency upon DerelictUtil. 101 101 This means that when compiling any individual packages, DerelictUtil <b>must</b> 102 be available on the import path, and when linking, DerelictUtil <b>must be</b> 102 be available on the import path, and when linking, DerelictUtil <b>must be</b> 103 103 linked into the application. See the <a href="util.html">DerelictUtil documentation</a> 104 104 for more details. … … 106 106 <h4>The Future</h4> 107 107 Derelict has grown quite a bit since its humble beginnnings as OpenGL and SDL 108 bindings created by one guy as a hobby project. Users have contributed a number 109 of packages, bugfixes and improvements over the project's lifetime. The build 108 bindings created by one guy as a hobby project. Users have contributed a number 109 of packages, bugfixes and improvements over the project's lifetime. The build 110 110 system has been overhauled twice. The internal loading system has been rewritten 111 twice. Other packages are waiting in the wings to be added somewhere down the 111 twice. Other packages are waiting in the wings to be added somewhere down the 112 112 road. Most importantly, the user community has continued to grow. 113 113 <p> 114 Because of Derelict's success, it must continue to evolve and grow. As the number115 of Derelict users increases, so does the variety of project requirements. Derelict116 was started because other bindings forced users to statically link to an import117 library. To date, Derelict has forced users to load import libraries manually.118 The reality is that such an approach goes against the idea of flexibility that119 Derelict was built on in the first place. In order to really satisfy as many120 users as possible, all Derelict packages will ultimately be configurable to121 allow static import library linkage (though not static library linkage -122 see <a href="terms.hmtl">this page</a> for clarification of the terminology).123 This feature is experimentally implemented in <a href="al.html">DerelictAL</a>.124 </p><p>125 114 More users also means more demand for new Derelict packages. Rather than adding 126 115 just any old binding to Derelict, there must be some guidelines in place to 127 116 keep things under control. The following (loose) criteria are used to determine 128 the fitness of bindings to any given library for inclusion in the Derelict trunk .117 the fitness of bindings to any given library for inclusion in the Derelict trunk: 129 118 130 <h4 id="criteria">Criteria for Adding a Package to Derelict</h4>131 119 <ul> 132 120 <li>is the library useful for games or other multimedia applications?</li> … … 142 130 its chances for inclusion into Derelict are high. While the given criteria are 143 131 not etched in stone and anything is possible, you can be certain that no library 144 licensed under the <a href="http://www.gnu.org/copyleft/gpl.html">GPL</a> will 145 ever make it into Derelict. 132 licensed under the <a href="http://www.gnu.org/copyleft/gpl.html">GPL</a> will 133 ever make it into Derelict. Keeping Derelict free of viral licenses like the GPL 134 allows users to make their own decision about whether or not to open their source, 135 rather than requiring them to do so. 146 136 </p><p> 147 137 If a particular library you want to use is not currently in Derelict, you can … … 150 140 forums</a> that it be included. Even if your work is not officially added 151 141 to the trunk, you are still free to use it yourself or even distribute it as 152 a separate package from your own website. Read <a href="derelictify.html">Aldacron's 153 Guide to Derelictification</a> for instructions on how to create your own 142 a separate package from your own website. Read <a href="derelictify.html">Aldacron's 143 Guide to Derelictification</a> for instructions on how to create your own 154 144 Derelict packages. 155 145 </p> 156 146 <h4>The Docs</h4> 157 The documents linked in the first section below give a general overview of 147 The documents linked in the first section below give a general overview of 158 148 Derelict, explaining functionality common to all Derelict packages. The 159 documents linked in the second section give specificdetails on building and using149 documents linked in the second section give details on building and using 160 150 specific packages. 161 151 </p> trunk/docs/loading.html
r195 r252 11 11 <hr> 12 12 <h3>Introduction</h3> 13 All Derelict packages are interface to C shared libraries. No package in Derelict 14 is designed to work with static C libraries. By default, Derelict packages are 15 designed to load shared libraries manually. If you use the manual loading system, 16 which is the most flexible way to use Derelict, then the instructions on this 17 page apply to you. The interface is the same for all packages in Derelict, so these 18 instructions apply to each package. Any exceptions will be noted in the package 19 documentation. 13 All Derelict packages are bindings to C shared libraries. No package in Derelict 14 is designed to work with static C libraries. The interface for loading and 15 unloading shared libraries is the same for all packages in Derelict, so the 16 instructions on this page apply to each package. However, some libraries may have 17 special features that require more than the common loader interface. Any such 18 exceptions will be noted in the documentation for those packages. 20 19 21 20 <h3>Derelict's Common Loader Interface</h3> 22 Shared libraries are loaded in Derelict through a common interface. You are 23 p robably already aware of Derelict's package naming convention. Each package name24 is a combination of Derelict with some form of the name of the library the 25 package binds with. No matter what form of the library name is used, the Derelict 26 package name is the same throughout all documentation and code related to that 27 package. DerelictGL is always referred to as DerelictGL. If you aren't sure about 28 a package name, look at the documentationlist at the bottom of the29 <a href="index_a.html">front page</a>. All of the package document titles in 21 You are probably already aware of Derelict's package naming convention. Each 22 package name is a combination of 'Derelict' with some form of the name of the 23 library the package binds with. No matter what form of the library name is used, 24 the Derelict package name is the same throughout all documentation and code 25 related to that package. For example, DerelictGL is always referred to as 26 'DerelictGL'. If you aren't sure about a package name, look at the documentation 27 list at the bottom of the 28 <a href="index_a.html">front page</a>. All of the package document titles in 30 29 that list correlate to Derelict package names. 31 30 </p><p> … … 37 36 </p> 38 37 <h4>Loading</h4> 39 The important thing to remember about loading is that 38 The important thing to remember about loading is that 40 39 <span class="important">a package's load method must be called before any functions 41 from the bound library can be used</span>. If you tried to use a n OpenGLfunction42 without first calling DerelictGL.load(), you would find yourself with an access43 violation. When manually loading shared libraries, the library interface consists of function 44 pointers. The load method pulls the shared library in to memory and points all 45 of the function pointers to the proper memory location. Until then, the function40 from the bound library can be used</span>. If you tried to use a library function 41 without first calling the load method for that package, you would find yourself 42 with an access violation. The library interface consists of function pointers. 43 The load method pulls the shared library in to memory and points each function 44 pointer to the address of the appropriate function. Until that time, the function 46 45 pointers are all null. 47 46 <p> 48 As an example, if you were using Derelict GL, you would use the following49 syntax to load the OpenGL shared library:47 As an example, if you were using DerelictSDL, you would use the following 48 syntax to load the SDL shared library: 50 49 51 50 <pre> 52 Derelict GL.load();51 DerelictSDL.load(); 53 52 </pre> 54 53 55 From that point onward you would be able to use all OpenGL functions normally.54 From that point onward you would be able to use all SDL functions normally. 56 55 </p><p> 57 56 The load method accepts an optional shared library name string parameter that will … … 60 59 a hardware accelerated version of OpenAL, some do not. You may want to ship the 61 60 OpenAL dll with your app, but renamed to something like "myopenal.dll", or perhaps 62 with the same name but in a subdirectory of the application directory ("al/openal32.dll"). 63 If the <tt>DerelictAL.load()</tt> fails, then you can call 61 with the same name but in a subdirectory of the application directory ("al/openal32.dll"). 62 If the <tt>DerelictAL.load()</tt> fails, then you can call 64 63 <tt>DerelictAL.load("myopenal.dll")</tt> instead. This is important because 65 64 Windows (and other OSes) will look in the application's directory for a given 66 65 shared library before looking in system directories. If you were to drop openal32.dll 67 in your application's directory, it would be loaded every time. This technique 68 can be used for every Derelict package, not just DerelictAL. 66 in your application's directory, that version would be loaded every time and any 67 hardware accelerated version in the system directories would be ignored. This 68 technique can be used for every Derelict package, not just DerelictAL. 69 69 </p><p> 70 70 Sometimes, loads fail. There are several root causes for this, the end result 71 being either that the system couldn't find the shared library or one of the71 being either that the system couldn't find the shared library or that one of the 72 72 functions Derelict expected to find in the library wasn't there. In either 73 73 case, the load method will throw an exception. You can read more about Derelict … … 78 78 79 79 <h4>Unloading</h4> 80 Unloading a shared library uses the same syntax , but you call the unload method81 instead:80 Unloading a shared library uses the same syntax as when loading, but you call 81 the <tt>unload</tt> method instead: 82 82 83 83 <pre> 84 Derelict GL.unload();84 DerelictSDL.unload(); 85 85 </pre> 86 86 87 87 In normal usage of Derelict, <span class="important">you do not need to unload 88 88 any of the shared libraries</span>. Derelict will do this for you automatically. 89 The unload method is provided as a convenience for those who want to implement90 hot swapping or want to free up memory if a library is no longer needed during 89 The <tt>unload</tt> method is provided as a convenience for those who want to implement 90 hot swapping or want to free up memory if a library is no longer needed during 91 91 execution. 92 92 </p> 93 94 <h4>Note For Linux/Mac Users</h4> 95 On Linux and Mac, there is one additional dependency that must be linked into 96 your executable: libdl. On Windows, the functions used to load shared libraries 97 are part of the core libraries linked automatically during compilation. On other 98 platforms, this is not the case. So any time you compile a Derelict application 99 on Linux or Mac, regardless of whether you are using DMD or GDC, you must link 100 to libdl. Otherwise, compilation will fail with symbol errors. 93 101 94 102 trunk/docs/selective.html
r197 r252 29 29 30 30 <p> 31 When a symbol fails to load, Derelict first checks if a MissingProcCallback has32 been set. If it has, then the callback is called with the name of the library31 When a symbol fails to load, Derelict first checks if a <tt>MissingProcCallback</tt> 32 has been set. If it has, then the callback is called with the name of the library 33 33 and the name of the missing symbol as arguments. If a callback has not been set, 34 34 then a <tt>SharedLibProcLoadException</tt> is thrown instead. Callbacks can be … … 37 37 <p> 38 38 Following is a complete example of using this feature. Older versions of SDL 39 did not include functions to test for CPU capabilities. 39 did not include functions to test for CPU capabilities. 40 40 <a href="sdl.html">DerelictSDL</a> always attempts to load those functions since 41 41 they are present in the latest versions. It is possible to load older versions … … 52 52 bool myMissingProcCallback(char[] libName, char[] procName) 53 53 { 54 // there are 8 functions as part ofSDL's CPU interface - test for them all.54 // there are 8 functions in SDL's CPU interface - test for them all. 55 55 // If the procName matches any one of them, return true to ignore the missing 56 56 // function. … … 64 64 procName.cmp("SDL_HasAltiVec") == 0) 65 65 return true; // ignore the error and throw no exception 66 66 67 67 // a function other than one of those above failed to load - return false 68 68 // to indicate that an exception should be thrown. 69 return false; 69 return false; 70 70 } 71 71 … … 75 75 Derelict_SetMissingProcCallback(&myMissingProcCallback); 76 76 DerelictSDL.load(); 77 } 77 } 78 78 </pre> 79 79 … … 89 89 </p> 90 90 <p> 91 <span class="important">This is an optional feature and is not required to use 92 Derelict</span>. It is provided to give an even greater degree of flexibility 93 and control to those who need it. 91 <span class="important">This is an optional feature and is not required to use 92 Derelict</span>. It is provided to give an even greater degree of flexibility 93 and control to those who need it. 94 94 </p> 95 95 trunk/docs/styles.css
r158 r252 11 11 12 12 /* no margins at the edge of the page */ 13 body{ 13 body{ 14 14 font-family : Verdana, Helvetica, sans-serif; 15 15 font-size : 11pt; … … 21 21 /* Decrease border above and below list */ 22 22 ul { 23 margin-top : 0.25em; 23 margin-top : 0.25em; 24 24 } 25 25 … … 27 27 pre { 28 28 color : #000080; 29 background-color: # F8F8FF;29 background-color: #BBB; 30 30 font-weight : bold; 31 31 } … … 38 38 39 39 /* headers */ 40 h2 { 40 h2 { 41 41 font-family : Verdana, Helvetica, sans-serif; 42 42 font-size : 20pt; … … 60 60 61 61 ul { 62 background-color: #EEEEEE; 62 background-color: #EEEEEE; 63 63 } 64 64 65 65 blockquote { 66 font-style: italic; 66 font-style: italic; 67 67 } 68 68 trunk/docs/terms.html
r195 r252 12 12 13 13 <h3>Introduction</h3> 14 When discussing Derelict in the 14 When discussing Derelict in the 15 15 <a href="http://www.dsource.org/forums/viewforum.php?f=19&sid=d6f86cfb804d7c8727af1f58cd327d2c">project forums</a> 16 or elsewhere, it is important to understand the terminology that often surfaces 16 or elsewhere, it is important to understand the terminology that often surfaces 17 17 in such discussions. This will also be helpful in better understanding the Derelict 18 documentation. Following is a list of terms which could potentially be misunderstood 18 documentation. Following is a list of terms which could potentially be misunderstood 19 19 and their meaning when used in relation to Derelict. 20 20 … … 23 23 loaded at run time and can be used simultaneously by multiple programs. On Windows, 24 24 such libraries are referred to as "Dynamic Link Libraries", or "DLLs", and have 25 the .dll file extension. On Linux, such libraries are referred to as "Shared 26 Object Libraries" or "Shared Objects" and have the file extension of .so. 25 the .dll file extension. On Linux and other Unix-like platforms, such libraries 26 are referred to as "Shared Object Libraries" or "Shared Objects" and have the 27 file extension of .so. This also includes the "Frameworks" found on Mac. 27 28 28 29 <p> … … 35 36 Static libraries are the traditional form of distribution for archived object 36 37 files. On Windows, such libraries are called "Libraries" and have the extension 37 .lib. On Linux, such libraries are called "object archives", "archives", 38 "libraries", and several other terms, all of which have the file extension 39 .a and usually have the prefix "lib" prepended to the file name. 38 .lib. On Linux and other Unix-like platforms, such libraries are called "object 39 archives", "archives", "libraries", and several other terms, all of which have 40 the file extension .a and usually have the prefix "lib" prepended to the file 41 name. 40 42 41 43 <p> … … 46 48 47 49 <h4>Import Libraries, or Static Import Libraries</h4> 48 An import library is a library which automates the process of loading a shared 49 library. On Windows, when you create a DLL the compiler also creates a static50 library by the same name. This library is the DLL's import library. By compiling 51 this library into your executable, the application will be bound to the DLL and 52 the DLL will be loaded at run time by the OS. 50 An import library is a library which automates the process of loading a shared 51 library. On Windows, when you create a DLL most compilers also create a static 52 library by the same name. This library is the DLL's import library. By compiling 53 this library into your executable, the application will be bound to the DLL and 54 the DLL will be loaded at run time by the OS. 53 55 <p> 54 Linux has the same concept, but handles it differently. Rather than link to a separate, 55 static import library, you link to the .so itself. In otherwords, the .so doubles 56 as a shared library and as an import library. Even though you are linking to the 57 .so at compile time, the library itself is still loaded at run time. 56 Linux and other Unix-like platforms handle this differently. Rather than link 57 to a separate, static import library, you link to the .so itself. In otherwords, 58 the .so doubles as a shared library and as an import library. Even though you 59 are linking to the .so at compile time, the library itself is still loaded at 60 run time. 58 61 </p> 59 62 … … 79 82 method of loading a shared library at run time: you do not link with an import 80 83 library and, instead, load the shared library programmatically through 81 operating system API calls. This is Derelict's default mode of operation and82 is thereason why you must call methods like Derelict*.load().84 operating system API calls. This is Derelict's mode of operation and is the 85 reason why you must call methods like Derelict*.load(). 83 86 </body> 84 87 </html>
