Developer’s Image Library manual
Copyright
c
2008,2009 Denton Woods, Matˇej T´yˇc
Permission is granted to copy, distribute and/or modify this document under the terms of
the GNU Free Documentation License, Version 1.3 or any later version published by the Free
Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled “GNU Free Documentation
License”.
i
Table of Contents
IL manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1 General introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Library Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Library setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1 Microsoft Visual C++ setup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.1 Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.2 MSVC++ Bug Workaround . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.3 Multithreading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 DJGPP Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 General GCC-based (Linux, Cygwin, Max OS X, etc.) Setup. . . . 5
2.4 Test and examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4.1 Test suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4.2 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 Basic usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1 Initializing DevIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1.1 IL Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1.2 ILU Initialization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1.3 ILUT Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 Image Name Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.1 Generating Image Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.2 Binding Image Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.3 Deleting Image Names. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.3 File handling – loading images. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.3.1 Loading from Files – ilLoadImage. . . . . . . . . . . . . . . . . . . . . . . . . 9
3.3.2 Loading from Files – ilLoad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.3.3 Loading from File Streams – ilLoadF . . . . . . . . . . . . . . . . . . . . 10
3.3.4 Loading from Memory Lumps – ilLoadL . . . . . . . . . . . . . . . . . 10
3.3.5 Saving to Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4 Image management. . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.1 Defining Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2 Getting image data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2.1 The Quick Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2.2 The Flexible Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.3 Setting image Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.3.1 The Quick Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.3.2 The Flexible Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.4 Copying Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
ii
4.4.1 Direct Copying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.4.2 Blitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.4.3 Overlaying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.4.4 Blit/Overlay Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5 Image Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.1 Origin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.2 Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.3 Registration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6 Error handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.1 Error Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.2 Error Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.2.1 Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.2.2 Selecting a Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
7 Image manipulation . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
7.1 Alienifying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
7.2 Blurring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
7.3 Contrast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.4 Equalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.5 Gamma Correction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
7.6 Negativity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
7.7 Noise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
7.8 Pixelization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.9 Sharpening . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
8 Resizing Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
8.1 Basic Scaling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
8.2 Advanced Scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
8.3 Filter Comparisons. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
9 Sub-Images. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
9.1 Mipmaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
9.1.1 Mipmap Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
9.1.2 Mipmap Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
9.2 Animations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
9.2.1 Animation Chain Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
9.2.2 Animation Chain Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
9.3 Layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
9.4 Sub-Image Mixing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
iii
10 DXTC/S3TC Notes . . . . . . . . . . . . . . . . . . . . . . . . . . 29
10.1 DDS Loading/Saving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
10.1.1 Keeping DXTC Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
10.1.2 Controlling Saving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
10.1.3 Compression Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
10.2 Retrieving DXTC Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
10.3 Compressing DXTC Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
10.4 OpenGL/Direct3D DXTC Support . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
10.4.1 OpenGL S3TC Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
10.4.2 Direct3D DXTC Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Appendix A Common DevIL #defines . . . . . . . . . 31
A.1 format-related #defines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
A.2 type-related #defines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
A.3 Language-related #defines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Appendix B Common DevIL Error Codes . . . . . 32
Appendix C Supported File Formats . . . . . . . . . . 33
Appendix D Sample DevIL program . . . . . . . . . . . 35
Functions index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
评论2