home *** CD-ROM | disk | FTP | other *** search
/ Isometric Game Programming with DirectX 7.0 / Isometric Game Programming.iso / directx / dxf / doc / directx8 / directx8_docs_readme.txt < prev    next >
Encoding:
Text File  |  2000-11-03  |  38.1 KB  |  1,039 lines

  1. _______________________________________________________________________
  2.  
  3. DirectX 8.0 SDK Documentation Errata:
  4.  
  5. This section contains corrections to the following components of the DirectX SDK documentation:
  6.  
  7.   DirectX Audio (DirectMusic and DirectSound)
  8.   DirectMusic Producer
  9.   DirectX Graphics (C++)
  10.   DirectX Graphics (Visual Basic)
  11.   DirectX Input (C++)
  12.   DirectPlay
  13.   DirectShow
  14.  
  15. General
  16. =======
  17.  
  18. Refer to the Accessibility documentation in the Platform SDK for
  19. information on how to make your application accessible.
  20.  
  21.  
  22. DirectX Audio (DirectMusic and DirectSound)
  23. ===========================================
  24.  
  25. -------------------
  26. Sample Descriptions
  27. -------------------
  28. The path given for the C++ and Visual Basic samples is 
  29. incorrect. All paths on the sample description pages should 
  30. begin with "(SDK Root)\Samples", not "(SDK Root)\Sample".
  31.  
  32.  
  33. DirectMusic Producer
  34. =====================
  35.  
  36. Songs
  37. ------
  38. Some of the descriptions of script methods make reference 
  39. to segments and songs. Songs are not supported in this release.
  40.  
  41. Send Effects Topic
  42. ------------------
  43. The following statement in the Send Effects topic is incorrect:
  44.  
  45. "You can place a Send effect at the end of an audiopath 
  46. to route its audio output back to the beginning of any 
  47. other audiopath."
  48.  
  49. This should read as follows:
  50.  
  51. "You can place a Send effect in a buffer's effects chain 
  52. to route its audio output to any other buffer."
  53.  
  54.  
  55. DirectX Graphics (C++)
  56. ======================
  57.  
  58. ------------------
  59. Overview Topics
  60. ------------------
  61.  
  62. Topic: Architectural Overview for Direct3D
  63. ----------------------------
  64. The diagram for this topic is mislabeled. The texture values listed in the 
  65. "Pixel Operations" section on the bottom left hand corner should be listed
  66. as Tex0, Tex1, and Tex 2 instead of Tex0, Tex0, Tex0.
  67.  
  68.  
  69. Topic: Constant Value Syntax
  70. ----------------------------
  71. The example shown for the pixel shader is incorrect. A 
  72. valid example is:
  73.  
  74. asm
  75. {
  76.     ps.1.0
  77.     tex t0
  78.     mov r0, t0
  79. }
  80.  
  81.  
  82. Topic: Effect File Components
  83. -----------------------------
  84. The second technique in this topic is incorrect. The correct code is:
  85.  
  86. technique t1
  87. {
  88.     pass p0
  89.     {
  90.         Texture[0] = <tex0>;
  91.         
  92.         ColorOp[0] = SelectArg1;
  93.         ColorArg1[0] = Texture;
  94.         ColorOp[1] = Disable;  
  95.     }
  96.     
  97.     pass p1
  98.     {
  99.         AlphaBlendEnable = True;
  100.         SrcBlend = One;
  101.         DestBlend = One;
  102.  
  103.         Texture[1] = <tex1>;
  104.                
  105.         ColorOp[1] = SelectArg1;
  106.         ColorArg1[1] = Texture;
  107.         ColorOp[1] = Disable;  
  108.     }
  109. }
  110.  
  111.  
  112. Topic: Lost Devices and Retrieved Data
  113. --------------------------------------
  114. This topic does not apply to IDirect3DDevice8::UpdateTexture.
  115.  
  116.  
  117. Topic: Performance Optimizations
  118. --------------------------------
  119. Add the following tips:
  120.  
  121.   *  Minimize vertex buffer switches.
  122.   *  Use static vertex buffers where possible.
  123.   *  Use one big static vertex buffer per FVF for static 
  124.      objects, rather than one per object.
  125.   *  Do not copy to output registers unless necessary in 
  126.      shaders. For example:
  127.  
  128.        mad oD0, r1, c[2], c[3] 
  129.  
  130.      rather than:
  131.  
  132.        mad r1,c[2],c[3]
  133.        mov oD0, r1
  134.  
  135.  
  136. Topic: Setting Material Properties
  137. -----------------------------------
  138. The code sample does not initialize the emissive properties,
  139. which would be undefined. The emissive property needs to be 
  140. initalized before the material can be used. The code sample 
  141. below can be added to the code sample in this topic to make 
  142. it complete.
  143.  
  144. // Set the RGBA for emissive color.
  145. mat.Emissive.r = 0.0f;
  146. mat.Emissive.g = 0.0f;
  147. mat.Emissive.b = 0.0f;
  148. mat.Emissive.a = 0.0f;
  149.  
  150.  
  151. Topic: Using Dynamic Vertex and Index Buffers
  152. ---------------------------------------------
  153. The second usage style is missing a call to Unlock. The correct code for usage
  154. style 2 is below:
  155.  
  156. for loop()
  157. {
  158.     pVB->Lock(...D3DLOCK_DISCARD...); //Ensures that hardware doesn't 
  159.                                       //stall by returning a new 
  160.                                       //pointer.
  161.     Fill data (optimally 1000s of vertices/indices, no fewer) in pBuffer.
  162.     pBuffer->Unlock
  163.     for loop( 100s of times )
  164.     {
  165.         Change State
  166.         DrawPrimitive() or DrawIndexPrimitives() //Tens of primitives
  167.     }
  168. }
  169.  
  170.  
  171. Topic: Vertex Shader Architecture
  172. ---------------------------------------------
  173. The diagram for this topic is missing the homogenuous position as an output.
  174.  
  175.  
  176.  
  177. ---------------------
  178. Reference Section
  179. ---------------------
  180.  
  181. Topic: D3DCAPS8
  182. ------------------
  183. The description of Presentation Intervals should read:
  184. Bit mask of values representing what presentation swap 
  185. intervals are available.
  186.  
  187.  
  188. Topic: D3DFVF_TEXCOORDSIZEn
  189. ----------------------------
  190. The FVF declared in this section is invalid. The invalid 
  191. FVF need the flag D3DFVF_TEX2 added in order to be correct.
  192.  
  193. The correct FVF declaration would be:
  194.  
  195. DWORD dwFVF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE |
  196.               D3DFVF_SPECULAR | D3DFVF_TEX2 |
  197.               D3DFVF_TEXCOORDSIZE1(0) |  \\ Uses 1-D texture coordinates for
  198.                                          \\ texture coordinate set 1 (index 0).
  199.               D3DFVF_TEXCOORDSIZE2(1);   \\ And 2-D texture coordinates for 
  200.                                          \\ texture coordinate set 2 (index 1).
  201.  
  202.  
  203. Topic: D3DRENDERSTATETYPE
  204. --------------------------
  205. The code sample for D3DRS_TWEENFACTOR should be:
  206. pd3dDevice8->SetRenderState(D3DRS_TWEENFACTOR, *((DWORD*)&TweenFactor));
  207.  
  208. The last sentence for the description of D3DRS_ALPHABLENDENABLE 
  209. is incorrect and can be ignored.
  210.  
  211.  
  212. Topic: D3DXCOLOR Extensions
  213. ----------------------------
  214. The correct header for this topic is: D3dx8math.h
  215.  
  216.  
  217. Topic: D3DXLoadSurfaceFromFileA
  218. -------------------------------
  219. The following is missing from the remarks section:
  220. Writing to a non-level-zero surface will not cause the dirty rectangle to be 
  221. updated. If D3DXLoadSurfaceFromFileA is called and the surface was not already 
  222. dirty (this is unlikely under normal usage scenarios), the application needs to 
  223. explicitly call IDirect3DTexture8::AddDirtyRect on the surface.
  224.  
  225.  
  226. Topic: D3DXLoadSurfaceFromFileInMemory
  227. --------------------------------------
  228. The following is missing from the remarks section:
  229. Writing to a non-level-zero surface will not cause the dirty rectangle to be 
  230. updated. If D3DXLoadSurfaceFromFileInMemory is called and the surface was not 
  231. already dirty (this is unlikely under normal usage scenarios), the application 
  232. needs to explicitly call IDirect3DTexture8::AddDirtyRect on the surface.
  233.  
  234.  
  235. Topic: D3DXLoadSurfaceFromFileW
  236. -------------------------------
  237. The following is missing from the remarks section:
  238. Writing to a non-level-zero surface will not cause the dirty rectangle to be 
  239. updated. If D3DXLoadSurfaceFromFileW is called and the surface was not already 
  240. dirty (this is unlikely under normal usage scenarios), the application needs to 
  241. explicitly call IDirect3DSurface8::AddDirtyRect on the surface.
  242.  
  243.  
  244. Topic: D3DXLoadSurfaceFromMemory
  245. --------------------------------
  246. The following is missing from the remarks section:
  247. Writing to a non-level-zero surface will not cause the dirty rectangle to be
  248. updated. If D3DXLoadSurfaceFromMemory is called and the surface was not already 
  249. dirty (this is unlikely under normal usage scenarios), the application needs to 
  250. explicitly call IDirect3DTexture8::AddDirtyRect on the surface.
  251.  
  252.  
  253. Topic: D3DXLoadSurfaceFromResourceA
  254. -----------------------------------
  255. The following is missing from the remarks section:
  256. Writing to a non-level-zero surface will not cause the dirty rectangle to be 
  257. updated. If D3DXLoadSurfaceFromResourceA is called and the surface was not 
  258. already dirty (this is unlikely under normal usage scenarios), the application 
  259. needs to explicitly call IDirect3DTexture8::AddDirtyRect on the surface.
  260.  
  261.  
  262. Topic: D3DXLoadSurfaceFromResourceW
  263. -----------------------------------
  264. The following is missing from the remarks section:
  265. Writing to a non-level-zero surface will not cause the dirty rectangle to be 
  266. updated. If D3DXLoadSurfaceFromResourceW is called and the surface was not 
  267. already dirty (this is unlikely under normal usage scenarios), the application 
  268. needs to explicitly call IDirect3DTexture8.AddDirtyRect on the surface.
  269.  
  270.  
  271. Topic: D3DXLoadSurfaceFromSurface
  272. ---------------------------------
  273. The following is missing from the remarks section:
  274. Writing to a non-level-zero surface will not cause the dirty rectangle to be 
  275. updated. If D3DXLoadSurfaceFromSurface is called and the surface was not already
  276. dirty (this is unlikely under normal usage scenarios), the application needs to 
  277. explicitly call IDirect3DTexture8::AddDirtyRect on the surface.
  278.  
  279.  
  280. Topic: D3DXLoadVolumeFromMemory
  281. -------------------------------
  282. The following is missing from the remarks section:
  283. Writing to a non-level-zero surface of the volume texture will not cause the 
  284. dirty rectangle to be updated. If D3DXLoadVolumeFromMemory is called and the 
  285. texture was not already dirty (this is unlikely under normal usage scenarios), 
  286. the application needs to explicitly call IDirect3DVolumeTexture8::AddDirtyBox on
  287. the volume texture.
  288.  
  289.  
  290. Topic: D3DXLoadVolumeFromVolume
  291. -------------------------------
  292. The following is missing from the remarks section:
  293. Writing to a non-level-zero surface of the volume texture will not cause the 
  294. dirty rectangle to be updated. If D3DXLoadVolumeFromVolume is called and the 
  295. surface was not already dirty (this is unlikely under normal usage scenarios), 
  296. the application needs to explicitly call IDirect3DVolumeTexture8::AddDirtyBox on
  297. the surface.
  298.  
  299.  
  300. Topic: D3DXFilterCubeTexture
  301. ----------------------------
  302. The following is missing from the remarks section:
  303. Writing to a non-level-zero surface of the texture will not cause the dirty 
  304. rectangle to be updated. If D3DXFilterCubeTexture is called and the surface was 
  305. not already dirty (this is unlikely under normal usage scenarios), the 
  306. application needs to explicitly call IDirect3DCubeTexture8.AddDirtyRect on the 
  307. texture.
  308.  
  309.  
  310. Topic: D3DXFilterTexture
  311. ------------------------
  312. The following is missing from the remarks section:
  313. Writing to a non-level-zero surface of the texture will not cause the dirty 
  314. rectangle to be updated. If D3DXFilterTexture is called and the surface was not 
  315. already dirty (this is unlikely under normal usage scenarios), the application 
  316. needs to explicitly call IDirect3DTexture8::AddDirtyRect on the texture.
  317.  
  318.  
  319. Topic: D3DXFilterVolumeTexture
  320. ------------------------------
  321. The following is missing from the remarks section:
  322. Writing to a non-level-zero surface of the texture will not cause the dirty
  323. rectangle to be updated. If D3DXFilterVolumeTexture is called and the surface
  324. was not already dirty (this is unlikely under normal usage scenarios), the 
  325. application needs to explicitly call IDirect3DVolumeTexture8::AddDirtyBox on the
  326. texture.
  327.  
  328.  
  329. Topic: D3DXMATRIX Extensions
  330. -----------------------------
  331. The correct header for this topic is: D3dx8math.h
  332.  
  333.  
  334. Topic: D3DXMatrixPerspectiveOffCenterLH
  335. ---------------------------------------
  336. The correct description for the parameters are:
  337. pOut
  338.   [in, out] Pointer to the D3DXMATRIX structure that is the result of the operation.
  339. l
  340.   [in] Minimum x-value of view-volume.
  341. r
  342.   [in] Maximum x-value of view-volume.
  343. t
  344.   [in] Minimum y-value of view-volume.
  345. b
  346.   [in] Maximum y-value of view-volume.
  347. zn
  348.   [in] Minimum z-value of the view volume.
  349. zf
  350.   [in] Maximum z-value of the view volume.
  351.  
  352.  
  353. Topic: D3DXMatrixPerspectiveOffCenterRH
  354. ---------------------------------------
  355. The correct description for the parameters are:
  356. pOut
  357.   [in, out] Pointer to the D3DXMATRIX structure that is the result of the operation.
  358. l
  359.   [in] Minimum x-value of view-volume.
  360. r
  361.   [in] Maximum x-value of view-volume.
  362. t
  363.   [in] Minimum y-value of view-volume.
  364. b
  365.   [in] Maximum y-value of view-volume.
  366. zn
  367.   [in] Minimum z-value of the view volume.
  368. zf
  369.   [in] Maximum z-value of the view volume.
  370.  
  371.  
  372. Topic: D3DXPLANE Extensions
  373. ---------------------------
  374. The correct header for this topic is: D3dx8math.h
  375.  
  376.  
  377. Topic: D3DXQUATERNION Extensions
  378. --------------------------------
  379. The correct header for this topic is: D3dx8math.h
  380.  
  381.  
  382. Topic: D3DXVECTOR2 Extensions
  383. -----------------------------
  384. The correct header for this topic is: D3dx8math.h
  385.  
  386.  
  387. Topic: D3DXVECTOR3 Extensions
  388. ------------------------------
  389. The correct header for this topic is: D3dx8math.h
  390.  
  391.  
  392. Topic: D3DXVECTOR4 Extensions
  393. -----------------------------
  394. The correct header for this topic is: D3dx8math.h
  395.  
  396.  
  397. Topic: IDirect3DCubeTexture8::AddDirtyRect
  398. ------------------------------------------
  399. The following is missing from the remarks section:
  400. For performance reasons, dirty regions are only recorded for level zero of a 
  401. texture. For sub-levels, it is assumed that the corresponding (scaled) rectangle
  402. or box is also dirty. Dirty regions are automatically recorded when LockRect or
  403. LockBox is called without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. Also, the
  404. destination surface of a CopyRects call is marked dirty.
  405.  
  406.  
  407. Topic: IDirect3DCubeTexture8::LockRect
  408. --------------------------------------
  409. The following is missing from the remarks section:
  410. For performance reasons, dirty regions are only recorded for level zero of a
  411. texture. Dirty regions are automatically recorded when LockRect is called
  412. without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. See 
  413. IDirect3DDevice8::UpdateTexture for more information.
  414.  
  415.  
  416. Topic: IDirect3DDevice8::CopyRects
  417. ----------------------------------
  418. The following is missing from the remarks section:
  419. If the destination surface is a level-zero of a texture, then it will be marked
  420. dirty. See IDirect3DDevice8::UpdateTexture and IDirect3DTexture8::AddDirtyRect 
  421. for more details.
  422.  
  423.  
  424. Topic: IDirect3DDevice8::DrawPrimitiveUP
  425. ----------------------------------------
  426. The following comment was added to the remarks section:
  427. The vertex data passed to DrawPrimitiveUP does not need to persist after the
  428. call. Direct3D completes its access to that data prior to returning from the
  429. call.
  430.  
  431.  
  432. Topic: IDirect3DDevice8::DrawIndexedPrimitiveUP
  433. -----------------------------------------------
  434. The following comment was added to the remarks section:
  435. The vertex data passed to DrawIndexPrimitiveUP does not need to persist after
  436. the call. Direct3D completes its access to that data prior to returning from the
  437. call.
  438.  
  439.  
  440. Topic: IDirect3DDevice8::SetStreamSource
  441. ----------------------------------------
  442. Disregard the following sentence in the Remarks section:
  443.  
  444. When the texture is no longer needed, set the texture at 
  445. the appropriate stage to NULL.
  446.  
  447.  
  448. Topic: IDirect3DDevice8::UpdateTexture
  449. --------------------------------------
  450. Disregard the following sentence in the Remarks section:
  451. When the texture is no longer needed, set the texture at the appropriate stage
  452. to NULL.
  453.  
  454. The followin is missing from the remarks section:
  455. For performance reasons, dirty regions are only recorded for level zero of a
  456. texture. For sub-levels, it is assumed that the corresponding (scaled) rectangle
  457. or box is also dirty. Dirty regions are automatically recorded when LockRect or
  458. LockBox is called without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. Also, the
  459. destination surface of a CopyRects call is marked dirty.
  460.  
  461.  
  462. Topic: IDirect3DSurface8::LockRect
  463. ----------------------------------
  464. The following is missing from the remarks section:
  465. For performance reasons, dirty regions are only recorded for level zero of a
  466. texture. Dirty regions are automatically recorded when LockRect is called
  467. without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. See 
  468. IDirect3DDevice8::UpdateTexture for more information.
  469.  
  470.  
  471. Topic: IDirect3DTexture8::AddDirtyRect
  472. --------------------------------------
  473. The following is missing from the remarks section:
  474. For performance reasons, dirty regions are only recorded for level zero of a 
  475. texture. For sub-levels, it is assumed that the corresponding (scaled) rectangle
  476. or box is also dirty. Dirty regions are automatically recorded when LockRect or
  477. LockBox is called without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. Also, the
  478. destination surface of a CopyRects call is marked dirty.
  479.  
  480.  
  481. Topic: IDirect3DTexture8::LockRect
  482. ----------------------------------
  483. The following is missing from the remarks section:
  484. For performance reasons, dirty regions are only recorded for level zero of a
  485. texture. Dirty regions are automatically recorded when LockRect is called
  486. without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. See 
  487. IDirect3DDevice8::UpdateTexture for more information.
  488.  
  489.  
  490. Topic: IDirect3DVolume8::LockBox
  491. --------------------------------
  492. The following is missing from the remarks section:
  493. For performance reasons, dirty regions are only recorded for level zero of a
  494. texture. Dirty regions are automatically recorded when LockBox is called
  495. without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. See 
  496. IDirect3DDevice8::UpdateTexture for more information.
  497.  
  498.  
  499. Topic: IDirect3DVolumeTexture8::AddDirtyBox
  500. -------------------------------------------
  501. The following is missing from the remarks section:
  502. For performance reasons, dirty regions are only recorded for level zero of a 
  503. texture. For sub-levels, it is assumed that the corresponding (scaled) rectangle
  504. or box is also dirty. Dirty regions are automatically recorded when LockRect or
  505. LockBox is called without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. Also, the
  506. destination surface of a CopyRects call is marked dirty.
  507.  
  508.  
  509. Topic: IDirect3DVolumeTexture8::LockBox
  510. ---------------------------------------
  511. The following is missing from the remarks section:
  512. For performance reasons, dirty regions are only recorded for level zero of a
  513. texture. Dirty regions are automatically recorded when LockBox is called
  514. without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. See 
  515. IDirect3DDevice8::UpdateTexture for more information.
  516.  
  517.  
  518. Topic: mad - Pixel Shader
  519. -------------------------
  520. The remarks section is incorrect. The correct remarks section is below.
  521. This instruction performs a multiply-accumulate operation. It takes the first 
  522. two arguments, multiplies them together, and adds them to the remaining 
  523. input/source argument, and places that into the result register. 
  524.  
  525. This instruction performs the multiply-add based on the following formula.
  526. tSrc0 * tSrc1 + tSrc2
  527.  
  528. The following example shows how this instruction might be used.
  529. mad  d, s0, s1, s2;    d = s0 * s1 + s2
  530.  
  531.  
  532.  
  533. DirectX Graphics (Visual Basic)
  534. ===============================
  535.  
  536. ---------------
  537. Overview Topics
  538. ---------------
  539.  
  540.  
  541. Topic: Constant Value Syntax
  542. ----------------------------
  543. The example shown the pixel shader is incorrect. A valid sample is shown below:
  544.  
  545. asm
  546. {
  547.     ps.1.0
  548.     tex t0
  549.     mov r0, t0
  550. }
  551.  
  552.  
  553. Topic: Lost Devices and Retrieved Data
  554. --------------------------------------
  555. This topic does not apply to IDirect3DDevice8::UpdateTexture.
  556.  
  557.  
  558. Topic: Setting Material Properties
  559. ----------------------------------
  560. The code sample does not initialize the emissive properties, 
  561. which would be undefined. The emissive property needs to 
  562. be initalized before the material can be used. The code 
  563. sample below can be added to the code sample in this topic to
  564. make it complete.
  565.  
  566. ' Set the RGBA for emissive color.
  567. mat.Emissive.r = 0#
  568. mat.Emissive.g = 0#
  569. mat.Emissive.b = 0#
  570. mat.Emissive.a = 0#
  571.  
  572.  
  573. Topic: Using Dynamic Vertex and Index Buffers
  574. ---------------------------------------------
  575. The second usage style is missing a call to Unlock. The correct code for usage
  576. style 2 is below:
  577.  
  578. for loop()
  579. {
  580.     pVB->Lock(...D3DLOCK_DISCARD...); //Ensures that hardware doesn't 
  581.                                       //stall by returning a new 
  582.                                       //pointer.
  583.     Fill data (optimally 1000s of vertices/indices, no fewer) in pBuffer.
  584.     pBuffer->Unlock
  585.     for loop( 100s of times )
  586.     {
  587.         Change State
  588.         DrawPrimitive() or DrawIndexPrimitives() //Tens of primitives
  589.     }
  590. }
  591.  
  592.  
  593. ------------------
  594. Reference Section
  595. ------------------
  596.  
  597. Topic: CONST_D3DRENDERSTATETYPE
  598. --------------------------------
  599. The last sentence for the description of D3DRS_ALPHABLENDENABLE 
  600. is incorrect and can be ignored.
  601.  
  602. Topic: D3DCAPS8
  603. ---------------
  604. The description of Presentation Intervals should read:
  605.   Bit mask of values representing what presentation swap 
  606.   intervals are available.
  607.  
  608.  
  609. Topic: D3DX8.LoadSurfaceFromFile
  610. --------------------------------
  611. The following is missing from the remarks section:
  612. Writing to a non-level-zero surface will not cause the dirty rectangle to be 
  613. updated. If D3DX8.LoadSurfaceFromFileA is called and the surface was not already 
  614. dirty (this is unlikely under normal usage scenarios), the application needs to 
  615. explicitly call Direct3DTexture8.AddDirtyRect on the surface.
  616.  
  617.  
  618. Topic: D3DX8.LoadSurfaceFromFileInMemory
  619. ----------------------------------------
  620. The following is missing from the remarks section:
  621. Writing to a non-level-zero surface will not cause the dirty rectangle to be 
  622. updated. If D3DX8.LoadSurfaceFromFileInMemory is called and the surface was not 
  623. already dirty (this is unlikely under normal usage scenarios), the application 
  624. needs to explicitly call Direct3DTexture8.AddDirtyRect on the surface.
  625.  
  626.  
  627. Topic: D3DX8.LoadSurfaceFromMemory
  628. ----------------------------------
  629. The following is missing from the remarks section:
  630. Writing to a non-level-zero surface will not cause the dirty rectangle to be
  631. updated. If D3DXLoadSurfaceFromMemory is called and the surface was not already 
  632. dirty (this is unlikely under normal usage scenarios), the application needs to 
  633. explicitly call Direct3DTexture8.AddDirtyRect on the surface.
  634.  
  635.  
  636. Topic: D3DXLoadSurfaceFromResource
  637. ----------------------------------
  638. The following is missing from the remarks section:
  639. Writing to a non-level-zero surface will not cause the dirty rectangle to be 
  640. updated. If D3DX8.LoadSurfaceFromResource is called and the surface was not 
  641. already dirty (this is unlikely under normal usage scenarios), the application 
  642. needs to explicitly call Direct3DTexture8.AddDirtyRect on the surface.
  643.  
  644.  
  645. Topic: D3DX8.LoadSurfaceFromSurface
  646. -----------------------------------
  647. The following is missing from the remarks section:
  648. Writing to a non-level-zero surface will not cause the dirty rectangle to be 
  649. updated. If D3DX8.LoadSurfaceFromSurface is called and the surface was not
  650. already dirty (this is unlikely under normal usage scenarios), the application 
  651. needs to explicitly call Direct3DTexture8.AddDirtyRect on the surface.
  652.  
  653.  
  654. Topic: D3DX8.LoadVolumeFromMemory
  655. ---------------------------------
  656. The following is missing from the remarks section:
  657. Writing to a non-level-zero surface of the volume texture will not cause the 
  658. dirty rectangle to be updated. If D3DX8.LoadVolumeFromMemory is called and the 
  659. texture was not already dirty (this is unlikely under normal usage scenarios), 
  660. the application needs to explicitly call Direct3DVolumeTexture8.AddDirtyBox on
  661. the volume texture.
  662.  
  663.  
  664. Topic: D3DX8.LoadVolumeFromVolume
  665. ---------------------------------
  666. The following is missing from the remarks section:
  667. Writing to a non-level-zero surface of the volume texture will not cause the 
  668. dirty rectangle to be updated. If D3DX8.LoadVolumeFromVolume is called and the 
  669. surface was not already dirty (this is unlikely under normal usage scenarios), 
  670. the application needs to explicitly call Direct3DVolumeTexture8.AddDirtyBox on
  671. the surface.
  672.  
  673.  
  674. Topic: D3DXMatrixPerspectiveOffCenterLH
  675. ---------------------------------------
  676. The correct description for the parameters are:
  677. pOut
  678.   [in, out] Pointer to the D3DXMATRIX structure that is the result of the operation.
  679. l
  680.   [in] Minimum x-value of view-volume.
  681. r
  682.   [in] Maximum x-value of view-volume.
  683. t
  684.   [in] Minimum y-value of view-volume.
  685. b
  686.   [in] Maximum y-value of view-volume.
  687. zn
  688.   [in] Minimum z-value of the view volume.
  689. zf
  690.   [in] Maximum z-value of the view volume.
  691.  
  692.  
  693. Topic: D3DXMatrixPerspectiveOffCenterRH
  694. ---------------------------------------
  695. The correct description for the parameters are:
  696. pOut
  697.   [in, out] Pointer to the D3DXMATRIX structure that is the result of the operation.
  698. l
  699.   [in] Minimum x-value of view-volume.
  700. r
  701.   [in] Maximum x-value of view-volume.
  702. t
  703.   [in] Minimum y-value of view-volume.
  704. b
  705.   [in] Maximum y-value of view-volume.
  706. zn
  707.   [in] Minimum z-value of the view volume.
  708. zf
  709.   [in] Maximum z-value of the view volume.
  710.  
  711.  
  712. Topic: Direct3DCubeTexture8.AddDirtyRect
  713. ----------------------------------------
  714. The following is missing from the remarks section:
  715. For performance reasons, dirty regions are only recorded for level zero of a 
  716. texture. For sub-levels, it is assumed that the corresponding (scaled) rectangle
  717. or box is also dirty. Dirty regions are automatically recorded when LockRect or
  718. LockBox is called without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. Also, the
  719. destination surface of a CopyRects call is marked dirty.
  720.  
  721.  
  722. Topic: Direct3DCubeTexture8.LockRect
  723. ------------------------------------
  724. The following is missing from the remarks section:
  725. For performance reasons, dirty regions are only recorded for level zero of a
  726. texture. Dirty regions are automatically recorded when LockRect is called
  727. without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. See 
  728. Direct3DDevice8.UpdateTexture for more information.
  729.  
  730.  
  731. Topic: Direct3DDevice8.CopyRects
  732. --------------------------------
  733. The following is missing from the remarks section:
  734. If the destination surface is a level-zero of a texture, then it will be marked
  735. dirty. See Direct3DDevice8.UpdateTexture and Direct3DTexture8.AddDirtyRect for
  736. more details.
  737.  
  738.  
  739. Topic: Direct3DDevice8.SetMaterial
  740. ----------------------------------
  741. The Error Codes section is incorrect. The correct wording for 
  742. this section is:
  743.  
  744. If the method fails, an error is raised and Err.Number can 
  745. be set to D3DERR_INVALIDCALL. For information on trapping 
  746. errors, see the Microsoft(r) Visual Basic(r) Error Handling topic.
  747.  
  748.  
  749. Topic: Direct3DDevice8.UpdateTexture
  750. --------------------------------------------------------------------------------
  751. The followin is missing from the remarks section:
  752. For performance reasons, dirty regions are only recorded for level zero of a
  753. texture. For sub-levels, it is assumed that the corresponding (scaled) rectangle
  754. or box is also dirty. Dirty regions are automatically recorded when LockRect or
  755. LockBox is called without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. Also, the
  756. destination surface of a CopyRects call is marked dirty.
  757.  
  758.  
  759. Topic: Direct3DSurface8.LockRect
  760. --------------------------------
  761. The following is missing from the remarks section:
  762. For performance reasons, dirty regions are only recorded for level zero of a
  763. texture. Dirty regions are automatically recorded when LockRect is called
  764. without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. See 
  765. Direct3DDevice8.UpdateTexture for more information.
  766.  
  767.  
  768. Topic: Direct3DTexture8.AddDirtyRect
  769. ------------------------------------
  770. The following is missing from the remarks section:
  771. For performance reasons, dirty regions are only recorded for level zero of a 
  772. texture. For sub-levels, it is assumed that the corresponding (scaled) rectangle
  773. or box is also dirty. Dirty regions are automatically recorded when LockRect or
  774. LockBox is called without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. Also, the
  775. destination surface of a CopyRects call is marked dirty.
  776.  
  777.  
  778. Topic: Direct3DTexture8.AddDirtyRect
  779. ------------------------------------
  780. The following is missing from the remarks section:
  781. For performance reasons, dirty regions are only recorded for level zero of a 
  782. texture. For sub-levels, it is assumed that the corresponding (scaled) rectangle
  783. or box is also dirty. Dirty regions are automatically recorded when LockRect or
  784. LockBox is called without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. Also, the
  785. destination surface of a CopyRects call is marked dirty.
  786.  
  787.  
  788. Topic: Direct3DTexture8.LockRect
  789. --------------------------------
  790. The following is missing from the remarks section:
  791. For performance reasons, dirty regions are only recorded for level zero of a
  792. texture. Dirty regions are automatically recorded when LockRect is called
  793. without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. See 
  794. Direct3DDevice8.UpdateTexture for more information.
  795.  
  796.  
  797. Topic: Direct3DVolume8.AddDirtyRect
  798. -----------------------------------
  799. The following is missing from the remarks section:
  800. For performance reasons, dirty regions are only recorded for level zero of a 
  801. texture. For sub-levels, it is assumed that the corresponding (scaled) rectangle
  802. or box is also dirty. Dirty regions are automatically recorded when LockRect or
  803. LockBox is called without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. Also, the
  804. destination surface of a CopyRects call is marked dirty.
  805.  
  806.  
  807. Topic: Direct3DVolume8.LockBox
  808. ------------------------------
  809. The following is missing from the remarks section:
  810. For performance reasons, dirty regions are only recorded for level zero of a
  811. texture. Dirty regions are automatically recorded when LockBox is called
  812. without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. See 
  813. Direct3DDevice8.UpdateTexture for more information.
  814.  
  815.  
  816. Topic: Direct3DVolumeTexture8.AddDirtyBox
  817. -----------------------------------------
  818. The following is missing from the remarks section:
  819. For performance reasons, dirty regions are only recorded for level zero of a 
  820. texture. For sub-levels, it is assumed that the corresponding (scaled) rectangle
  821. or box is also dirty. Dirty regions are automatically recorded when LockRect or
  822. LockBox is called without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. Also, the
  823. destination surface of a CopyRects call is marked dirty.
  824.  
  825.  
  826. Topic: Direct3DVolumeTexture8.LockBox
  827. -------------------------------------
  828. The following is missing from the remarks section:
  829. For performance reasons, dirty regions are only recorded for level zero of a
  830. texture. Dirty regions are automatically recorded when LockBox is called
  831. without D3DLOCK_NO_DIRTY_UPDATE or D3DLOCK_READONLY. See 
  832. Direct3DDevice8.UpdateTexture for more information.
  833.  
  834.  
  835. Topic: mad - Pixel Shader
  836. -------------------------
  837. The remarks section is incorrect. The correct remarks section is below.
  838. This instruction performs a multiply-accumulate operation. It takes the first 
  839. two arguments, multiplies them together, and adds them to the remaining 
  840. input/source argument, and places that into the result register. 
  841.  
  842. This instruction performs the multiply-add based on the following formula.
  843. tSrc0 * tSrc1 + tSrc2
  844.  
  845. The following example shows how this instruction might be used.
  846. mad  d, s0, s1, s2;    d = s0 * s1 + s2
  847.  
  848.  
  849.  
  850. DirectX Input (C++)
  851. ===============================
  852.  
  853. ---------------
  854. Reference Topics
  855. ---------------
  856.  
  857.  
  858. Topic: IDirectInput8::EnumDevices
  859. ----------------------------------
  860. The declared type for the lpCallback parameter is incorrectly identified as LPDIENUMCALLBACK. It should be LPDIENUMDEVICESCALLBACK.
  861.  
  862.  
  863. Topic: IDirectInput8::GetProperty
  864. ----------------------------------
  865. The following additional properties have been added.
  866.  
  867. DIPROP_VIDPID 
  868. Read-only device property that retrieves the vendor ID and product ID of a HID device. This property is of type DIPROPDWORD and contains both values. These two WORD values are combined in the    DIPROPDWORD.dwData field so the values should be extracted as follows:
  869.  
  870.         wVendorID  = LOWORD( DIPROPDWORD.dwData );
  871.         wProductID = HIWORD( DIPROPDWORD.dwData );
  872.  
  873. This property applies to the entire device, rather than to any particular object, so the DIPROPHEADER.dwHow field must be DIPH_DEVICE.
  874.  
  875. DIPROP_TYPENAME
  876. A predefined property which retrieves the type name of a device. For most game controllers this is the registry key name under REGSTR_PATH_JOYOEM from which static device settings may be retrieved, but predefined joystick types have special names consisting of a "#" character followed by a character dependent upon the type. This value may not be available for all devices. 
  877.  
  878. DIPROP_CALIBRATION 
  879. A predefined property which allows the application to access the information that DirectInput uses to manipulate axes that require calibration. This property exists primarily for control panel-type applications. Normal applications should have no need to deal with calibration information.
  880.  
  881. You can access the calibration mode property for a particular axis by setting the DIPROPHEADER.dwHow field of the DIPROPHEADER structure to DIPH_BYID or to DIPH_BYOFFSET and setting the DIPROPHEADER.dwObj field to the object id or offset (respectively).
  882.  
  883. Control panel applications that set new calibration data must also invoke the IDirectInputJoyConfig::SendNotify method to notify other applications of the change in calibration.
  884.  
  885.  
  886. Topic: IDirectInput8::SetProperty
  887. ----------------------------------
  888. The following additional property has been added.
  889.  
  890. DIPROP_CALIBRATION 
  891. A predefined property which allows the application to access the information that DirectInput uses to manipulate axes that require calibration. This property exists primarily for control panel-type applications. Normal applications should have no need to deal with calibration information.
  892.  
  893. You can access the calibration mode property for a particular axis by setting the DIPROPHEADER.dwHow field of the DIPROPHEADER structure to DIPH_BYID or to DIPH_BYOFFSET and setting the DIPROPHEADER.dwObj field to the object id or offset (respectively).
  894.  
  895. Control panel applications that set new calibration data must also invoke the IDirectInputJoyConfig::SendNotify method to notify other applications of the change in calibration.
  896.  
  897.  
  898.  
  899. DirectPlay
  900. ===========
  901.  
  902. ----------------------
  903. Overview Topics
  904. ----------------------
  905.  
  906. Cancelling Outstanding Sends
  907. ----------------------------
  908.   Applications should call CancelAsyncOperation to cancel all
  909.   outstanding Sends prior to calling Close or doing a final 
  910.   Release call on the IDirectPlay8Client, IDirectPlay8Server, or
  911.   IDirectPlay8Peer interfaces.  Failing to do so will cause 
  912.   unpredictable results.
  913.  
  914.  
  915. Client-Server Sessions
  916. ----------------------
  917.   When the server closes a session, it gets DPN_MSGID_DESTROY_PLAYER 
  918.   for all connected players. Because the server knows that it
  919.   is disconnecting, this is normal behavior, and the dwReason member 
  920.   of the associated structure will be set to
  921.   DPNDESTROYPLAYERREASON_NORMAL.The
  922.   DPNDESTROYPLAYERREASON_SESSIONTERMINATED value is only set 
  923.   for unexpected disconnections.
  924.  
  925.  
  926. TCP/IP Port Settings
  927. --------------------
  928.  
  929.   Application developers that choose to override the default DirectPlay
  930.   8 dialog for TCP/IP are strongly urged to implement a solution that
  931.   allows the user to override the port used for a connect or 
  932.   enumeration.  One possible solution is to allow users to follow 
  933.   the host name with colon and then the port, as implemented by the
  934.   default DirectPlay 8 TCP/IP dialog (i.e. "host.domain.com:8090" ).
  935.   Another possible solution would be to add another field to the UI
  936.   that allows the user to enter a port.
  937.  
  938. Using the Netmon Parser
  939. -----------------------
  940.   To parse ports other than the default DirectPlay ports,
  941.   create two new DWORD values under the
  942.   HKEY_CURRENT_USER\Microsoft\DirectPlay\Parsers key
  943.   
  944.     MinUserPort=x
  945.     MaxUserPort=y
  946.   
  947.   x and y define the range you want to parse in addition 
  948.   to the default DirectPlay ports. They can be the same value if 
  949.   you only need one custom port.
  950.  
  951. -----------------
  952. Reference Topics
  953. -----------------
  954.  
  955. Connect() methods
  956. ------------------
  957.   After a call to Connect() succeeds, all outstanding Enumerations will 
  958.   be canceled with the return of DPNERR_USERCANCEL.
  959.  
  960. SetApplicationDescription Methods
  961. ---------------------------------
  962.   You cannot set the dwMaxPlayers parameter to a smaller value 
  963.   than the current number of players in the session.
  964.  
  965.  
  966. IDirectPlay8Peer::CancelAsyncOperation IDirectPlay8Client::CancelAsyncOperation
  967. -----------------------------------------
  968.   DPN_CANCELCONNECT and DPN_CANCELSEND should be DPNCANCEL_CONNECT
  969.   and DPNCANCEL_SEND.
  970.  
  971.  
  972.  
  973.  
  974. DirectShow
  975. ===========
  976.  
  977. -----------------
  978. Reference Topics
  979. -----------------
  980.  
  981. Media Locator
  982. --------------
  983.  
  984.   The description of the SFN_VALIDATEF_USELOCAL flag is incorrect.  It 
  985.   should read:
  986.  
  987.     Always use a local file, even if a version of the file exists 
  988.     on the network.
  989.  
  990.   For more information, see IMediaLocator::FindMediaFile and 
  991.   IRenderEngine::SetSourceNameValidation.
  992.  
  993. DV Muxer Filter
  994. -----------------------
  995.   The following sentence is incorrect:
  996.  
  997.     If no audio pins are connected, the filter produces 
  998.     DV frames with no audio.
  999.     
  1000.   It should read:
  1001.     If no audio pins are connected, the output 
  1002.     contains the audio data from the incoming DV frames.
  1003.     This might be silence, or valid audio data.
  1004.  
  1005. DirectX Media Objects
  1006. ----------------------
  1007.  
  1008.   The descriptions of the IMediaObject::GetInputType and GetOutputType
  1009.   methods are incomplete.  They should include the following 
  1010.   information:
  1011.  
  1012.     The pmt parameter can be NULL.  In that case, the method 
  1013.         returns    S_OK if the type index is in range.  Otherwise, 
  1014.         it returns DMO_E_NO_MORE_ITEMS or another error code.
  1015.  
  1016.  
  1017.  
  1018. DirectShow (Visual Basic)
  1019. =========================
  1020.  
  1021.   DirectShow Visual Basic documentation is presently tied in closely 
  1022.   with the C++ documentation.  Information on DirectShow Visual 
  1023.   Basic programming, including use of DirectShow Editing 
  1024.   Services, is located exclusively in an appendix to the 
  1025.   C++ document.  There is no separate Visual Basic Documentation.
  1026.  
  1027. MSWebDVD
  1028. =========================
  1029.   The documentation states that you can change the size of the 
  1030.   video display through the methods GetClipVideoRect and 
  1031.   GetVideoSize.  This is incorrect. The size of the clipped 
  1032.   video rectangle is changed through the SetClipVideoRect 
  1033.   method. The size of the native video obviously cannot be modified.
  1034.  
  1035. CBaseInputPin
  1036. =========================
  1037. The reference documentation lists the following methods which must be overridden when implementing this class: BeginFlush, EndFlush, and Receive. Since CBaseInputPin derives from CBasePin, you must also override certain CBasePin methods as well, including CBasePin::CheckMediaTypes and CBasePin::GetMediaType. See the reference page for CBasePin for more details.
  1038.  
  1039.