> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# IncrementShapeDmaReadPointer

> IncrementShapeDmaReadPointer

# IncrementShapeDmaReadPointer

遞增讀取指標。

## 語法

```cpp theme={null}
void IncrementShapeDmaReadPointer(  
         SHAPE_DMA_CONTEXT* context  
)  
```

### 參數

*context*   \_Inout\_\
類型: [SHAPE\_DMA\_CONTEXT\*](/zh-TW/reference/audio/shapedmacontext/structs/shape_dma_context)

[SHAPE\_DMA\_CONTEXT](/zh-TW/reference/audio/shapedmacontext/structs/shape_dma_context) 結構的指標。

### 傳回值

類型: void

## 備註

到達框架結尾時，此函式會更新框架並將指標設為零。

若要計算 DMA 緩衝區的大小，請使用下列公式:

```cpp theme={null}
fullBufferSizeInBytes = 128 * 4 * numChannels * numFrames  
```

讀取和寫入指標的遞增方式如下:

```cpp theme={null}
readPointer = (readPointer + 1) % numFrames 

writePointer = (writePointer + 1) % numFrames  
```

音訊緩衝區內的位址計算方式如下:

```cpp theme={null}
readAddress = audioBuffer + (128 * 4 * ((readPointer * numChannels) + channel))   

writeAddress = audioBuffer + (128 * 4 * ((writePointer * numChannels) + channel))  
```

只要確保您的音訊緩衝區夠大，並以固定間隔 (與緩衝區大小相關) 串流資料，就可以避免直接記憶體存取 (DMA) 命令遭到封鎖。例如，如果您一次串流四個硬體框架，請確保緩衝區中有這些框架的某個倍數 (至少以八個框架進行雙重緩衝)，讓硬體可以在遊戲的讀取指標之前寫入。或者，您也可以在提交下一個流程圖之前強制清空緩衝區 (取用資料、更新 DMA 讀取指標，然後提交流程圖)。如需詳細資訊，請參閱 [SHAPE 概觀](/zh-TW/build/console-features/audio/overviews/shape-overview)中的[封鎖的命令](/zh-TW/build/console-features/audio/overviews/shape-overview#ID4EBGAC)。

您可以將流程圖提交為持續性或非持續性處理。持續性流程圖在處理後會保持常駐，以便在讀取和寫入指標前進並更新其他內容資訊之後，於下一個框架中重複其處理。

## 需求

**標頭:** shapedmacontext.h

**支援的平台:** XBOX One 系列主機和 XBOX Series 主機

## 另請參閱

[ShapeDmaContext](/zh-TW/reference/audio/shapedmacontext/shapedmacontext_members)


## Related topics

- [IncrementShapeDmaReadPointer](/reference/audio/shapedmacontext/functions/incrementshapedmareadpointer.md)
- [ShapeDmaContext](/reference/audio/shapedmacontext/shapedmacontext_members.md)
- [IncrementShapeDmaWritePointer](/reference/audio/shapedmacontext/functions/incrementshapedmawritepointer.md)
- [GetShapeDmaReadPointer](/reference/audio/shapedmacontext/functions/getshapedmareadpointer.md)
- [SetShapeDmaReadPointer](/reference/audio/shapedmacontext/functions/setshapedmareadpointer.md)
