home *** CD-ROM | disk | FTP | other *** search
- DirectX Samples MISC Directory Readme
- Copyright (C) 1995-1997 Microsoft Corporation. All Rights Reserved.
-
- 1. D3DUtils
-
- d3dutils.h, d3dutils.inl and d3dutils.cpp implement a set
- of helper functions for C++ programmers for the following tasks:
-
-
- 1a. Matrix construction
-
- D3DMATRIX ZeroMatrix();
- Returns the zero matrix.
-
- D3DMATRIX IdentityMatrix();
- Returns the identity matrix.
-
- D3DMATRIX ProjectionMatrix(const float Zn, const float Zf,
- const float fov);
- Returns the projection matrix:
-
- [c 0 0 0
- 0 c 0 0
- 0 0 Q s
- 0 0 -QZn 0]
-
- s = sin(fov/2)
- c = cos(fov/2)
- Q = s / (1 - Zn/Zf)
- Zn and Zf specify the near and far clipping planes.
- fov specifies the field of view angle in radians.
-
- D3DMATRIX RotateXMatrix(const float rads);
- D3DMATRIX RotateYMatrix(const float rads);
- D3DMATRIX RotateZMatrix(const float rads);
- Constructs a matrix that rotates about the given axis
- by rads radians.
-
- D3DMATRIX TranslateMatrix(const float dx, const float dy,
- const float dz);
- D3DMATRIX TranslateMatrix(const D3DVECTOR& v);
- Constructs a matrix to translate by the given vector.
-
- D3DMATRIX ViewMatrix(const D3DVECTOR& from, const D3DVECTOR& at,
- const D3DVECTOR& up, const float roll);
-
- from is the location of the eye
- at is the location of the eye's point of interest
- up is the global "up" vector
- roll is a roll angle about the axis of the viewer
-
- Constructs a view matrix to translate and rotate such that
- the viewer is looking down the +Z axis from the origin.
-
- D3DMATRIX ScaleMatrix(const float size);
- D3DMATRIX ScaleMatrix(const float a, const float b, const float c);
- D3DMATRIX ScaleMatrix(const D3DVECTOR& v);
- Uniform and nonuniform scale matrices.
-
- D3DMATRIX MatrixMult (const D3DMATRIX& a, const D3DMATRIX& b);
- Returns a*b
-
- D3DMATRIX MatrixInverse (const D3DMATRIX& a);
- Returns the inverse of a.
-
- D3DMATRIX MatrixTranspose(const D3DMATRIX& a);
- Returns the transpose of a.
-
- D3DVECTOR TransformVector(const D3DVECTOR& v, const D3DMATRIX& m);
- Returns v*m. Divides the result through by the
- perspective component of v*m.
-
- D3DVECTOR TransformNormal(const D3DVECTOR& v, const D3DMATRIX& m);
- Returns v*MatrixTranspose(MatrixInverse(m)). This is the
- correct way to transform a normal vector.
- Note, this routine should not be used to transform batches
- of vectors because it would repeatedly perform the transpose and
- inverse operations on the input matrix.
-
-
- 1b. Light management
-
- Data Members
-
- D3DLIGHT2 light;
- Structure describing the light.
-
- LPDIRECT3DLIGHT lpD3DLight;
- Interface pointer for the light.
-
- int changed;
- Dirty bit for the light.
-
- Member Functions
-
- HRESULT AddToViewport(LPDIRECT3DVIEWPORT2 lpView);
- Adds the light to the viewport.
-
- HRESULT RemoveFromViewport(LPDIRECT3DVIEWPORT2 lpView);
- Removes the light from the viewport.
-
- HRESULT Set();
- Forces the light to be updated through SetLight.
-
- The Set*/Get* functions enable the application to update the light's
- properties with single function calls. The Set* functions set
- the dirty bit so the light will be updated when necessary.
-
- SetColor/GetColor
- SetPosition/GetPosition
- SetDirection/GetDirection
- SetAttenuation/GetAttenuation
- SetRange/GetRange
- SetFalloff/GetFalloff
- SetUmbra/GetUmbra
- SetPenumbra/GetPenumbra
- SetFlags/GetFlags
-
- Several classes are derived from Light. This is basically to
- simplify construction, since some elements of D3DLIGHT2 are
- not relevant to certain light types.
-
- DirectionalLight(LPDIRECT3D2 lpD3D,
- const D3DVECTOR& color,
- const D3DVECTOR& direction);
- ParallelPointLight(LPDIRECT3D2 lpD3D,
- const D3DVECTOR& color,
- const D3DVECTOR& position);
- PointLight(LPDIRECT3D2 lpD3D,
- const D3DVECTOR& color,
- const D3DVECTOR& position);
- SpotLight(LPDIRECT3D2 lpD3D,
- const D3DVECTOR& color,
- const D3DVECTOR& position,
- const D3DVECTOR& direction,
- const float umbra_angle,
- const float penumbra_angle);
-
- 1c. Material management
-
- The Material class simplifies dealing with Direct3D
- materials.
-
- Data Members
-
- D3DMATERIAL Mat;
- Structure describing the material.
-
- D3DMATERIALHANDLE hMat;
- The material's handle.
-
- LPDIRECT3DMATERIAL2 lpMat;
- Pointer to the material's interface.
-
- int changed;
- Dirty bit for the material.
-
- Member Functions
-
- HRESULT SetAsCurrent(LPDIRECT3DDEVICE2 lpDev);
- Sets the material as current to the device.
-
- HRESULT SetAsBackground(LPDIRECT3DDEVICE2 lpDev);
- Sets the material as the current background on the device.
-
- HRESULT Set(void);
- Forces the material to be updated using SetMaterial.
-
- The Set*/Get* functions enable the application to update the various
- material properties with single function calls. The Set* functions
- set the dirty bit so the material will be updated when necessary.
- SetDiffuse/GetDiffuse
- SetAlpha/GetAlpha
- SetAmbient/GetAmbient
- SetEmissive/GetEmissive
- SetSpecular/GetSpecular
- SetPower/GetPower
- SetRampSize/GetRampSize
- SetTextureHandle/GetTextureHandle
-
- See boids and pplane for examples of how to use the Material class.
-
- 2. D3DTexture
-
- d3dtex.h and d3dtex.cpp implement the D3DTexture class, which
- simplifies texture managment. D3DTexture's features are as follows:
- - Keeps a system memory copy of the texture to restore the surface.
- - Enables loading textures from bitmaps
- - Uses DirectDraw's GetDC function to access GDI's support
- for color-converting blts to load the textures.
- Note, D3DTexture does not currently support textures with
- alpha because GDI does not support bitmaps with alpha.
-
- See boids and flip3d for examples of how to use D3DTexture.
-
-
- 3. GetDXVersion
-
- getdxver.cpp implements sample code showing how to detect which
- version of DirectX is currently running (1.0, 2.0, ..., 5.0).
-
- See boids and flip3d for examples of how to use GetDXVersion.
-
-
- 4.1 RMMain
-
- Uses D3DRM to setup a window for rendering, ask the sample to build
- it's scene and then renders the scene.
-
- rmmain.cpp
-
- Main source file which includes WinMain and message handler. Creates
- D3DRM, uses it to setup the window for rendering and then asks the
- sample to build it's scene.
-
- rmmain.h
-
- Header for rmmain.cpp.
-
- rmmain.rc
-
- Resource file for rmmain.cpp.
-
- rmerror.cpp
-
- D3DRM error code to string and error message box.
-
- rmerror.h
-
- Header for rmerror.cpp.
-
- rmdemo.h
-
- Because the samples do not create and manage all DirectDraw and
- Direct3D objects themselves, the source is much simpler than the
- immediate mode samples, but they can only run in a window.
- Optionally, the D3DRM samples can be linked to D3DApp via another
- harness. This will allow them to enter fullscreen modes. Fly is
- linked to these files.
-
- rmfull.cpp
-
- Main source file which includes WinMain and message handler. Uses
- D3DApp to setup rendering.
-
- rmfull.h
-
- Header for rmfull.cpp.
-
- rmfull.rc
-
- Defines menus and keyboard accelerator.
-
- rmfullrc.h
-
- Header for rmfull.rc.
-
- rmstats.cpp
-
- Calculates and displays frame rate and other information.
-