Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 43 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
43
Dung lượng
705,84 KB
Nội dung
Using the GIF Construction Set There are many different ways to add animated effects to applications. Some developers are under the impression that they must use DirectX or a technology like it to create good animation. The fact is that most business applications don’t require animation and those that do can often present an acceptable appearance by using an animated GIF file. DirectX is a powerful technology that you can use to create everything from a simple business presentation to an advanced game; however, all of that power comes at a price—a fact that the example in this chapter demonstrated. All that an animated GIF does is pack several pictures into one file. A browser plays these pictures back one at a time, which helps you to create the illusion of continuous animation. Because you can place a browser viewing area within standard .NET desktop applications, animation is freely available to anyone who wants it. You can also use special effects to create a slide show using a GIF by changing the interval between pictures. Note This section will show you how to create a GIF using the GIF Construction Set from Alchemy Mind Works. You can download it from several places. The best place is straight from the vendor at http://www.mindworkshop.com/alchemy/gifcon.html. This application also appears on the CD in the \GIF Construction Set folder. We’ll use the GIF Construction Set in this example for two reasons. First, since it’s shareware, all of you can download it from the Internet and follow along with the examples. Second, it’s a great program, and most people find that it works just fine for creating animated GIFs. At most, you’ll notice the lack of an actual drawing program with this program, but Windows already supplies that in the form of Paintbrush or MS Paint. You’ll also need a graphics conversion utility if your drawing program doesn’t support the GIF file format directly (neither Paintbrush nor MS Paint does). Both Graphics Workshop from Alchemy Mind Works (located in the \Graphics Workshop folder of the CD) and Paint Shop Pro by Jasc Software are excellent graphics conversion programs. Both vendors provide shareware versions of their product. You can find Alchemy Mind Works at the Internet site provided in the previous note. The JASC product appears at http://www.jasc.com/. Start the GIF Construction Set program. Use the File Ø Open command to view the contents of the \Chapter 14\Animated Graphic folder of the CD. Notice that the directory has several GIF files in it already. Time0.GIF is a base file—a blank used to create the animation effect. You can save a substantial amount of time by creating such a blank whenever you create an animation. In fact, cartoonists use this very technique. They draw the common elements of an animation once on separate sheets and then combine them to create the animation. Only unique items are drawn one at a time. Time1.GIF through Time12.GIF are the actual animation files—think of each one as an animation cel. Let’s create an animated GIF using these “cel” files. The following procedure isn’t meant to lock you into a particular regimen, but it does show one way to use the GIF Construction Set to create one: Use the File Ø New command to create a new GIF. You’ll see a blank GIF dialog. GIF Construction Set always assumes a standard background color of black. We’ll need to change that value. Note Users familiar with older versions of the GIF Construction Set will be happy to hear that it automatically adjusts the size of the image now to match the figures in the GIF. Developers adjusted this value manually in the past with less than useable results in some cases. 1. Double−click the Header entry. You’ll see the Edit Header dialog shown Figure 14.9. It helps you to change characteristics associated with the GIF—for example, the background color. Notice the Loop 2. Using the GIF Construction Set 333 option on this dialog. If you keep this value set to 0, the GIF will continue looping indefinitely. This is a great idea, in most cases, but you might want to set this value to something else to save system resources when needed. Figure 14.9: Use the Edit Header dialog box to change the overall characteristics of the GIF. Set any header options. The example sets the number of loops to 10 for testing purposes, but you can set this value as you see fit. The example also sets the background color to white (color number 215). Click OK to make the change permanent. 3. Click the + button and select Image from the drop−down list (or use the Block Ø Merge command). This command helps you to add an image to the GIF. You’ll see a standard File Ø Open dialog. 4. Double−click the first file you want to use in the animation. In this case, you’d double−click Time1.GIF. You’ll see the Palette dialog shown in Figure 14.10. The palette for this graphic doesn’t match the standard palette used by GIF Construction Set. Note that older versions of the GIF Construction set provided more options. Figure 14.10: Use the Palette dialog to modify the method used to handle color in imported graphics. 5. Select the Dither This Image to the Global Palette setting for compatibility reasons. Click OK to complete the process. GIF Construction Set will insert a new graphic into the GIF. 6. Click the + button and select Image from the drop−down list. You’ll see the same File Ø Open dialog as before. 7. Select the next image in the series and click OK. Click OK again if GIF Construction Set asks you about the palette setting. GIF Construction Set will automatically insert the image in the next position of the animation sequence. 8. Repeat steps 7 and 8 for the remaining GIFs in this animation (Time2.GIF, Time3.GIF, and so on). Now we have to insert some controls to make this image work properly. 9. Double−click Block 3 (the second image). You’ll see an Edit Image dialog like the one shown in Figure 14.11. Notice that this dialog tells you about the image. You can also use this dialog to add control blocks between image elements. Control blocks allow you to modify the behavior of the animated GIF. For example, you can use a control block to set the time between pictures. Many browsers expect a control block between every image in your animated GIF, so you must add a control block starting with the second image. 10. Using the GIF Construction Set 334 Figure 14.11: Use the Edit Image dialog box to change the characteristics of an individual cel. Check the Control Block option. Set the Delay field to 1. Click OK to add the control block. You won’t see any difference in the main window. 11. Click the next Image entry.12. Repeat steps 11 and 12 for each of the images. You’ll end up with a series of images, as shown in Figure 14.12. (Make sure you add a Control object to the last image, since the animated GIF will automatically loop back to the first image.) Figure 14.12: The end result is a series of images with control settings. 13. To view the completed animation, click the View button. Press Esc to exit the viewing area.14. The only thing left to do is save your animated GIF file. Use the File Ø Save As command to do that. You could use any filename, but for the purposes of this example, save the file as AnimatedTime.GIF. 15. Now you have an animated image that you could display using a number of techniques, including using a browser window. Interestingly enough, the animated GIF is simply a series of images—nothing more. So you can also use it as an image list within a DirectX application by clipping offsets within the image. The number of ways to use the stacked image technique found in animated GIFs are nearly unlimited. Tip You can find a demonstration of how to use an animated GIF within a desktop application in the \Extras\AniDisplay folder of the CD. The example folder contains complete source code and documentation, plus a test file you can use with the example. You can also use this example to test other animated GIFs downloaded from sources such as the Internet. Using the GIF Construction Set 335 Where Do You Go from Here? This chapter has shown you the basics of using DirectX functions and interfaces. You learned about both standard function calls and callback functions. In general, you’ll find that this chapter provides all of the basics you need to construct any DirectX application. In fact, we’ve already looked at what you’ll need to do to put a 2D application together. Although you have all of the basics you need to know, this chapter hasn’t even begun to explore the 2D features of DirectX. This is a good time to explore the 2D capabilities more and spend more time working with the data structures we discussed in the previous chapter. DirectX is a technology best learned one step at a time. For example, you should learn more about the math required for 2D drawing—something we haven’t discussed much in this chapter. At this point, you know how to work with a basic 2D application. Now you need to know how to put a 3D application together and how to apply more advanced programming techniques. The use of 3D drawing is increasing, so knowing how to work with the 3D functionality that DirectX provides is important. Chapter 15 will show you the basics of working with 3D applications. We won’t do anything fancy, but you’ll learn enough to perform the required conversions for the managed environment. Where Do You Go from Here? 336 Chapter 15: Creating Applications with DirectX 8.1 Overview The past two chapters have helped you understand the data structures, functions, and other elements that make up DirectX in general and DirectX 7 specifically. This chapter moves from DirectX 7 to DirectX 8.1. Both versions of this technology are still in common use, so it’s important to know about the feature sets of both products. The first section of the chapter will provide an overview of these differences so you can write applications that use the full functionality that each version can provide. In general, most developers currently write 2D drawing applications to the DirectX 7 standard but use DirectX 8.1 for 3D drawing. I say in general because you’ll find exceptions to the rule. This chapter includes some 3D drawing examples so that you can see how this technology works with DirectX 8.1. The final piece of the puzzle for this chapter is to look at some of the other tools that the DirectX SDK provides. It’s important to know what tools you have at your disposal when you install the SDK because creating a 3D drawing is difficult (perhaps impossible) without them. This chapter will discuss the DMO Test utility, the Force Feedback Editor, and the DirectX Texture Tool. The DirectX Texture Tool is actually the most important of the three because it helps you create realistic drawings with less work than drawing every surface individually. Note As with the other DirectX chapters in this book, the goal of this chapter is to help you understand DirectX use within the managed environment. The examples aren’t meant to make you a DirectX programming wizard, nor are they meant to show you every feature of DirectX—that would require another book. The examples will help you understand how DirectX fits within the managed environment and alerts you to any oddities that you might encounter making the various interfaces work. Our point of concentration in this chapter is what makes DirectX 8.1 different from DirectX 7, which means we’ll also discuss differences in working with the interfaces in the managed environment. An Overview of DirectX 7 and DirectX 8.1 Differences DirectX has been an example of continuous evolution. There are a number of reasons that Microsoft created DirectX 8.1. Obviously, the hardware capabilities addressed by DirectX 7 are now common and ordinary—DirectX 8.1 addresses the capabilities of the new hardware on the market. Of course, Microsoft has to add the usual number of new capabilities to the product. Finally, there are the usual bug and performance fixes to consider, as well as features that make the product easier to use. The following sections discuss the differences between DirectX 7 and DirectX 8.1 in greater detail. The features aren’t necessarily discussed in light of the “gee whiz” factor they provide or in the order that Microsoft marketing thought important. The focus of these sections is features that make life easier for the developer and improve performance. I’ve paid particular attention to features that might cause developers to have problems in the managed environment. Consolidated Objects One of the issues that Microsoft addressed in DirectX 8.1 was “object creep.” In DirectX 7, it seems that you have an object for everything and that each of those objects requires a separate creation step. If you want to 337 create a DirectDraw and a Direct3D object in DirectX 7, you’ll likely have to perform two separate steps and create two separate objects. The problem with this approach is that it’s hard getting the two objects to work together, so you end up writing some odd code to do it. DirectX 8.1 consolidates DirectDraw and Direct3D into a single DirectX Graphics module with the name of Direct3D. Now you can create 2D and 3D graphics on the same surface without the problems introduced by separate objects. Consolidation is good from the usability viewpoint. Using one object to create both 2D and 3D elements makes life easier for the developer because now you don’t have as many objects to worry about. However, consolidation can also become problematic in the managed environment. It’s important to remember two essential points about DirectX. First, it was and still is optimized for use by Visual C++ developers (despite the kludges added to support Visual Basic). Second, Visual C++ offers flexibility that the managed environment can’t easily provide. In this case, consolidation could mean subtle errors in your application. These objects require data in data structures. Set a data structure up incorrectly and you might find that the application doesn’t work as anticipated. The data might be correct for a 2D object but not for the 3D object that you’re trying to create. Tip Visual Basic developers who want and need more than the basic DirectX SDK can provide will want to look at the Phantom Reality site at http://www.phantomreality.com/. This vendor produces an assortment of 2D and 3D multimedia tools. Sometimes the objects are still separate, but Microsoft has introduced an additional level of cooperation. That’s the case with DirectMusic and DirectSound. A DirectMusic object can now load sounds found in WAV files. Even though the DirectSound object still exists and most developers will use it when they play sounds alone, the DirectMusic object is the focal point for DirectX 8. You can place both sounds and music using a single DirectMusic object. Of course, this introduces another confusion factor for managed environment developers—it’s possible to create subtle data errors that DirectX won’t catch because of the additional flexibility it provides. Updated Objects and Features One of the best new features for developers who work in the unmanaged environment is the addition of a debug build. This debug build helps you learn what’s going on inside DirectX. It works the same as the debug builds you create for your application. The only problem is that the DirectX libraries are unmanaged code applications, which means that Visual Studio .NET might stumble a bit when viewing them. You’ll find that you can generally find what you need, but not always. Sometimes the debugger just won’t work with the unmanaged code. You can switch between debug and released versions of DLLs using the DirectX Control Panel Application described later in this chapter. You’ll find that Microsoft spent a lot more time working on the Direct3D library than the DirectDraw library in DirectX 8.1 for good reason. Most, if not all, game programming now uses 3D drawing techniques. CAD and other engineering and scientific disciplines also rely on 3D drawing techniques. About the only area where 2D still reigns supreme is business graphics and only because many business graphics still have to appear in print. Eventually, business graphics will also use 3D drawing techniques. The following list provides a quick overview of some of the 3D drawing additions for DirectX 8: Special Effects The special effects now include strings and you can add comments. You can still use special effects that are limited by the FOURCC designations, but Microsoft no longer requires that you use them. This means you have access to more types of special effect files. The problem for the managed environment developer, however, is ensuring that those files will actually work in the managed environment with the target hardware. Generally, you’ll still find that using files with the FOURCC designations is the safe bet. Updated Objects and Features 338 Pixel Shaders DirectX 8.1 comes with better support for pixel shaders. The developer has access to additional instructions, modifiers, and registers. This particular feature won’t present any more problems in the managed environment than it does for developers in the unmanaged environment. Texture Library The biggest change for the texture library is support for dynamic textures. This feature enables you to create a basic texture that morphs to create what appears as multiple textures to the end user. This version also uses a higher−quality encoding algorithm and allows you to obtain information about the texture without loading it into memory first. A new constant, CONST_D3DPOOL.D3DPOOL_SCRATCH, enables you to load textures that the physical devices can’t support. The library provides methods to transform the texture into a form that the physical devices can support. Math Library DirectX is math intensive. The developer must compute the exact location and form of each object during an animation sequence. Consequently, any help that the math library can provide will only speed the coding of an application. The library adds support for most important functions for 3D−Now!, Streaming SIMD Extensions (SSE), and SSE2. It also adds support for 16−byte aligned matrices. Note If you haven’t worked long with DirectX, you might not know about 3D−Now! and SSE/SSE2. 3D−Now! is AMD’s built−in processor support for graphics. It purportedly provides better graphics execution times than Intel’s Multimedia Extensions (MMX) technology. Read more about this technology at http://www.amd.com/us−en/Processors/_TechnicalResources/0,,30_182_857_992,00.html. Intel, not to be outdone by AMD, has introduced SSE and SEE2 technologies that reduce the overall number of instructions to perform an application task. SSE2 provides 144 more instructions than the SSE variant. You can read more about this product at http://www.intel.com/design/_Pentium4/prodbref/index.htm. Drawing Features DirectX 8 improves the 3D drawing capabilities of DirectX in general. The new features include multisampling rendering support, point sprites, 3D volumetric textures, and higher order primitives. I won’t cover these updates in any depth in the book, but it’s important to know they exist. None of these new features will cause problems for managed environment developers except that performance might not be what you expect. DirectInput features a number of new input device changes. A game−specific feature is support for additional pedal data. Even though some developers might associate the joystick with games, others use the joystick with other application types, especially those in the scientific arena. The updates for joystick support include better recognition of joystick slider data. Precision measurements make both scientific and game applications work better. Finally, DirectInput has added support for action mapping. This feature makes it possible to map a physical input device element to an action in the application. For example, clicking the button on a joystick could fire a machine gun or retrieve a sample using the robotic arm of a remotely operated vehicle (ROV). Some developers felt that DirectPlay support in DirectX 7 was a joke, and a very bad one at that. DirectPlay has improved in DirectX 8.1 in so many ways that it might not be possible to discuss them all here. The feature that will definitely matter most includes better security. Developers will find that DirectPlay now provides good support for firewalls and also network address translation (NAT). Even though security is important, most gamers are looking for performance. Microsoft has completely rewritten the objects for DirectPlay so that it performs better. You’ll also find that DirectPlay now uses easy−to−understand URLs instead of GUIDs for destination information. Finally, DirectPlay now includes support for voice transmission so you can talk to other people while using a network connection to transmit other forms of DirectX data. Updated Objects and Features 339 An Overview of the Tools One of the newest tools provided with DirectX 8 is the MeshView Tool. This tool loads, displays, manipulates, and stores meshes used to display 3D data on screen. You can view the mesh information in wireframe, edge, crease, strip, adjacency, or normal form (or any combination thereof). The utility will provide a skin for the mesh, and you can choose the form of that skin along with the technique used for skinning. The MeshView Tool includes a number of shapes, including cylinder, sphere, torus, square, and teapot. We’ll discuss this tool in greater detail in the section titled “Using the MeshView Tool” in Chapter 16. Another tool that’s been around, but is greatly improved for DirectX 8, is the DirectX Control Panel Application. Unlike the DirectX Diagnostic Tool, this utility is designed specifically for developer use. It enables a developer to modify the way DirectX reacts to an application during critical stages of debugging. We’ll examine the DirectX Control Panel Application in more detail later in this chapter. Previous versions of DirectX left the DirectPlay developer out in the cold—there weren’t any tools for testing a connection. Consequently, developers had to rely on trial and error to get connections correct and they often failed. The DirectPlay Network Simulator makes it possible to test your DirectPlay applications in greater depth before you actually begin testing them on an actual network. This means that you’ll spend less time debugging and also end up with a better application in the long run. We’ll discuss this tool in greater detail in the section titled “Using the DirectPlay Network Simulator” in Chapter 16. Using the DirectX Control Panel Application You’ll find the DirectX Control Panel Application in the Control Panel after installing the DirectX SDK. This applet has the usual DirectX icon. What it does for developers is nothing less than amazing. Once you begin using this tool, you’ll wonder why Microsoft didn’t include it in previous versions of the product. Note For whatever reason, the DirectX Control Panel Application doesn’t seem to install properly into the Windows XP System32 folder. If this problem occurs on your system, simply copy the DirectX.CPL file from the \DXSDK\bin\DXUtils folder to the \WINDOWS\system32 folder of your system. Restart your machine and the DirectX Control Panel Application should appear in the Control Panel. If all else fails, you can double−click the DirectX.CPL file from within Windows Explorer to start it. When you initially open the DirectX Control Panel Application, you’ll see the DirectX tab of the DirectX Properties dialog box. This tab tells you which version of DirectX your system is running and also provides access to a button found on every other tag—DxDiag. The DxDiag button will open the DirectX Diagnostic Tool that we discussed in section titled “Using the DXDIAG Utility” in Chapter 13. The Direct3D tab contains the first developer−related information for this utility. Figure 15.1 shows the features of this tab. As you can see, it contains a lot of developer−oriented controls. The first control that you should become familiar with is the Debug Output Level slider. Interestingly enough, you can tell DirectX to tell you every woe it has or to shut up and process information. Most developers will want to turn off the output unless they’re actually creating an application because it can become quite annoying. This slider appears on every tab so you can control the debug output of each DirectX feature individually. An Overview of the Tools 340 Figure 15.1: The Direct3D tab controls operation of 3D drawing on your system. Note Don’t confuse the Direct3D tab with the DirectDraw tab. Use the Direct3D tab to control 3D drawing data and the DirectDraw tab to control 2D drawing data. In some cases, you’ll want to change the settings on both tabs to ensure that you have the system set up correctly for the current task. The next point of interest is the Debug/Retail settings. Every tab also has this feature. It enables you to switch between the debug and retail versions of DirectX so that you can test your application in both environments. Previous versions of DirectX forced the developer to use either the debug or the retail version of the product and didn’t offer any means of tuning the debug output. As you can see, DirectX 8.1 is a vast improvement from the developer’s perspective. Note that this feature only affects DirectX 8.0 and DirectX 8.1 libraries—it won’t affect older libraries installed on your system. The middle portion on the left side of the dialog box contains three check boxes that enable you to control performance. You’ll use the Allow Hardware Acceleration feature most often. Clearing this option will force DirectX to use software emulation, even if hardware acceleration is available, so that you can measure worst−case performance for a system setup. These options might appear grayed out if your system doesn’t provide support for the required feature. The two debugging check boxes on the right side of the dialog box enable you to control how DirectX breaks within the debugger. Sometimes it’s useful to see how your application affects DirectX so that you can change the way your application makes function calls and performs other tasks. This is one of the most useful features for developers who are trying to get DirectX to work in the managed environment because it can also help you tune your function, structure, and interface declarations. The final area of interest on the Direct3D tab is the Drivers list box. This area contains a list of the drivers that affect Direct3D. However, unlike most driver lists, this one is formatted for developer use. You can use it to obtain information such as the GUID for the driver—a handy feature we could have used for the applications in previous chapters. The DirectDraw tab shown in Figure 15.2 comes next. Remember that Direct3D and DirectDraw are combined. You won’t find the usual Debug Output slider on this tab. However, some features are the same. For example, there’s a Use Hardware Acceleration check box that you can use to force the driver to use software emulation. This option is separate from the Direct3D option. An Overview of the Tools 341 Figure 15.2: The DirectDraw tab augments the information found in the Direct3D tab. Some of the options are answers to developer requests of the past. For example, you couldn’t use the Print Screen key to output screen data in the past. DirectX 8 provides this option so developers can grab screen shots with little trouble with the understanding that the Print Screen key can affect application execution. Click Advanced Settings and you’ll see a DirectDraw Advanced Settings dialog box that allows you to modify the normal operation of DirectX. For example, you can disable MMX or Accelerated Graphics Port (AGP) support to emulate certain system setups. You can also simulate a system lock failure and fine−tune emulation support. The last three buttons display standard dialog boxes. For example, click Display Properties and you’ll see the standard Display Properties dialog box. The last two options on this dialog tab display the modes that the display adapter supports and allow you to change the default refresh rate. The DirectInput tab shown in Figure 15.3 contains the usual slider and Debug/Retail option. As you can see, this tab contains check boxes that determine which DirectInput features generate debug information. This is an important option because you might be interested in only one DirectInput area in your application. Getting debug information from all of the devices would prove confusing to say the least. In addition, an application might not even use the mouse or the joystick. Some developers might want to eliminate the keyboard if they’re using it for debugging purposes. In short, these four options help you control the debugging environment with greater accuracy. An Overview of the Tools 342 [...]... over time The envelope varies the manner in which the effect changes The ramp begins as a straight line, but you can modify the effect so it uses a logarithmic, sine, or other envelope The Axes tab determines which axes of the input device are affected by the ramp The Timing tab tells how long the effect lasts and determines if there’s a delay in starting it Finally, the General tab contains a field... immersed in their games, some vendors thought it would be a good idea to add some sense of feel to the input device After all, a pilot actually feels the effect of the air rushing against the skin of the plane and the engine pulsing with power That’s the reasoning behind force feedback—it provides a joystick with instructions that enable it to simulate the feel of the yoke on a real plane The user... we already have in Chapter 15) In addition, we’ll discuss some of the special features of this product and how you’d combine them to gain access to some types of media functionality Of course, in the interim, we’ll discuss the main purpose of this tool—a means for testing various object combinations before you place them in your code You’ll find the sample files used in this section in the \Chapter 16\GraphEdit... string, it places the associated instance GUID into StrGuid using the GetGuidInstance() method The GUID you use is important because it determines which device DirectInput will create for you The CreateDevice() method creates the DirectInputDevice8 object You must set the cooperative level to one of the recognized combinations before doing anything else with the object The best combination for determining... the right series of objects connected together 7 Delete the Default Sound Device object At this point, clicking Play will result in hearing nothing at all There’s no output We need an output, but not the one originally provided The DMO utility requires the output of the DMO Data Dump filter 8 Insert the DMO Data Dump filter using steps 2 and 3 You’ll find the DMO Data Dump filter in the DirectShow Filters... see if the problem is found in the debugging messages that the module outputs Breaking on assert can cause odd problems in the managed environment In fact, you might find that it leaves the system in an unstable state that requires an eventual reboot 343 Using the DMO Test Utility Figure 15.4: The DirectPlay tab lacks some of the features found on the other tabs The DirectSound tab also lacks the Debug/Retail... also contains some of the initialization code for this example You’ll find the source code for this example in the \Chapter 15\C#\DirectInput and \Chapter 15\VB\DirectInput folders of the CD Listing 15.2: Enumerating the DirectInput Devices private DirectX8 DX8; private DirectInput8 DI8; // DirectX 8 object // DirectInput 8 object public frmMain() { // Required for Windows Form Designer support InitializeComponent();... calling a Win32 API function, so you’ll need to use PInvoke and COM interoperability as a minimum to get around the problem It turns out that ROT functionality actually appears in the Win32 API as the IRunningObjectTable interface You need to use the Register() method to add your application to the list To verify that your application actually made it to the ROT table, you need to check for it using the. .. shown in Figure 16.6 364 Performance Tuning Figure 16.6: Device filters view the device from the data stream perspective As you can see, the settings affect the filter, not the device itself The device settings are still under user control Figure 16.6 shows the settings in their default state, which means that the filter doesn’t change these settings from the user configuration The other tabs in this... shown in Figure 16.2 You might not think that a simple file filter could contain much of interest for performance tuning, but it does Figure 16.7 shows that this filter contains a buffer setting Using a higher setting ensures that playback runs smoothly, but at the cost of memory You need to consider the cost of the memory against the performance benefit In some cases, the tuning process might involve . a test on the WavesReverb DMO. You’ll find the test files for this example in the Chapter 15DMOTest folder of the CD (including the files that we created in the previous section). The example. immersed in their games, some vendors thought it would be a good idea to add some sense of feel to the input device. After all, a pilot actually feels the effect of the air rushing against the skin of. how long the effect lasts and determines if there’s a delay in starting it. Finally, the General tab contains a field for changing the name of the effect on screen. As you can see, there are