home *** CD-ROM | disk | FTP | other *** search
/ The Net: Ultimate Internet Guide / WWLCD1.ISO / pc / directx2 / docs / d3d.txt < prev    next >
Encoding:
Text File  |  1996-06-01  |  8.3 KB  |  207 lines

  1. **********************
  2. ***                ***
  3. ***                ***
  4. *** Direct3D Notes ***
  5. ***                ***
  6. ***                ***
  7. **********************
  8.  
  9. Last updated  Apr 30, 1996
  10.  
  11.  
  12. PLEASE NOTE:
  13.  
  14. - IMPORTANT!!!
  15.   Any DirectDraw surface that is to be used as a Direct3DDevice, must be
  16.   created with the new DDSCAPS_3DDEVICE cap.  This is new behaviour and is
  17.   strictly enforced.
  18.  
  19. - dwSize fields are validated!
  20.   We must enforce size fields so that if we choose to grow the structure 
  21.   in the future, we can still allow old applications to run.
  22.   
  23.  
  24. Reality Lab name change
  25. =======================
  26.  
  27. The Reality Lab retained mode portion of the Direct3D API has been renamed
  28. to Direct3DRM.
  29.  
  30. The name changes affect both the COM interfaces and objects, and the types.
  31. The use of the interfaces in the examples have also been modified to be in
  32. the same style as all of DirectX.
  33. For example, where you would have used IRealityLabDevice*, you would now
  34. use LPDIRECT3DRMDEVICE.  The following list details all of the changes:
  35.  
  36. Old interface name       New name                 Usage
  37. ------------------       --------                 -----
  38. IRealityLab              IDirect3DRM              DIRECT3DRM
  39. IRealityLabDevice        IDirect3DRMDevice        DIRECT3DDEVICE
  40. IRealityLabObject        IDirect3DRMObject        DIRECT3DRMOBJECT
  41. IRealityLabViewport      IDirect3DRMViewport      DIRECT3DRMVIEWPORT
  42. IRealityLabFrame         IDirect3DRMFrame         DIRECT3DRMFRAME
  43. IRealityLabVisual        IDirect3DRMVisual        DIRECT3DRMVISUAL
  44. IRealityLabMesh          IDirect3DRMMesh          DIRECT3DRMMESH
  45. IRealityLabMeshBuilder   IDirect3DRMMeshBuilder   DIRECT3DRMMESHBUILDER
  46. IRealityLabFace          IDirect3DRMFace          DIRECT3DRMFACE
  47. IRealityLabLight         IDirect3DRMLight         DIRECT3DRMLIGHT
  48. IRealityLabTexture       IDirect3DRMTexture       DIRECT3DRMTEXTURE
  49. IRealityLabWrap          IDirect3DRMWrap          DIRECT3DRMWRAP
  50. IRealityLabMaterial      IDirect3DRMMaterial      DIRECT3DRMMATERIAL
  51. IRealityLabAnimation     IDirect3DRMAnimation     DIRECT3DRMANIMATION
  52. IRealityLabAnimationSet  IDirect3DRMAnimationSet  DIRECT3DRMANIMATIONSET
  53. IRealityLabUserVisual    IDirect3DRMUserVisual    DIRECT3DRMUSERVISUAL
  54. IRealityLabShadow        IDirect3DRMShadow        DIRECT3DRMSHADOW
  55. IRealityLabArray         IDirect3DRMArray         DIRECT3DRMOBJECTARRAY
  56. IRealityLabDeviceArray   IDirect3DRMDeviceArray   DIRECT3DRMDEVICEARRAY
  57. IRealityLabFaceArray     IDirect3DRMFaceArray     DIRECT3DRMFACEARRAY
  58. IRealityLabViewportArray IDirect3DRMViewportArray DIRECT3DRMVIEWPORTARRAY
  59. IRealityLabFrameArray    IDirect3DRMFrameArray    DIRECT3DRMFRAMEARRAY
  60. IRealityLabVisualArray   IDirect3DRMVisualArray   DIRECT3DRMVISUALARRAY
  61. IRealityLabPickedArray   IDirect3DRMPickedArray   DIRECT3DRMPICKEDARRAY
  62. IRealityLabLightArray    IDirect3DRMLightArray    DIRECT3DRMLIGHTARRAY
  63. IWinRealityLabDevice     IDirect3DRMWinDevice     DIRECT3DWINDEVICE
  64.  
  65. All structure names have been trivially renamed replacing RL with D3DRM.
  66.  
  67. The header files have also changed name:
  68.  
  69. irlwin.h becomes d3drmwin.h
  70. irlobj.h becomes d3drmobj.h
  71. irlapi.h becomes d3drm.h
  72. rltypes.h becomes d3drmdef.h
  73.  
  74.  
  75. Other notes
  76. ===========
  77.  
  78. There is now a new object type: the user visual (IDirect3DRMUserVisual).
  79. This allows the user to specify their own method for rendering a user
  80. defined visual.  For example you can use Direct3D's immediate mode to
  81. specify geometry and then render it yourself at the appropriate time.
  82. You provide Direct3DRM with a CanSee (is it visible?) and rendering methods.
  83. See the "uvis" sample for an example on how to use this new feature.
  84.  
  85. You can now control whether to Z buffer or not using the
  86. IDirect3DRMFrame::SetZbufferMode() API to control the use of Z buffering
  87. for a frame hierarchy.
  88.  
  89. You can now constrain the way lights affect a scene by constraining a lights
  90. effect to a particular frame hierarchy using the
  91. IDirect3DRMLight::SetEnableFrame() API.
  92.  
  93.  
  94. Direct3D
  95. ========
  96.  
  97. Direct3D's immediate mode types have been converted to hungarian notation.
  98.  
  99. The IDirect3DTexture interface has a new member: PaletteChanged.  This
  100. informs Direct3D that the application has modified the DirectDraw palette
  101. associated with the texture.
  102.  
  103.  
  104. Notes on the software emulation drivers
  105. =======================================
  106.  
  107. Wireframe and point fill methods have now been enabled in both the RAMP and
  108. RGB software drivers.  For both drivers points and lines can be rendered
  109. in all the modes that the filled polygons support.
  110.  
  111. Z Test primitives have been enabled. This is the ability to test a given
  112. list of primitives against the Z buffer.  This allows for fast bounding box
  113. rejection of occluded geometry.  This feature is used by the retained mode
  114. API for all meshes which contain more than a few hundred triangles.
  115.  
  116.  
  117. RAMP driver support
  118. ===================
  119. Optional Z buffering.
  120. Color key and stippled transparency.
  121. Mono interpolated rasterization only.
  122. Point sampled perspective correct textures.
  123. Flat and Gouraud shade modes.
  124.  
  125. Performance notes for the RAMP driver
  126. =====================================
  127. Texture mapping performance is heavily gated by the speed of memory.
  128. There are a number of ways of maximizing the cache performance of your
  129. textures.  The smaller the textures are, the better chance they have of being
  130. maintained in the secondary cache.  This is crucial for keeping performance
  131. high.  Also, changing the texture per primitive will thrash the cache.  Try
  132. and keep polygons grouped in order of the textures they use.
  133.  
  134. When using Z buffering and texturing, rendering your scene from front to
  135. back will increase performance.  The textured Z buffered primitives
  136. pre-test the Z buffer on a scanline basis.  If a scanline is hidden by a
  137. previously rendered polygon it is trivially rejected.  If this is the case, Z
  138. buffering performance can exceed non-Z performance.
  139.  
  140. The retained mode API automatically orders its scenes from front to back
  141. to facilitate this optimization.
  142.  
  143. In it often a good idea to use the D3DTest program to verify performance
  144. results with different drivers, especially where hardware is involved.
  145.  
  146.  
  147. RGB driver
  148. ==========
  149. The RGB driver now supports bilinear filtering for texturing.
  150.  
  151.  
  152.  
  153.  
  154. Capabilities
  155. ============
  156.  
  157. The D3DDEVICEDESC structure now includes two new members:
  158.  
  159. 1. dwDeviceRenderBitDepth describes the bit depths supported as a rendering
  160.    target.
  161.    
  162. 2. dwDeviceZBufferBitDepth describes the supported Z-buffer bit depths.
  163.  
  164.  
  165. Known Issues
  166. ============
  167. When using RGB software rasterisation, D3DRMMATERIALMODE_FROMFRAME
  168. does not work correctly if the object is unlit.
  169.  
  170. It is not currently possible to load data from resources if the code
  171. resides in a dll.
  172.  
  173. Background depth images do not double buffer correctly in the retained
  174. mode api (page flipping scenario).  Use IDirect3DRMViewport::ForceUpdate()
  175. to force the dirty region to be updated.
  176.  
  177. If you try to add a IDirect3DRMMesh to an IDirect3DRMMeshBuilder using
  178. AddMesh or indirectly via AddFrame (where the frame hierarchy contains
  179. mesh visuals), the mesh's texture coordinates (and vertex colors) do
  180. not get copied to the MeshBuilder.
  181.  
  182. Line rendering in software emulation does not take the
  183. D3DRENDERSTATE_LASTPIXEL render state into account.
  184.  
  185. IDirect3D::FindDevice() zeros the dwSize field in the return result.
  186.  
  187. The following issues is not made clear in the documentation:
  188. 1) SetOrientation overrides any previous shear or scale applied to a
  189. frame.
  190.  
  191. 2) Texture Transparency.  If the retained mode API has to sample down
  192. the colors used in a texture in order to, for example, palettize it,
  193. the colour you're using as the transparent color may get remapped to
  194. another close color and transparency will no longer work.  In order to
  195. stop this happening, pick a colour to use for transparency that is not
  196. close to any other colour in the texture.
  197.  
  198. The Matrox Millenium driver does not render correctly fullscreen
  199. unless Clear is called at least once.  Since the Millenium does not
  200. support texture mapping, this will not affect the types of application
  201. which do not use Clear.  A workaround for this issue is to call Clear
  202. in your application once before entering the rendering loop.
  203.  
  204. IDirect3DRMViewport::Configure is not functional in this release.  A
  205. workaround for this is to destroy the old viewport and create a new
  206. one at the new position and size.
  207.