home *** CD-ROM | disk | FTP | other *** search
- Microsoft(R) DirectX(R) 7 Software Development Kit
-
- __________________________________________________________________
-
-
- Contents:
-
- - Installation
- - Updated SDK
- - CD Layout
- - What's New
- - Known Issues
- - Compiler Support
-
- __________________________________________________________________
-
-
-
- INSTALLATION:
-
- You should UNINSTALL PREVIOUS RELEASES of the DirectX SDK prior to
- installing DirectX 7 (see UnInstall). The directory structure and file
- names have changed significantly.
-
- To install the DirectX 7 SDK and/or Runtime, select "Install DirectX
- Foundation 7 SDK" from the main menu or execute setup.exe in the
- \DXF directory of the CD. If you are installing over the top of an
- existing MSDN Platform SDK, read the "UPDATED SDK" section of this readme.
-
-
- UnInstall:
-
- To uninstall, use "Add/Remove Programs" from the Control Panel and
- uninstall this or any previous versions of the DirectX Foundation SDK.
-
- __________________________________________________________________
-
-
- UPDATED SDK
-
- New to this DirectX SDK is the addition of support for Visual Basic
- developers. You can chose to install "C" sample code, Visual Basic
- sample code or both. A "Complete" installation will install both.
- Use the "Custom" installation to minimize installation time and
- required disk space.
-
- As with the previous DX6.1 release, we've tried to integrate better
- with the MSDN Platform SDK. If you have a previous installation of
- the Platform SDK, installation of the DX7 Foundation SDK will detect
- this and offer to install to that directory. Otherwise, you can
- choose to install the SDK wherever you'd like.
-
- __________________________________________________________________
-
-
- CD LAYOUT
-
- The following is a brief description of the directories found in the \DXF
- directory of this CD. Depending on options specified during installation,
- some of these directories can be installed on your hard drive.
-
- \Bin
- High level DirectX applications & tools.
- All can be accessed from the Start menu if "Utilities" are installed.
-
- \Debug
- Debug versions of the DirectX 7 DLLs.
-
- \Doc
- Contains documentation for the DirectX APIs. The latest documentation
- for the DX7 is best viewed with HTMLHelp. The HTMLHelp viewer requires
- installation Internet Explorer 5.0 (IE5). This is only required on Win95
- installations. Win98 and Win2K will have the required IE components.
- To install IE5 visit the web page at http://www.microsoft.com/ie.
- If you chose not to install IE, you can still view the DX7 documentation
- by accessing the files in DXF\docs\directx7\word.
-
- \Essentls
- DMusProd (Direct Music Producer)
- - Direct Music Producer is the authoring tool for Direct Music. It
- allows composers to use the interactive and variable resources of
- DirectMusic along with the consistent sound performance of DLS. The
- Music Producer setup program and all files are located here.
-
- \Extras
- DDSPlugin
- - This contains a Photoshop plugin to support import and export of
- DXTn-compressed textures using the DDS file format.
- DMusic
- - This directory contains a single file, loader.zip. It contains a
- piece of example code that shows how an application can write its
- own DirectMusic loader. It is included here for educational purposes
- only, and should be used as a reference only.
- DSound
- - This directory contains a single file, mulchaud.doc. It describes
- the new waveformat structures for multi-channel and high bit-depth
- audio data files. The previous waveformat structure was limited to
- 8 and 16-bit integer formats. Further, when the number of channels
- was greater than two, the meaning of the additional channels was
- un-specified. Using the formats in this specification, an application
- may create or use wave files with more than two channels and with
- formats not restricted to 8 or 16-bit integer. Where the number of
- channels is greater than two, the proper outputs and speaker
- designations can be specified.
- DX Symbols
- - We have added symbol files to assist developers with debugging.
- You will find both retail and debug for Win9x and Win2K (.sym & .pdb).
- VTune
- - VTune(TM) Performance Analyzer, version 4.0, from Intel(R). A trial
- version of the VTune Performance Analyser is included in this directory.
- The VTune Performance Analyzer is designed to provide an integrated
- tuning environment for Microsoft Windows 95, Windows 98, and Windows NT
- systems. The VTune Performance Analyzer collects, analyzes, and
- provides Intel Architecture-specific software performance data from the
- system-wide view down to a specific module, function, or instruction.
- The VTune coach provides recommendations on how code can be modified to
- increase performance on Intel Architecture. Additional information on
- this software as well as other Intel software performance products is
- available at http://developer.intel.com/vtune.
- Note: Microsoft is not responsible for the testing, stability or
- accuracy of this product.
- Win98 PIII DBG
- - The file contained in this directory (VMCPD.VXD) is necessary when
- debugging D3D applications on Win98 Pentium III machines with DX6.1
- or DX7. Note: This is an issue on Win98 only (not Win98 SE).
- See the readme.txt in that directory for more details.
-
- \Include
- contains include files for DirectDraw, Direct3D, DirectSound,
- DirectInput, DirectPlay and DirectMusic
-
- \Lib
- contains library files for DirectDraw, Direct3D, DirectSound,
- DirectInput and DirectPlay.
- *.LIB : COFF libraries (used by Microsoft Visual C++ 2.0 or higher).
- There is also a sub-directory that contains Borland 11.0 versions
- of the libraries.
-
- \License
- Text versions of the DirectX SDK and End User License Agreements and
- the Redistributable License Agreement.
-
- \Redist
- Redistributable versions of the DirectX 7 DLLs.
-
- \Samples
- Contains all sample code and sample binaries. See readme.txt file
- in each sample's directory for more details. Most samples can be
- accessed from the Start menu.
-
- __________________________________________________________________
-
-
- WHAT'S NEW:
-
- DirectX for Visual Basic
- ========================
- DirectX has traditionally been the domain of C and C++ developers developing
- game content. By providing language support for Visual Basic, the DirectX API
- is opened up to a new kind of developer writing similar or very different kinds
- of applications. The goal of the project is simply to provide the same access
- to high performance multimedia functionality that's available to C developers.
- To that end, we've also extended the SDK with Visual Basic sample code and
- helper controls to make DirectX accessible and easier to understand for the
- Visual Basic programmer.
-
- At the core of DirectX for Visual Basic is a DLL that marshals objects between
- the DirectX run time and Visual Basic. The DLL exposes DirectX functionality
- using types that are friendly to Visual Basic and insulates the Visual Basic
- language developer from some of DirectX's object semantics. To provide the most
- flexibility and speed, the object model mirrors that of C.
-
- Reference the DirectX documentation, which is now multilingual (C and VB), and
- the Visual Basic sample code in the SDK for additional information.
-
-
- Direct3DIM
- ==========
-
- - Direct3D for DirectX 7.0 introduces a new set of interfaces which offer a
- simplified programming model and higher performance, as well as a number of
- new features. The programming model is simplified though a consolidation of
- Direct3D interfaces. Material, viewport, and light information is now part
- of the device state instead of being separate objects. The need for separate
- texture objects has been eliminated, and textures are now simply DirectDraw
- surfaces.
-
- Features enabled through these new interfaces include:
- - hardware transform and lighting
- - vertex blending
- - arbitrary clip planes
- - cube environment maps
- - texture transforms and projected textures
- - enhanced texture management
- - state blocks
-
-
- D3DX
- ====
- D3DX is a helper API, based on COM, that sits on top of the Direct3D &
- DirectDraw of DirectX 7.0. It is designed as a set of header files and a
- library (d3dx.lib for retail and d3dxd.lib for debug) that applications can
- link to statically. The Direct3DX utility library provides helper functions to
- simplfy the common tasks encountered by 3-D graphics developers.
-
- The utility library is designed for developers who want a quick and efficient
- way to use Direct3D Immediate Mode. By eliminating some of the more tedious
- tasks, the utility library provides a tool-kit of short-cuts, allowing
- developers to immediately focus on the core application or game development.
-
- The Direct3DX utility library provides helper functionality for enumerating
- device configurations, setting up a device, running full-screen or windowed
- mode uniformly, running resizing operations, calculating vector and matrix
- operations, and simplifying image file loading and texture creation.
- In addition, it provides functions for drawing simple shapes, sprites, and
- cube maps. However, Direct3DX does not provide a scene hierarchy or support
- X Files.
-
- Note that the utility library requires that at least DirectX 7.0 is installed
- on your system. The Direct3DX utility library supports multiple monitor
- configurations. Note that none of the Direct3DX objects are multithread-safe.
- A multithreaded application must add its own locks and synchronization
- primitives to access Direct3DX objects.
-
-
- DirectDraw
- ==========
-
- - For DX7 there is a new DirectDraw Interface. This is IDirectDraw7.
- Note that the relationship between older DirectDraw interfaces and Direct3D
- interfaces is as follows:
-
- Changes have been made to segregate DirectX7 Direct3D interfaces from older
- version interfaces. There are now two classes of DirectDraw objects: those
- created by DirectDrawCreateEx, which are DX7 objects, and those created by
- DirectDrawCreate, which are older pre-DX7 objects. While both DX7 and
- pre-DX7 DirectDraw objects support all (up to and including IDirectDraw*7)
- interfaces, only the DX7 DirectDraw object supports the DX7 D3D interface
- IDirect3D7. Additionally, Direct3D7 interfaces methods deal with IDirectDraw*7
- interfaces exclusively.
-
- The practical result is that to use legacy Direct3D interfaces, applications
- should not use version 7 DirectDraw interfaces, and to use DirectX 7 Direct3D
- interfaces, applications should use DirectX 7 DirectDraw interfaces obtained
- from DirectDrawCreateEx.
-
- As a concrete example, an application would use DirectDrawCreateEx to create
- a DirectX 7 DirectDraw object, and receives an IDirectDraw7 pointer from that
- function. The application then uses QueryInterface to retrieve an IDirect3D7
- interface, and IDirectDraw7::CreateSurface to create surfaces and receive
- IDirectDrawSurface7 interfaces. Since the DirectDraw objects support all
- interface levels, it is possible to QueryInterface for IDirectDrawSurface4
- from the IDirectDrawSurface7 interface in order, for example, to use this
- surface with DirectShow. Since the DirectX7 DirectDraw object does not support
- IDirect3D4 and below interfaces, it is not possible to use QueryInterface to
- retrieve an IDirect3D4 interface, even from older DirectDraw interfaces
- obtained (via QueryInterface or any other method) from this DirectDraw object.
-
- Additionally, in previous interfaces textures were created through the
- IDirect3DTexture interface. With DX7 this interface goes away. Instead the
- GetTexture, SetTexture and Load methods on IDirect3DDevice7 take
- IDirectDrawSurface7 pointers. The IdirectDrawSurface7 interface includes
- the following related methods:
- - SetPriority and GetPriority
- - SetLOD and GetLOD
-
- In addition to these interface changes, DirectDraw has support for two new
- features. These are:
- Stereo - This includes support for stereo flipping surfaces and refresh
- rate enumeration.
- Cubic environment mapping - DirectDraw supports the atomic creation of
- these complex surface structures. The application can then treat
- each individual face in the structure as a DirectDraw surface, and
- thus lock, GetDC, or BLT images into these surfaces, or use them as
- render targets.
-
-
- DInput
- ======
- Dinput has added the ablility to disable the windows key by acquiring keyboard
- devices in exclusive mode. Also, the addition of Fedit and new interfaces help
- to simplify the process of authoring complex forces.
-
-
- DirectMusic
- ===========
-
- - This version of DirectMusic supports DLS hardware acceleration on the Win 98SE
- and Win 2000 platforms. Also, DirectMusic can now playback DLS2 files on
- DirectMusic synthesizers that support DLS2. (Please note that the DirectMusic
- software synthesizer DOES NOT support DLS2 playback in this release).
- Additionally, DirectMusic now supports the "RMID" format. This format combines,
- into a single file, a DLS collection and associated MIDI file.
-
-
- DirectMusic Producer
- ====================
- This version of Producer features many new features to aid in both authoring
- and auditioning of DirectMusic content, including an expanded secondary segment
- toolbar, an Echo MIDI In feature to map the output of your sequencer to MSSynth,
- as well as Wave and MIDI file export. Many ease-of-use enhancements are also
- included, such as complete display and edit of sequence tracks, hybrid notation,
- display of pchannel names on output status bars, multiple instrument mixing and
- the ability to edit wave loop points via the property page.
-
-
- DirectPlay
- ==========
-
- - DirectPlay has added support for ripple launching. Ripple launching is
- defined as launching an application using another. This is one technique used
- for encryption protection. DPlay handles the ripple launching through the use
- of command line parameters entered in the registry during application
- installation. This can be read about in the SDK help pages.
-
-
- DirectSound
- ===========
-
- - This version of DirectSound provides a built-in hardware voice management.
- With this feature, an application can create DirectSound buffers that are not
- allocated to hardware or software until the buffer is played. This provides
- for maximum utilization of audio hardware buffers.
-
- - DirectSound 7 also provides a selectable 3D HEL. This allows an application
- to select on a buffer-by-buffer basis the software algorithm to use when
- processing 3D sounds. There are three available algorithms: NO_VIRTUALIZATION,
- which maps x,y,z coordinates to simple left-right panning, Doppler and volume
- scaling. NO_VIRTUALIZATION uses the same amount of CPU as a normal, non-3D
- buffer. HRTF_LIGHT provides a simple and fairly CPU efficient algorithm and
- HRTF_FULL provides a very compelling 3D audio effect for somewhat more CPU.
- Note that HRTF_LIGHT and HRTF_FULL are only available on Windows 98 Second
- Edition.
-
- - DirectSound also allows, on Windows 98 Second Edition and Windows 2000,
- the ability to create and playback multi-channel buffers of arbitrary format
- on systems with WDM audio drivers.
-
- - When using the debug version of DirectSound, DirectSound buffers are
- initialized with a static-like noise. This allows an application running
- debug DirectSound to determine if it is attempting to play a buffer that has
- not had valid audio data written to it. If you hear a burst of noise when
- you play a DirectSound buffer, this is the most likely cause.
-
- __________________________________________________________________
-
-
- KNOWN ISSUES
-
-
- Documentation
- =============
-
- - The HTML Help engine that the DirectX SDK documentation uses can print
- multiple topics from a section, with the following limitations:
- 1) Some formatting (fonts, alignment) is lost.
- 2) Language filtering is not performed.
-
- - The fifth parameter for the IDirect3DVertexBuffer7::ProcessVerticesStrided
- function is incorrectly listed in the Documentation. The correct prototype
- and parameter description is:
-
- HRESULT ProcessVerticesStrided(
- DWORD dwVertexOp,
- DWORD dwDestIndex,
- DWORD dwCount,
- LPD3DDRAWPRIMITIVESTRIDEDDATA lpVertexArray,
- DWORD dwVertexTypeDesc,
- LPDIRECT3DDEVICE7 lpD3DDevice,
- DWORD dwFlags
- );
-
- dwVertexTypeDesc
- A combination of flexible vertex format flags that describes the
- vertex format.
-
-
- DirectDraw/Direct3D IM
- ======================
-
- - 3dfx Voodoo2 and Windows 2000
- DirectDraw for Windows 2000 does not fully support the
- passthrough feature of the 3dfx Voodoo2. A workaround has been put in
- place that causes DirectDrawEnumerate to list any secondary (multimon)
- devices as passthrough-style devices. Thus, to develop software for use
- with the Voodoo2, developers should setup the Voodoo2 as a secondary
- multimon device, and then enable the DirectDraw workaround. The workaround
- is enabled by setting the following DWORD registry entry to a non-zero
- value: HKLM\Software\Microsoft\DirectDraw\EnumerateAttachedSecondaries.
-
- - There are known limitations with using the legacy D3DLIGHT structure:
- 1) D3DLIGHTSTATE_COLORVERTEX light state is not only not supported, but
- the behavior is incorrect. It is supported in specular calculations and
- is not supported in diffuse calculations;
- 2) Specular calculations with point and spot lights is incorrect if
- D3DLIGHT structure was used to create these lights. The attenuation
- factor is divided by the distance from light source to the vertex.
-
- - Exceptions are unmasked on Win98 Pentium III machines when debugging.
- On Win98, this can produce "Unhandled exceptions" or "Illegal Instructions".
- To correct this problem, you will need to copy a file. You'll find more
- information in the "\DXF\Extras\Win98 PIII DBG" directory.
-
- - For performance reasons, a rendering device that supports the new
- IDirect3DDevice7 interface sets the FPU to single-precision, round-to-nearest
- mode with exceptions disabled by default. This behavior is opposite from
- that of devices that expose legacy interfaces such as IDirect3DDevice3.
- For more information, see the "DirectDraw Cooperative Levels and FPU
- Precision" topic in the Direct3D Immediate Mode SDK documentation.
-
- - When using STL with Direct3D, the STL header must be included after d3d.h.
-
- - Some popular cards cannot create render targets unless color buffers and
- z-buffers are of the same bit depth. The constraints are:
- 16-bit color buffers require 16-bit z-buffer (no stencils available)
- 32-bit color buffers require 32-bit z-buffer of which 8 bits can be
- stencil if desired.
- If these conditions are not met, then the calls will fail on either
- CreateDevice or at SetTendertarget(). If you see such behavior and need
- to avoid it, use GetDeviceIdentifier().
-
-
- DirectPlay
- ==========
-
- - The IDirectPlay4A::EnumConnections( ) API will always return single-byte
- character descriptions of the service provider available on the system.
- In order to obtain fully localized multibyte descriptions without having
- to convert your entire application to Unicode, the following procedure
- may be used:
-
- a) QueryInterface for an IDirectPlay4 interface (Unicode)
- b) call IDirectPlay4::EnumConnections - this will give you Unicode
- strings
- c) convert each string to ANSI using the Windows WideCharToMultiByte( )
- function
- d) release the IDirectPlay4 interface
- e) continue to use the IDirectPlay4A interface for the rest of your
- application
-
- Alternatively, you can QueryInterface for an IDirectPlay3A interface.
- This will return localized multibyte character strings and eliminate step c).
-
- - Incorrectly using the latest US Robotics drivers on older modems has been
- known to cause problems hosting a session. This can be fixed by downloading
- the appropriate drivers for your modem from the 3Com site.
-
- - Disconnecting the phone line while enumerating modem sessions can
- result in lock ups.
-
- - Using the Protocol flag in DirectPlay may not work through the ICS
- (Internet Connection Sharing) feature of Windows 98SE. Windows 2000 does not
- have this problem.
-
-
- Direct3DRM for Visual Basic
- ===========================
-
- - D3DRM Callbacks. Callbacks such as Frame3.AddMoveCallback and
- Object.AddDestroyCallback must be cleaned up by removing them before the
- application exits. For example, callbacks created with
- Frame3.AddMoveCallback must be removed by calling Frame3.DeleteMoveCallback.
- Failure to clean up callbacks may result in a system crash.
-
-
- Samples
- =======
-
- - The D3DIM samples can be run with the DX7 reference rasterizer, however
- the required registry key is not set by default. You can set the proper
- registry key by using the files in the \DXF\samples\Multimedia\D3DIM\bin
- directory. Without the software rasterizer registry key set you will get
- a message suggesting to enable it when first trying DX7 specific samples
- such as BumpMap. Because this is a software rasterizer you should expect
- very slow frame rates.
-
- - Depending on the resolution of your desktop and the available amount of video
- memory in your system, there may not be enough video memory for the sample
- textures. In this case, the D3DIM samples will still run but will not be able
- to display textures (surfaces will be white). In order to see the textures you
- can lower your desktop resolution or use a display card with more memory.
-
- - The DMHook DLL (helper DLL for DMShell) cannot be compiled with Watcom or
- Borland compilers. Watcom and Borland users should use the pre-made DMHook.dll
- that is supplied with the SDK sample binaries.
-
- - There are miscellaneous issues with some display hardware & drivers.
- Please let us know of any problems you encounter and specify whether you
- believe it is sample or driver related. You can use the reference rasterizer
- to help this determination.
-
- - If you are using Japanese version of Windows, dialog box text in sample
- programs may not display Kanji characters. In order to display Kanji
- characters, you need to edit .RC file to change the dialog font to
- Japanese font.
-
- - For further information on samples, reference the dxreadme.txt at
- <drive:>\(sdk path)\samples\multimedia.
-
-
- Other
- =====
-
- - If a machine is upgraded to Win2000 after the DirectX 7 SDK is installed,
- the DirectX Control Panel will not migrate properly. However, you can
- add the DirectX Control Panel by reinstalling the Direct 7 SDK following
- the upgrade to Win2000.
-
- __________________________________________________________________
-
-
- COMPILER SUPPORT
-
- C/C++
- =====
-
- DX7 samples will work with VC++ 4.2 or better. We have included
- VC project files (.mdp for support of VC 4.2) and makefiles for VC.
-
- As in previous release, we continue to attempt to offer some support for
- Watcom v11.0 and Borland CBuilder 3 users. However, the following samples
- will not compile with Watcom and Borland as this release was made:
-
- Watcom: 1) The D3DIM Screensaver sample; 2) the DMusic sample DMHook.
-
- Borland: 1) The DMusic DLL DMhook; 2) DDraw's DXTex; 3) the D3DIM
- Screensaver; and 4) D3DIM's VideoTex.
-
- When installing your compiler, we highly recommend installing with support
- for MFC. Many of our samples utilize MFC. Without this support, some
- samples will not compile.
-
- Also, when compiling with Watcom or Borland, you must be in the directory
- of the sample wish to compile. The dxall.mak files provide to compile all
- samples will only work with Visual C++.
-
- For instructions on building the samples, open
- CDRom:\DXF\samples\multimedia\DXReadme.txt. In this readme you will find
- sections on How to Build and Notes for VC++ Users. The SDK will install
- this readme file to <drive:>\(sdk path)\samples\multimedia.
-
-
- Visual Basic
- ============
-
- The DirectX 7 SDK will support Microsoft Visual Basic v5.0 with service
- pack 3 (SP3) and higher. Installing the DirectX 7 SDK on a system where
- a lesser version of Visual Basic is installed will upgrade system files
- to Visual Basic 6.0.
-
- If you distribute Visual Basic applications using DirectX Events to
- Windows 95 users, it is important that you include DCOM95 in your installer.
- Otherwise users running Windows 95 may experience page faults when exiting
- the application. The DCOM components are included with Internet Explorer 4
- and Visual Basic, however you will not know what your end user may have
- installed. To ensure your Windows 95 users do not experience problems, it
- would be wise to include this. You can find DCOM95 on your VB5 cd, or at
- the web site http://www.microsoft.com/dcom.
-
-