Home ID3D11Device::CreateBuffer method
Post
Cancel

ID3D11Device::CreateBuffer method

ID3D11Device::CreateBuffer (d3d11.h) - Win32 apps

버퍼를 생성합니다 (vertex buffer, index buffer, 또는 shader-constant buffer).

Syntax

1
2
3
4
5
HRESULT CreateBuffer(
  [in]            const D3D11_BUFFER_DESC      *pDesc,
  [in, optional]  const D3D11_SUBRESOURCE_DATA *pInitialData,
  [out, optional] ID3D11Buffer                 **ppBuffer
);

Parameters

[in] pDesc

Type: const D3D11_BUFFER_DESC*

버퍼를 기술한 D3D11_BUFFER_DESC 구조체에 대한 포인터입니다.

[in, optional] pInitialData

Type: const D3D11_SUBRESOURCE_DATA*

초기화 데이터를 기술한 D3D11_SUBRESOURCE_DATA 구조체에 대한 포인터입니다. 공간만 할당하려면 nullptr를 사용하세요 (예외적으로 usage flag가 D3D11_USAGE_IMMUTABLE인 경우 nullptr로 설정할 수 없습니다).

pInitialData에 어떠한 것도 전달하지 않는다면, 버퍼에 대한 메모리의 초기 내용은 정의되지 않습니다. 이 경우, 리소스를 읽기 전에 다른 방법으로 버퍼의 내용을 채워넣어야 합니다.

[out, optional] ppBuffer

Type: ID3D11Buffer**

생성된 버퍼 객체에 대한 ID3D11Buffer 인터페이스에 대한 포인터입니다. 다른 입력 매개변수가 유효한지 검사하려면 이 매개변수를 nullptr로 설정하세요 (S_FALSE는 통과를 나타냅니다).

Return value

Type: HRESULT

이 메소드는 버퍼를 만들기 위해 필요한 메모리가 부족한 경우, E_OUTOFMEMORY를 반환합니다. 다른 가능한 반환값을 보려면, Direct3D 11 Return Codes 문서를 보세요.

Remarks

예제 코드를 보려면, How to: Create a Vertex BufferHow to: Create an Index Buffer 또는 How to: Create a Constant Buffer 문서를 보세요.

constant buffer에 대해서는, D3D11_BUFFER_DESCByteWidth를 반드시 16의 배수로 설정해야 하며, D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT 보다 작거나 같게 설정해야 합니다.

Windows 8과 이후 버전에서 사용 가능한 Direct3D 11.1 런타임은 CreateBuffer에 대해 다음과 같은 새로운 기능을 제공합니다.

셰이더가 접근 가능한 최대 constant buffer 크기보다 더 큰 constant buffer를 생성할 수 있습니다 (4096 32-bit * 4 component constants - 64KB). 파이프라인에 constant buffer를 바인드할 때, 4096 상수 제한 내에 맞는, 셰이더가 접근 가능한 버퍼의 범위를 정의할 수 있습니다.

Windows 8과 이후 버전에서 사용 가능한 Direct3D 11.1 런타임은 feature level 9.1, 9.2, 그리고 9.3에 대해 이 기능을 에뮬레이트합니다. 그러므로, 이 기능은 feature level 9.1, 9.2, 그리고 9.3에서 지원됩니다.

이 기능은 feature level 10 이상의 새 드라이버에서 항상 사용할 수 있습니다.

Direct3D 11.1보다 예전 버전의 런타임에서는, CreateBuffer를 호출해 4096보다 큰 constant buffer 생성을 요청하는 것은 실패합니다.

This post is licensed under CC BY 4.0 by the author.