980 lines
45 KiB
Plaintext
980 lines
45 KiB
Plaintext
|
|
Microsoft® DirectX® 8.0 SDK
|
|
|
|
This CD is the Microsoft DirectX 8.0 Software Development Kit (SDK).
|
|
It contains all DirectX software required to create DirectX 8.0
|
|
compliant applications. Parts of this SDK will also be made
|
|
available for download at the Microsoft DirectX developer web page
|
|
(http://msdn.microsoft.com/directx).
|
|
|
|
Major components include: DirectX 8.0 system components (runtimes);
|
|
DirectX 8.0 Application Programing Interface (API) Documentation for
|
|
each of the DirectX core areas (written for C++ or Visual Basic
|
|
developers); DirectX 8.0 headers & libraries; Sample applications
|
|
and source code; miscellaneous tools and utilities.
|
|
|
|
After installing, those new to DirectX should start with the
|
|
DirectX 8.0 documentation. More seasoned developers may also want
|
|
to view the "WHAT'S NEW" section. Professional DirectX developers
|
|
should refer to the "KNOWN ISSUES" section prior to raising concerns.
|
|
|
|
__________________________________________________________________
|
|
|
|
|
|
Contents:
|
|
|
|
- INSTALLATION
|
|
- WHAT'S NEW
|
|
- CD LAYOUT
|
|
- DIRECTX 8.0 SDK RELEASE NOTES AND KNOWN ISSUES
|
|
- COMPILER SUPPORT
|
|
|
|
__________________________________________________________________
|
|
|
|
|
|
INSTALLATION:
|
|
|
|
|
|
ALWAYS UNINSTALL PREVIOUS RELEASES of the DirectX SDK prior to
|
|
installing DirectX 8.0 SDK Release (see UnInstall). The directory
|
|
structure and file names have changed significantly. Installing on
|
|
top of a previous installation will cause you problems.
|
|
|
|
On Windows 2000 systems, you must be logged in as administrator to
|
|
install the DirectX 8.0 runtimes.
|
|
|
|
If you install the BDA cab, the DirectX 8.0 setup program requires
|
|
that you restart your system.
|
|
|
|
UnInstall:
|
|
|
|
To uninstall, use "Add/Remove Programs" from the Control Panel to
|
|
uninstall the InstallShield installations.
|
|
|
|
__________________________________________________________________
|
|
|
|
|
|
WHAT'S NEW:
|
|
|
|
|
|
DirectX Audio (DirectSound & DirectMusic)
|
|
=========================================
|
|
|
|
DirectX 8.0 audio covers both DirectSound and DirectMusic API's. In
|
|
DirectX 8.0, these API's are more closely aligned and tied together.
|
|
|
|
There are many new features. They include:
|
|
|
|
Effects processing on DirectSound Buffers
|
|
DLS2 synthesis
|
|
Arbitrary loop points
|
|
Release waveforms
|
|
Optional Filter per voice
|
|
6-stage envelope
|
|
Ramped volume scaling
|
|
Time-stamped playback
|
|
"Audiopaths": a powerful and easy way to use the DirectMusic DLS2 synthesizer
|
|
for sound effects programming.
|
|
Submixing of audio prior to 3D processing (by DLS2 synthesizer)
|
|
Automatic streaming and ACM compression (ADPCM, etc.)
|
|
Composition enhancements
|
|
Audio Scripting
|
|
|
|
We also think you will want to look at using the DLS2 synthesizer as your
|
|
main sound effects engine. The DLS2 synthesizer is accessed primarily through
|
|
the DirectMusic API's. Please do not let the word, "Music" mislead you; the
|
|
DirectX 8.0 DirectMusic API's have been enhanced *specifically* for sound effects
|
|
playback. The new DirectMusic API's that are designed to support sound effects
|
|
refer to audiopaths. Please investigate audiopaths; they provide a lot of
|
|
cool features for sound effects. For example, if you have multiple sounds
|
|
that need to come from the same 3d location, you can pre-mix them (using Audiopaths)
|
|
and use only one 3d hardware buffer to play them.
|
|
|
|
Parameter Validation:
|
|
DirectSound in particular has some greater parameter validation in place
|
|
when the DirectSound8 interfaces are used.
|
|
|
|
-Waveformats are more tightly parsed
|
|
-You can no longer create a DirectSoundBuffer with both CTRL_3D and CTRL_PAN set
|
|
-You can no longer create a DirectSoundBuffer with CTRL_3D set and a wave format
|
|
with more than 1 channel. I.e. Only mono buffers may be created with CTRL_3D.
|
|
|
|
Scripting is very exciting. It puts much of the control over the audio
|
|
implementation of the game into the hands of the sound designer. Using
|
|
scripts, audio designers can change implementations, make the music 'magically'
|
|
interactive, and play different sound effects based on in-game variables.
|
|
It also drastically shortens the edit-integrate-listen cycle. This should
|
|
result in improved sound effects and music, with much less game-programmer
|
|
time required.
|
|
|
|
There are sections in the documentation on a new FullDuplex interface and
|
|
"Capture effects." These interfaces are not currently supported.
|
|
|
|
If you are using DirectPlayVoice, you should use those interfaces. If your
|
|
application requires audio capture outside of DirectPlayVoice,
|
|
you should use the existing DirectSoundCapture interfaces.
|
|
|
|
|
|
Direct3D
|
|
========
|
|
|
|
Migration of DirectDraw into Direct3D:
|
|
|
|
In DirectX 8.0, DirectDraw® is fully integrated into Microsoft Direct3D
|
|
to enable drastically simplified application initialization, improved data
|
|
allocation and management performance, and reduced memory footprint.
|
|
The new Direct3D infrastructure provides the services that are called
|
|
at relatively low frequency. These services comprise:
|
|
|
|
- Creation of Direct3D
|
|
- Creation of resources (textures, vertex buffers etc)
|
|
- Display mode selection
|
|
- Presentation of rendered images to the display
|
|
|
|
New Graphics Features for DirectX 8.0 are:
|
|
|
|
Parallel vertex input streams for more flexible mapping to dynamic
|
|
application data structures. Programmable vertex processing language
|
|
enables programmers to write hardware shaders for:
|
|
|
|
- Morphing/tweening animation
|
|
- Matrix palette skinning
|
|
- User-defined lighting models
|
|
- General environment mapping
|
|
- Procedural geometry
|
|
- Any other developer-defined algorithm
|
|
|
|
Programmable Pixel processing language enables programmers to write
|
|
hardware shaders for:
|
|
|
|
- Per-pixel lighting/bump mapping
|
|
- Per-pixel environment mapping
|
|
- Any other developer-defined algorithm
|
|
|
|
MultiSample Rendering support enables:
|
|
|
|
- Full-scene antialiasing
|
|
- Multisample effects such as motion blur, depth-of-field, etc.
|
|
|
|
Point Sprites enable:
|
|
|
|
- High-performance rendering of particle systems
|
|
|
|
3-D Volume textures enable:
|
|
|
|
- Range-attenuation in per-pixel lighting
|
|
- Volume atmospheric effects
|
|
- Easy texturing of very complex geometry
|
|
|
|
Higher-Order Primitive Support:
|
|
|
|
- For enhancing the appearance of 3-D content
|
|
- Facilitating mapping of content from major 3-D authoring tools
|
|
|
|
Higher-Level Technologies:
|
|
|
|
- 3-D content creation tool plugins for export into Direct3D of skinned
|
|
meshes using a variety of Direct3D techniques such as, multi-resolution
|
|
LOD geometry, and higher order surface data.
|
|
|
|
Direct3D Feature Notes:
|
|
|
|
No significant API changes are contemplated beyond this point.
|
|
All implemented features have been tested individually
|
|
to some extent, but they have not been tested in exhaustive combinations
|
|
yet. Many features in DirectX 8.0 are awaiting new hardware, however
|
|
there is at least one implementation available for each of the features
|
|
shipped:
|
|
|
|
- Programmable vertex shaders are supported on the host CPU. On CPUs they
|
|
will operate with performance comparable to HW implementations and can be
|
|
used immediately for DirectX 8.0 prototyping and development.
|
|
- Programmable pixel shaders are supported on the host CPU using refrast
|
|
only. These can be used for prototyping DirectX 8.0 shaders for use when
|
|
hardware ships.
|
|
- Parallel DMA data input is supported on refrast and the SW geometry pipeline.
|
|
- Point Sprites are supported in refrast, software T&L pipeline, and should
|
|
be supported in a prototype DirectX 8.0 driver from at least one hardware
|
|
manufacturer.
|
|
- Volume Textures are supported in refrast.
|
|
- Multisample rendering is supported in refrast and future hardware.
|
|
- Higher-Order Primitives are supported in refrast and via D3DX utilities.
|
|
|
|
D3DX
|
|
====
|
|
|
|
Debug Binaries for D3DX:
|
|
|
|
The D3DX library is a static library. However, to help debugging, we also
|
|
have a debug only dynamic library of D3DX in DirectX 8.0. To use this, link
|
|
with the d3dx8d.lib which is an import lib corresponding to the D3DX8D.DLL.
|
|
If you are reporting a bug and sending Microsoft an example that reproduces
|
|
that behavior, please make sure the executable is linked to the dynamic debug
|
|
library.
|
|
|
|
The dynamic debug d3dx8 library is for debugging only and is not intended
|
|
for use of shipping applications. D3DX8D.DLL is installed as part of the
|
|
DirectX 8.0 SDK setup, not as part of the redistributable runtime setup.
|
|
This will not be available as part of future operating systems.
|
|
|
|
If apps want to statically link to the debug d3dx8 library they need to
|
|
link to d3dx8dt.lib. To statically link to a retail d3dx8 library please
|
|
link to d3dx8.lib.
|
|
|
|
The D3DX Effect Framework
|
|
|
|
The D3DX effect framework allows you to define shading effects using a text
|
|
file that describes the various techniques of implementing an effect. For
|
|
an example of an effect file see water.sha in the C samples media directory.
|
|
|
|
|
|
DirectInput
|
|
===========
|
|
|
|
DirectInput for DirectX 8.0 features a major addition, the DirectInput
|
|
Mapper. The Mapper makes it possible for applications to code to their
|
|
in-game actions, without the effort of figuring out the actions represented
|
|
on the device itself. Additionally, the Mapper makes user configuration
|
|
of devices much simpler by offering a default configuration UI.
|
|
|
|
DIPROP_KEYNAME is supported by the IDirectInputDevice8::GetProperty
|
|
method. DIPROP_KEYNAME retrieves the localized key name, in the form
|
|
of a DIPROPSTRING, from a DirectInput DIK_* value.
|
|
|
|
DIPROP_SCANCODE is supported by the IDirectInputDevice8::GetProperty
|
|
method. DIPROP_KEYNAME retrieves the device scancode, in the form of a
|
|
DIPROPDWORD, from a DirectInput DIK_* value.
|
|
|
|
|
|
DirectPlay
|
|
==========
|
|
|
|
DirectPlay has been completely rewritten in DirectX 8.0 to provide the
|
|
robust scalability required to build high performance, massively
|
|
scaleable network games. With version 8.0, DirectPlay also provides
|
|
voice communication via the DirectPlay Voice API.
|
|
|
|
Note: In these release notes the phrases "DirectPlay4", "DirectPlay4
|
|
interface" or "DirectPlay4 session" are used to mean the IDirectPlay4
|
|
interface or a session hosted using the IDirectPlay4 interface, even
|
|
if that interface or session is implemented using the dlls that are
|
|
part of DirectX 8.0. "DirectPlay8", "DirectPlay8 interface", and
|
|
"DirectPlay8 session" mean the IDirectPlay8... family of interfaces,
|
|
or a session hosted using the IDirectPlay8... family of interfaces.
|
|
|
|
Since DirectPlay8 has been completely re-written from the ground up,
|
|
the DirectPlay8 interfaces are not extensions of the existing
|
|
DirectPlay4 interfaces. i.e. the DirectPlay8 interfaces do not
|
|
inherit from the DirectPlay4 interfaces in the object oriented sense.
|
|
|
|
Also, DirectPlay8 sessions are not network compatible with DirectPlay4
|
|
sessions.
|
|
|
|
Note that the DirectPlay4 interfaces are still present in DirectPlay8
|
|
and are still compatible with previous versions of DirectPlay. So games
|
|
written for DirectPlay4 will still run on systems with DirectX 8.0
|
|
installed.
|
|
|
|
To enable maximum scalability, DirectPlay8 uses a callback model. All
|
|
indications from DirectPlay8 are delivered to the application via an
|
|
application supplied callback function. Therefore DirectPlay can indicate
|
|
multiple events to the application in parallel on different threads.
|
|
|
|
Additionally, performance critical operations such as Send and Receive
|
|
can be performed without copying data, and without thread switching.
|
|
|
|
This programming model allows DirectPlay applications to achieve maximum
|
|
possible performance and scalability on both single-processor and
|
|
multi-processor hardware.
|
|
|
|
DirectPlay8 also adds:
|
|
- Better support for NATs, Firewalls, and Proxy Servers
|
|
- Application defined payloads on session enumerations and replies
|
|
- Revised addressing scheme that is URL ruled based designed to be human
|
|
readable and portable
|
|
- The use of I/O completion ports in Windows 2000
|
|
- Improved ease of use through the removal of obtuse services, for example
|
|
groups within groups
|
|
|
|
The DirectPlay Voice interfaces allow you to quickly and easily establish
|
|
voice communications over an existing DirectPlay8 or DirectPlay4 session.
|
|
|
|
DirectPlay Voice provides the following features:
|
|
- Peer to peer, forwarding server, and mixing server voice topologies
|
|
- A variety of codecs from 1.2kbit/sec to 64kbit/sec, that can be used
|
|
royalty free in DirectPlay Voice.
|
|
- Voice detection to automatically trigger voice transmission
|
|
- Automatic gain control to automatically adjust the recording volume level
|
|
- Adaptive queuing that provides a smooth speech stream with minimum latency
|
|
over different and changing network conditions
|
|
- Integration with DirectSound & DirectSoundCapture
|
|
- Sound Hardware Test wizard
|
|
- Support for IDirectPlay8 and IDirectPlay4 transport sessions
|
|
|
|
DirectPlay8 still has all the benefits of previous versions of DirectPlay,
|
|
including:
|
|
- session setup and teardown
|
|
- session discovery
|
|
- application launching
|
|
- player management
|
|
- group management
|
|
- client/server and peer to peer operation
|
|
- peer to peer host migration
|
|
- bandwidth throttling protocol
|
|
|
|
|
|
DirectShow
|
|
==========
|
|
|
|
DirectX 8.0 marks the first release that DirectShow has been part of the
|
|
core DirectX redistribution. This means that for the first time,
|
|
applications using DirectShow need not install a separate redist, and
|
|
current DirectX users can now take advantage of DirectShow in their
|
|
applications. Adding to the existing capabilities for audio and video
|
|
playback and capture that DirectShow provided, this new release also
|
|
provides the following new features:
|
|
|
|
Windows Media Format Support: Two new filters enable DirectShow applications
|
|
to read and write files in Windows Media Format. The ASF Reader filter
|
|
reads and parses Windows Media Format files. The ASF File Writer filter
|
|
writes Windows Media Format files; it also does the necessary multiplexing
|
|
and compressing.
|
|
|
|
DirectShow Editing Services (DES): This is a complete API for timeline and
|
|
switching services built on top of DirectShow. This API implements the
|
|
core of non-linear editing services, and allows for the creation of
|
|
composite media from a variable number of source audio and video streams.
|
|
By allowing real-time effects and transitions, true "on-the-fly" source
|
|
switching, run-time compositing, run-time seeking, and graph management,
|
|
DES provides a powerful high-level way to use DirectShow, while
|
|
still allowing applications to access lower-level DirectShow functions.
|
|
DES replaces cutlists, which are no longer supported.
|
|
|
|
New DVD Support: Two new interfaces, IDVDControl2 and IDVDInfo2, greatly expand
|
|
the functionality of the DVD Navigator. The new MSWebDVD ActiveX® control
|
|
makes this functionality available to script-based applications.
|
|
New DVD features include: Karaoke multichannel audio support, audio volume
|
|
control through IBasicAudio, support for frame stepping and frame-accurate
|
|
seeking, simplified access to DVD text information strings, and improved support
|
|
for parental management controls.
|
|
|
|
DirectX Media Objects: DirectX Media Objects (DMOs) are a new way to write
|
|
data-streaming components. Like DirectShow filters, DMOs take input data and use
|
|
it to produce output data. However, the application programming interfaces
|
|
(APIs) for DMOs are much simpler than the corresponding APIs for DirectShow. As
|
|
a result, DMOs are easier to create, test, and use than DirectShow filters.
|
|
A wrapper filter is provided to allow DMOs to be used within DirectShow.
|
|
|
|
Media Parameters: Media parameters are a new set of APIs that support run-time
|
|
changes to an object's properties. They offer precise control over properties
|
|
that change rapidly and require both high performance and repeatability. They
|
|
enable a property to follow an exact curve, such as a sine wave or
|
|
inverse-square curve, in real time.
|
|
|
|
New Filters:
|
|
- MJPEG Decompressor: Decodes a video stream from motion JPEG to uncompressed video
|
|
- MJPEG Compressor: Compresses an uncompressed video stream using
|
|
motion JPEG compression.
|
|
- Null Renderer: Discards samples without displaying or rendering the sample data.
|
|
Applications can use this filter to discard data from a stream.
|
|
- Sample Grabber: Retrieves media samples as they move through the filter graph.
|
|
Applications can use this filter to obtain poster frames or other media data.
|
|
|
|
Dynamic Graph Building: DirectShow applications can now change the graph
|
|
while it is still playing. This allows new audio or video streams to be added
|
|
to a graph, effects to be inserted in the graph without any visible gap in the
|
|
playback, and chains of filters to be paused and run independent of the main graph.
|
|
|
|
Push Model Clock Support: This allows for improved synchronization between
|
|
audio and video streams. The default audio renderer can now be slaved to
|
|
another clock, allowing for applications to deal with timing differences
|
|
between clocks on sound cards and capture devices, among other scenarios.
|
|
|
|
Graph Edit enhancements: GraphEdit now displays filter registration information
|
|
in the Insert Filters dialog and allows you to spy on existing graphs in
|
|
external processes (if those processes register their graphs).
|
|
|
|
|
|
DirectMusic Producer
|
|
====================
|
|
|
|
This version of Producer features many new features to aid in both
|
|
authoring and auditioning of DirectMusic content. These features include
|
|
authoring support for audio path configurations, which manages pchannel
|
|
and synth assignments as well as effects routing, the new DLS level 2
|
|
format (which includes stereo waves, layering of regions, and filtering)
|
|
and a new API for scripting, which allows composers and sound designers
|
|
to integrate audio content directly into an application. Other major
|
|
features include new track types, including a wave track, a script
|
|
track, a secondary segment trigger track and a melody track, which
|
|
integrates a variable approach with greater control of form.
|
|
|
|
|
|
DirectX Control Panel
|
|
=====================
|
|
Developers can now toggle between DirectX retail and debug system components
|
|
through the DirectX Control Panel.
|
|
|
|
|
|
Broadcast Driver Architecture
|
|
======================
|
|
|
|
Broadcast Driver Architecture (BDA) is a set of Ring 0 and Ring 3 software
|
|
components based on the DirectShow® architecture for streaming multimedia
|
|
broadcast content. BDA is also a specification that defines how custom
|
|
components, such as filters for parsing private data, interface with the
|
|
rest of the system. Digital-TV applications can use the Ring 3 components
|
|
to build filter graphs, implement a single model for tuning across all
|
|
network types, automate the storage and retrieval of electronic program
|
|
guide information, and capture IP data including ATVEF announcements,
|
|
triggers, and packages.
|
|
|
|
__________________________________________________________________
|
|
|
|
|
|
CD LAYOUT:
|
|
|
|
|
|
The following is a brief description of the directories found with a complete
|
|
DirectX 8.0 SDK download. 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.
|
|
|
|
Note: Japanese systems will require Internet Explorer 5.0 (IE5) for
|
|
the DirectX Control Panel to display properly. IE5 can be found at
|
|
http://www.microsoft.com/windows/ie/default.htm.
|
|
|
|
|
|
\Doc
|
|
Contains reference documentation for the DirectX 8.0 APIs.
|
|
This Documentation must be viewed with Windows HTMLHelp.
|
|
|
|
Note: The HTMLHelp viewer requires a minimum installation of
|
|
Internet Explorer 5.0 (IE5). IE5 can be found at
|
|
http://www.microsoft.com/windows/ie/default.htm.
|
|
|
|
\Essentls
|
|
\DMusProd (Direct Music Producer)
|
|
- DirectMusic Producer is the authoring tool for Direct Music. It
|
|
allows composers and sound designers to use the interactive and
|
|
variable resources of DirectMusic along with the consistent sound
|
|
performance of DLS. DirectX Audio Scripting can also be authored
|
|
and tested within Producer. The DirectMusic Producer setup program
|
|
and all files are located here.
|
|
|
|
\Extras
|
|
\Direct3D
|
|
- Skinning exporter tools
|
|
\DirectShow
|
|
- Contains the DVDBoilerplate. See readme.txt within the directory
|
|
for more information.
|
|
- Contains additional media that can be used with DirectShow and the
|
|
DirectShow Editing Services (DES) interfaces.
|
|
\Documentation
|
|
- Contains DirectX 7 HTMLHelp Documentation for English and Japanese.
|
|
- Also contains DirectX 7 Documentation in Microsoft Word format
|
|
(English only).
|
|
\GameVoice
|
|
- Contains the installer for the English Version of Game Voice Share,
|
|
which includes voice communication and game launching functionality.
|
|
For more information on Game Voice, visit http://www.gamevoice.com.
|
|
\Symbols
|
|
- Contains directories of DirectX 8.0 symbol files for
|
|
Win2000 and Win9x (retail and debug for each).
|
|
|
|
\Include
|
|
contains DirectX 8.0 include files for DirectX core components.
|
|
|
|
\Lib
|
|
contains DirectX 8.0 library files for DirectX core components.
|
|
|
|
\License
|
|
Text versions of the DirectX SDK and End User License Agreements and
|
|
the Redistributable License Agreement.
|
|
|
|
\Redist
|
|
Redistributable versions of the DirectX 8.0 Runtime.
|
|
|
|
\Samples
|
|
Contains all sample code and sample binaries. Most samples can be
|
|
accessed from the Start menu when installed via the downloaded
|
|
InstallShield setup.
|
|
|
|
\SDKDev
|
|
This directory contains the runtime installs that are installed with
|
|
the SDK. They are English only and contain both debug and retail
|
|
DirectX 8.0 system components that can be "switched" between retail
|
|
and debug without re-installing. For the DirectX 8.0 components,
|
|
retail or debug can be switched via the DirectX Control Panel.
|
|
|
|
The \retail folder contains the setup that will install non-DirectX 8.0
|
|
retail components while the \debug folder will install all debug
|
|
components. Both install DX8 retail and debug components. These are
|
|
the only components that can be "switched".
|
|
|
|
__________________________________________________________________
|
|
|
|
|
|
DIRECTX 8.0 SDK NOTES AND KNOWN ISSUES
|
|
|
|
|
|
DirectX Audio (DirectSound & DirectMusic)
|
|
=========================================
|
|
|
|
Below are some known issues with DirectMusic and DirectSound in
|
|
DirectX 8.0 that you may encounter.
|
|
|
|
- ParamEQ and Distortion effects have parameters that are sampling rate
|
|
dependent.
|
|
Setting these params to a value that is out of range for that sampling
|
|
rate will result in:
|
|
Distortion: Parameters are 'clipped' at the valid range for the
|
|
sampling rate
|
|
ParamEQ: If the frequency is greater than can be supported by the
|
|
sampling rate, the effect is disabled- In the DirectMusic
|
|
3DAudio sample, there may be some breakup if Doppler is set > 4
|
|
- DirectSound buffers that are created with DSBCAPS_CTRLFX must be at
|
|
least 100ms in length.
|
|
|
|
|
|
Direct3D
|
|
========
|
|
|
|
- All executables compiled against earlier DirectX 8.0 betas must be
|
|
recompiled with this version to run.
|
|
- Alt-enter in the samples results in texture corruption for some drivers.
|
|
Workaround: Get newer drivers.
|
|
- The value for MaxPrimitiveCount defines the max number of vertices
|
|
as well as the max number of primitives that can be sent to a
|
|
DrawIndexedPrimitive or DrawPrimitive call.
|
|
- A bug in the Windows2000 kernel causes an issue upon mode-switches for
|
|
AGP surfaces locked with the NOSYSLOCK flag. The contents of any such
|
|
surface may become inaccessible for the duration of the NOSYSLOCK lock
|
|
if a mode-switch happens after the Lock and before the Unlock. This happens
|
|
for both DX7 and DX8 applications. The most likely scenario is a DX8
|
|
application running on a driver that supports hardware vertex buffers,
|
|
but using software vertex processing (fixed or shader). Under these
|
|
scenarios, Direct3D might keep a NOSYSLOCK lock on an AGP vertex buffer.
|
|
If the user alt-tabs out of the application or does anything else to cause
|
|
a mode-change, the thread writing into the vertex buffer may fault. There
|
|
is no known workaround. Microsoft will fix this issue in the next version
|
|
of Windows and will attempt to ship a fix in a future Windows2000
|
|
Service Pack.
|
|
- A bug in the DX6 and DX7 implementation of
|
|
IDirectDraw*::GetDeviceIdentifier causes the DirectDraw runtime to write
|
|
four extra bytes past the end of the structure. To work around this issue,
|
|
allocate an extra four bytes at the end of your DDDEVICEIDENTIFIER*
|
|
structure. This bug does not exist in the IDirect3D8::GetAdapterIdentifier
|
|
version.
|
|
- The Direct3D8 run-time exhibits the following behvior on all Windows NT
|
|
platforms. Run a full-screen Direct3D8 application, press Ctrl-Alt-Del,
|
|
press ESC. The desktop will appear, but the display card will still be in
|
|
the application's resolution, not the proper desktop resolution. (The user
|
|
may alt-tab back to the application at this time.) A fix for this will be
|
|
in the next release of DirectX, and the problem will be fixed in the next
|
|
version of Windows NT. Developers are urged NOT to try to work-around this
|
|
problem nor code their own solutions, since such solutions are very likely
|
|
to interact poorly with our own fix.
|
|
- Terminating a process with un-released vertex buffers on Win9x DX7 APIs
|
|
can cause instability. This is caused by a bug in the automatic per-process
|
|
cleanup code in DirectDraw which causes VBs to be leaked permanently (until
|
|
reboot) on all Win9x platforms: Windows 95, 98, Millenirum. Applications
|
|
should be carefully coded to ensure all Vertex Buffers are correctly released
|
|
before exiting the process.
|
|
- Applications should be careful when responding to the WM_MOUSEMOVE message.
|
|
If the application calls IDirect3DDevice8::SetCursorPosition with a coordinate
|
|
that is outside the current display mode size, then the Direct3D run-time may
|
|
cause another WM_MOUSEMOVE, which may cause the application to call
|
|
IDirect3DDevice8::SetCursorPosition again, resulting in an infinite loop.
|
|
The application should either be careful not to call
|
|
IDirect3DDevice8::SetCursorPosition with invalid positions, or should never
|
|
call IDirect3DDevice8::SetCursorPosition with repeated positions.
|
|
One common scenario for generating invalid mouse cursors is to remove the
|
|
menu style from a window incorrectly when going full-screen. The SDK sample
|
|
applications incorrectly use SetWindowLong to remove the menu bar from the
|
|
window before going fullscreen. The correct technique is to call
|
|
"hOldMenu = SetMenu(hWnd, NULL)'" before going fullscreen, and then
|
|
"SetMenu(hWnd, hOldMenu);" before returning to windowed mode.
|
|
- When using the function ValidateDevice on Win9x the return value will be
|
|
DD_OK if it is successful.
|
|
|
|
Point Sprites:
|
|
|
|
- When using the Direct3D software T&L pipeline (device created with
|
|
D3DCREATE_SOFTWARE_VERTEXPROCESSING flag set or with
|
|
D3DCREATE_MIXED_VERTEXPROCESSING flag and software vertex processing
|
|
toggled on), then point sprite support is guaranteed. When using
|
|
hardware vertex processing, some older drivers may not support point
|
|
sprites, indicated by d3dcaps->MaxPointSize = 0. Upgrading to a DX8
|
|
driver for these parts will enable them.
|
|
|
|
To ensure consistent behavior for point sprite support, set
|
|
D3DRS_CULLMODE = D3DCULL_NONE
|
|
D3DRS_FILLMODE = D3DFILL_SOLID
|
|
when rendering point sprites.
|
|
|
|
Vertex Shaders:
|
|
|
|
- Two vertex shader instructions may produce implementation-specific
|
|
results for out-of-range inputs, such as the log of a negative number.
|
|
The log, logp and y- component of the lit instruction macro should not
|
|
be passed negative values for this reason.
|
|
|
|
Driver/Device Specific Issues:
|
|
|
|
- The Windows Millennium driver for the ATI Rage 128 fails (draws nothing)
|
|
when using vertex shaders which output more than two texture coordinates
|
|
per texture coordinate set when the D3DTTFF_PROJECTED bit is not set.
|
|
|
|
D3DX
|
|
====
|
|
|
|
- This product includes software developed by the University of California,
|
|
Berkeley and its contributors D3DX Mesh APIs.
|
|
- The ID3DXSkinMesh interfaces currently only support 16-bit mesh. 32-bit
|
|
mesh support is not yet implemented.
|
|
- All other D3DX Mesh interfaces do support 32-bit meshes even though the
|
|
docs say they do not.
|
|
- D3XGenerateAdjacency currently ignored the epsilon value and uses 0.0f
|
|
as the epsilon.
|
|
- In D3DXMatrixPerspectiveFOV, the aspect ratio is x/y instead of y/x.
|
|
|
|
|
|
DirectInput
|
|
===========
|
|
|
|
- There is a bug in DirectInput which causes the Logitech Wingman Formula wheel to
|
|
report pedal data on the wrong axes.
|
|
- There are some know issues that can cause mouse behavior to be very sluggish
|
|
when debugging using DirectInput. There are two reg files that will
|
|
assist with this issue. They are:
|
|
Mouse and Keyboard Emulation On.reg
|
|
Mouse and Keyboard Emulation Off.reg
|
|
"Mouse and Keyboard Emulation On.reg" will force all mouse calls through
|
|
dinput emulation, thus making the mouse perform properly inside the debugger.
|
|
"Mouse and Keyboard Emulation Off.reg" will turn off force emulation.
|
|
Only use these keys on development machines, they are not intended to be
|
|
redisted as they are a global setting that effects all Direct Input clients.
|
|
- The following devices are supported with device images in this release.
|
|
+ ACT LABS RS
|
|
+ ACT LABS Force RS
|
|
+ Gravis Xterminator Dual Control
|
|
+ Gravis Blackhawk Digital
|
|
+ Gravis Gamepad Pro USB
|
|
+ Gravis Gamepad Pro
|
|
+ Gravis Eliminator Gamepad Pro
|
|
+ Gravis Xterminator Digital GamePad
|
|
+ InterAct/3dfx SV-262A HammerHead Fx
|
|
+ InterAct Axispad
|
|
+ InterAct SV-251 Raider Digital
|
|
+ Logitech WingMan Formula (Yellow)
|
|
+ Logitech WingMan Extreme Digital 3D
|
|
+ Logitech WingMan Gamepad Black (USB)
|
|
+ Logitech Wingman Rally Force USB
|
|
+ Logitech Wingman Rumblepad
|
|
+ Microsoft Sidewinder Gamepad Pro
|
|
+ Microsoft SideWinder Force Feedback Wheel
|
|
+ Microsoft SideWinder Force Feedback Pro
|
|
+ Microsoft Sidewinder FF 2
|
|
+ Microsoft Sidewinder Dual Strike
|
|
+ Microsoft Sidewinder Precision 2
|
|
+ Microsoft Sidewinder Plug and Play
|
|
+ Microsoft SideWinder Game Pad
|
|
+ Microsoft SideWinder Precision Racing Wheel
|
|
+ Microsoft SideWinder Precision Pro
|
|
+ Microsoft SideWinder Freestyle Pro
|
|
+ Microsoft SideWinder 3D Pro
|
|
|
|
|
|
DirectPlay
|
|
==========
|
|
|
|
The following are known issues with DirectPlay in this release that
|
|
you may need to work around.
|
|
|
|
- Note that the dwTimeoutUntilKeepAlive member of the DPN_CAPS structure
|
|
specifies a minimum value. The first keepalive packet may be sent as
|
|
much as 30 seconds later than the minimum value specified in this
|
|
member. For example, if you set dwTimeoutUntilKeepAlive to 60000
|
|
(60 seconds) the first keepalive packet may be sent anywhere from
|
|
60 to 90 seconds after the last normal packet was sent.
|
|
- The "debug output level" slider on the DirectPlay tab of the DirectX
|
|
control panel is not functional. For instructions on how to change the
|
|
debug output level, see the "dp8log.txt" file in the
|
|
[sdkroot]\bin\DXUtils directory.
|
|
- To use DirectPlay Voice in full duplex mode, we recommend that you update
|
|
to the latest drivers for your audio device. Some older drivers do not
|
|
provide reliable full duplex performance.
|
|
- If you connect to a location that you have enumerated, the enumeration
|
|
will be canceled automatically for you. If you attempt to do a cancel
|
|
asynchronous operation on this enum after the connect is completed you
|
|
will get back DPNERR_USERCANCEL error code. Be aware that this is the
|
|
expected behavior and that you should not exit with an error condition.
|
|
- The modem service provider implementation for DirectPlay8 requires
|
|
TAPI 2.0 functionality. TAPI 2.0 is available as an installed component
|
|
on Windows 98 and later, but not on Windows 95. If your application
|
|
requires modem functionality on the Windows 95 platform, the TAPI 2.0
|
|
patch for Windows 95 can be obtained on the Microsoft FTP site
|
|
(ftp://ftp.microsoft.com/developr/TAPI/tapi2195.zip) and distributed
|
|
with you application.
|
|
|
|
Notes on NATs (Network Address Translators):
|
|
|
|
- There are many different NAT solutions available, some of which are
|
|
different from others. We have attempted to document some of the issues
|
|
with various NAT solutions, but is not comprehensive. Please refer to
|
|
the DirectX Developer Page at http://msdn.microsoft.com/directx for
|
|
further information on these issues.
|
|
|
|
DirectPlay Voice codecs via Windows ACM (Audio Compression Manager):
|
|
|
|
- DirectPlay Voice uses the following codecs via the Windows ACM:
|
|
- Microsoft ADPCM
|
|
- Microsoft GSM
|
|
- DSP Group Truespeech
|
|
- Installation of these codecs with Windows is optional. If they
|
|
are not installed, then one or more of the compression types in
|
|
DirectPlay Voice will not function. If the application attempts
|
|
to use a compression type that is not functional due to a missing
|
|
ACM codec, it will receive the DVERR_COMPRESSIONNOTSUPPORTED
|
|
return code.
|
|
- On Windows 2000, the user can install these codecs through the
|
|
Add/Remove Hardware wizard. The user should select
|
|
"Add/Troubleshoot a device". When a list of hardware is presented,
|
|
the user should select "Add a new device", then on the next
|
|
page select "No, I want to select the hardware from a list".
|
|
This will bring up a list of hardware. Select "Sound, video, and
|
|
game controllers". The "Audio Codecs" item is listed under
|
|
"(Standard system devices)".
|
|
- On Windows 9x, the user can install these codecs through the
|
|
Add New Hardware wizard. When prompted, the user should select
|
|
"No, I want to select the hardware from a list". In the list of
|
|
device types, codecs are listed under "Sound video and game
|
|
controllers". The codecs are listed under two manufacturers.
|
|
The ADPCM and GSM codecs are listed under "Microsoft Audio
|
|
Codecs" and the Truespeech codec is listed under "DSP Group".
|
|
|
|
|
|
DirectShow
|
|
==========
|
|
|
|
- The GraphEdit Tool (and some of the DirectShow samples) requires MFC42.DLL
|
|
to be present on the system. The DirectX SDK Setup does not install this
|
|
DLL. This will only be an issue on Windows 95 systems and will require you
|
|
to install Microsoft Visual C++ to acquire the DLL.
|
|
- Application development using the DirectShow base classes libraries requires
|
|
installation of the DirectShow samples. The source code for the base classes
|
|
is now included as a sample project, rather than as a separate Classes\Base
|
|
directory. You must compile these base classes to generate strmbase.lib and
|
|
strmbasd.lib, which are no longer installed as binary files. If you are
|
|
linking with strmbase.lib or strmbasd.lib with your own application, be sure
|
|
to build and link with the updated DirectX 8 libraries (instead of the older
|
|
libraries that are installed with Visual C++ or the Microsoft Platform SDK).
|
|
- The samples included with the SDK are configured to compile and link with
|
|
the updated libraries, which are generated by building the BaseClasses project.
|
|
Further build instructions are provided in:
|
|
<DXSDKInstallFolder>\samples\Multimedia\DirectShow\readme.txt.
|
|
- The <streams.h> header file, along with many other DirectShow-specific header
|
|
files, is now located in the DirectShow samples BaseClasses directory,
|
|
which includes the BaseClasses source code and header files. You must add
|
|
the BaseClasses directory to the beginning of your project's include path
|
|
settings in order for Visual C++ to find all of the updated header files.
|
|
- To use the Teletext Decoder Fonts that are shipped with DX8, make sure that
|
|
the WST_* fonts are installed by examining the \windows\fonts directory.
|
|
- There is a known problem with the MP3 decoder filter when used with
|
|
Audio Effects DMOs. If you add an audio effect DMO (like WavesReverb, Echo,
|
|
or Flange) to an existing MP3 filter graph, the audio could be played back
|
|
at double speed. The problem would occur whenever the MP3 decoder is connected
|
|
to a downstream audio effect dmo (via the dmo filter wrapper) that offers a
|
|
default audio input type which doesn't match the native format of the
|
|
uncompressed MP3 stream. For example, if you render a 22kHz MP3 file and
|
|
add a DMO Audio effect, the MP3 filter could misinterpret the input type as
|
|
being 44kHz when it is actually 22kHz. This would not be a problem for 44kHz
|
|
MP3 files. This issue will be fixed in a future release.
|
|
- If you have the SDK on CD-ROM, the Extras\DirectShow\Media directory
|
|
contains additional media that can be used with DirectShow and the DirectShow
|
|
Editing Services (DES) interfaces. We have included DV-encoded AVI videos,
|
|
larger MPEG videos, and higher-quality JPEG images. Since the DV files are
|
|
very large, you should copy them to your hard disk before playing them to
|
|
ensure the best performance.
|
|
- Remote graph spying with GraphEdit works only on Windows 2000.
|
|
- The DirectShow Editing Services (DES) Color Generator source filter may
|
|
generate blue or green components incorrectly if they have small values.
|
|
For best results, use solid primary colors or set Blue and Green
|
|
components to values of either 0xFF or 0x00.
|
|
|
|
|
|
Broadcast Driver Architecture
|
|
======================
|
|
|
|
Known issues with Broadcast IP Data Reception under Windows 2000:
|
|
|
|
- After rebooting a Windows 2000 system with a BDA receiver card installed,
|
|
the BDA NDIS IP NIC is not immediately active. It becomes active only
|
|
when an application inserts the BDA IPSink filter into a graph and connects
|
|
its input pin. Once activated by connecting the IPSink filter's input pin,
|
|
it takes 20 to 30 seconds for the BDA NDIS IP NIC to be assigned an IP
|
|
address. The address assigned will be a Net 10 address. Once activated,
|
|
the BDA NDIS IP NIC will remain active until the system is rebooted.
|
|
- There may be some applications that use the BDA NDIS IP NIC as the default
|
|
LAN adapter. These apps will fail if the BDA NDIS IP NIC is active. To
|
|
de-activate the BDA NDIS IP NIC, reboot the system and do not run a TV graph
|
|
or application.
|
|
|
|
|
|
Documentation
|
|
=============
|
|
|
|
- For proper viewing of the DirectX Documentation, install the docs from
|
|
the DirectX 8.0 SDK CD. Specify a full installation, or if you chose a
|
|
Custom install, ensure that you've selected Documentation.
|
|
- The known issues with the DirectX 8.0 Documentation are written up in a
|
|
separate file. You will find these issues listed in the
|
|
DirectX8_Doc_Readme.txt file found in the <DXSDKCDRoot>\dxf\doc\DirectX8
|
|
folder. This file is also installed into the <DXSDKInstallFolder>\doc\DirectX8
|
|
when DirectX8 Documentation is installed.
|
|
|
|
|
|
Samples
|
|
=======
|
|
|
|
Miscellaneous Issues:
|
|
|
|
- Some samples will compile with errors with the UNICODE flag defined.
|
|
- Visual C/C++ 5 compatibility in DirectX 8.0 depends on Service Pack 3
|
|
for Visual Studio 97. If you see the following errors:
|
|
"fatal error LNK1106: invalid file or disk full: cannot seek to 0x389bc8bf"
|
|
"Internal error during Pass1"
|
|
then you need to upgrade your Visual C/C++ 5 installation. Service packs
|
|
for Visual Studio can be found at http://msdn.microsoft.com/vstudio/sp/vs97.
|
|
|
|
Direct3D Samples:
|
|
|
|
- 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.
|
|
|
|
DirectShow Samples:
|
|
|
|
- There are several .XTL sample files in the \media folder. These files
|
|
demonstrate some of the functionality available in the DirectShow Editing
|
|
Services. You can render these files using the XTLTest C++ sample and
|
|
the XTLTestVB and DexterVB VisualBasic samples. All provided XTL files
|
|
refer to media that ships in the SDK's media directory. Rendering XTL
|
|
files is a great way to get an idea of what the new DirectShow Editing
|
|
Services APIs make possible. For a simple demo, drag a few of the SDK
|
|
media directory's sample .XTL files onto the XTLTestVB sample's client area.
|
|
- The DirectShow Visual Basic samples demonstrate more of the DES functionality
|
|
than the C++ samples. Be sure to run SlideShowVB and TrimmerVB if you are
|
|
interested in DES. You can also use the DexterVB ("Dexter Explorer")
|
|
application as an XTL development/test tool.
|
|
- The Texture3D sample is known to fail on some systems (referencing
|
|
invalid memory), for which you may see an error message. This failure is
|
|
in initialization of D3D. We recommend updating your video card drivers
|
|
to the most current revision, as that usually resolves the problem.
|
|
- The DirectShow IDL files are currently located in the
|
|
\include\DShowIDL directory of the SDK for your convenience.
|
|
- You will be required to build the \BaseClasses libraries before any sample
|
|
that depends on them can be built or executed. Please review the Readme.Txt
|
|
file in the DirectShow samples root directory for more information on
|
|
building the samples.
|
|
|
|
|
|
DirectX for Visual Basic Samples:
|
|
|
|
- DBMON.exe is a console application which allows the Visual Basic DirectX
|
|
developer to take advantage of extended output that debug installs of
|
|
DirectX provide. This application works only under Windows 2000.
|
|
To use, execute the application. All debug output will be captured and sent
|
|
to the console window. If you are not seeing debug output, ensure that
|
|
you have installed the debug version of DirectX, and that you are running
|
|
Windows 2000.
|
|
- DXVB Messenger Server is the server portion of a client/server instant
|
|
messaging application. This sample requires the use of ActiveX Data Object
|
|
(ADO) to maintain the data needed. If you are running Windows 9x, you must
|
|
have the latest version of ADO installed on your machine to compile or run
|
|
this sample. You can install the latest ADO while Visual Basic Professional
|
|
is being installed or you can download the latest ADO from the web at:
|
|
http://www.microsoft.com/data/ado/. ADO is installed by default with
|
|
Visual Basic 6 Enterprise.
|
|
- If you are experiencing problems searching for and connecting to sessions
|
|
using DirectPlay for VisualBasic, you may need to update your system.
|
|
To update, install DCOM98 from:
|
|
http://download.microsoft.com/msdownload/dcom/98/x86/en/dcom98.exe
|
|
|
|
|
|
Other
|
|
=====
|
|
|
|
- The DirectDraw "Debug Level" slider in DirectX Control Panel Applet does
|
|
not function. Instead use the "Debug Output Level" slider on the Direct3D
|
|
tab, this will effect both DDraw and D3D8. Also note that DirectDraw labels
|
|
it's debug spew as coming from "Direct3D8".
|
|
- The DirectX runtime will not operate on NEC PC98 systems. SDK and Runtime
|
|
installations have been intentionally blocked on this system.
|
|
- The DirectX 8.0 runtime requires a Pentium compatible CPU for operation.
|
|
The DirectX runtime setup will not install on processors that do not report
|
|
Pentium compatibility. Some older Cyrix processors, while compatible with
|
|
the Pentium instruction set, report as x486 processors, and thus do not
|
|
support installation of the DirectX 8.0 run time.
|
|
- When installing the DirectX 8.0 runtime from the DirectX SDK you will
|
|
notice that the size requirements are inflated from previous DirectX versions.
|
|
For example, if you were only to install a DirectX 8.0 runtime from the
|
|
DirectX SDK onto a system with low disk space, you would see that at least
|
|
120 MB is required. This is because both the retail and debug runtimes are
|
|
included in each of the DirectX SDK runtime installs (this allows developers
|
|
to switch between retail and debug without having to re-install). However,
|
|
this inflated size is not true of the redistributable runtimes shipped with
|
|
the SDK. Redistributable installs will require significantly less disk space.
|
|
While this number is dependent on the disk format (Fat16/32 vs. NTFS) we
|
|
expect approximately 40 MB of free space is required for uncompression and
|
|
installation and approximately 15 MB once installed (and this is only true for
|
|
systems with no previous DirectX version installed). The DirectX Setup API
|
|
will check for and display error messages when these requirements are not met.
|
|
- Windows 95 Japanese Systems will require MS UI Gothic patch for Windows 95
|
|
or Internet Explorer 5.0 (or after) for the DirectX Control Panel to display
|
|
properly. MS UI Gothic Patch can be found at
|
|
http://www.microsoft.com/JAPAN/win95/msgotupd/default.htm and IE5 (or after)
|
|
can be found at http://www.microsoft.com/windows/ie/default.htm.
|
|
|
|
__________________________________________________________________
|
|
|
|
|
|
COMPILER SUPPORT
|
|
|
|
All DirectX 8.0 SDK samples are developed and compiled with Visual Studio 6.0.
|
|
We have provided Visual Studio 6.0 DSP files for your convenience.
|
|
|
|
All DirectX 8.0 libraries, with the exception of the DirectShow libraries, should
|
|
be compatible with Visual Studio 5.0 SP3 or higher.
|
|
|
|
__________________________________________________________________
|
|
|
|
|
|
SPECIAL THANKS
|
|
|
|
Marlin Studios
|
|
|
|
Textures used in the Billboard sample, tree02S.tga, tree01S.tga & tree35S.tga,
|
|
are provided courtesy of Marlin Studios (http://www.marlinstudios.com).
|
|
They are provided for use with this sample only and cannot be distributed
|
|
with any application without prior written consent.
|
|
|
|
Viewpoint Digital, Inc.
|
|
|
|
The model used by the Visual Basic AutoParts sample, engine1.x, is provided
|
|
courtesy of Viewpoint Digital, Inc. (http://www.viewpoint.com). It is provided
|
|
for use with this sample only and cannot be distributed with any application
|
|
without prior written consent. V6 Engine Model copyright 1999 Viewpoint
|
|
Digital, Inc..
|
|
|
|
3DCAFE and Platinum Pictures
|
|
|
|
The model in the Dolphin samples, Dolphin.x, is derived from the model files
|
|
(dolphins.zip) provided courtesy of 3DCAFE and Platinum Pictures
|
|
(http://www.3dcafe.com/). It is provided for use with this sample only.
|
|
For further terms of use please visit the 3DCAFE site or contact 3DCAFE.
|