Sleeping Wombat Graphic API  1.010
swGraphicAPI
BufferInitData.h
1 #pragma once
2 
3 #include "swCommonLib/Common/MemoryChunk.h"
4 #include "swCommonLib/Common/RTTR.h"
5 
8 
9 #include <assert.h>
10 
13 {
14  const uint8* Data;
15  uint32 NumElements;
16  uint32 ElementSize;
17  rttr::type DataType;
18  ResourceUsage Usage;
19 
21  : DataType( rttr::type::get_by_name( "" ) ) // Set invalid type.
22  {
24  NumElements = 1;
25  ElementSize = 0;
26  Data = nullptr;
27  }
28 };
29 
30 
33 {
34  BufferInfo CreateBufferInfo() const;
35 };
36 
37 
38 
41 {
44 
46  {
47  Topology = PrimitiveTopology::PRIMITIVE_TOPOLOGY_POINTLIST;
48  }
49 
50  BufferInfo CreateBufferInfo() const;
51 };
52 
55 {
58 
60  {
61  Topology = PrimitiveTopology::PRIMITIVE_TOPOLOGY_POINTLIST;
62  Use4BytesIndex = false;
63  }
64 
65  BufferInfo CreateBufferInfo() const;
66 };
67 
68 
69 // ================================ //
70 //
71 inline BufferInfo ConstantBufferInitData::CreateBufferInfo() const
72 {
73  BufferInfo info;
75  info.ElementSize = ElementSize;
76  info.NumElements = NumElements;
77  info.DataType = DataType;
78  info.Topology = PrimitiveTopology::PRIMITIVE_TOPOLOGY_POINTLIST;
79  info.Usage = Usage;
80  info.Use4BytesIndex = false;
81 
82  // Constant buffers must be 16 bytes aligned.
83  assert( ElementSize % 16 == 0 );
84 
85  return info;
86 }
87 
88 // ================================ //
89 //
90 inline BufferInfo VertexBufferInitData::CreateBufferInfo() const
91 {
92  BufferInfo info;
94  info.ElementSize = ElementSize;
95  info.NumElements = NumElements;
96  info.DataType = DataType;
97  info.Topology = Topology;
98  info.Usage = Usage;
99  info.Use4BytesIndex = false;
100  info.VertexLayout = VertexLayout;
101 
102  return info;
103 }
104 
105 // ================================ //
106 //
107 inline BufferInfo IndexBufferInitData::CreateBufferInfo() const
108 {
109  BufferInfo info;
111  info.ElementSize = ElementSize;
112  info.NumElements = NumElements;
113  info.DataType = DataType;
114  info.Topology = Topology;
115  info.Usage = Usage;
117 
118  return info;
119 }
Definition: ResourcePtr.h:116
BufferType BufferType
Vertex, index or constant buffer.
Definition: IBuffer.h:41
uint32 NumElements
Number of elements of type BufferDescriptor::DataType.
Definition: IBuffer.h:37
ResourcePtr< ShaderInputLayout > VertexLayout
[Optional] Layout of single vertex in buffer. You can add this layout to enable additional informatio...
Definition: BufferInitData.h:42
bool Use4BytesIndex
Definition: IBuffer.h:57
Index buffer initialization data.
Definition: BufferInitData.h:54
Pozawala GPU na zapis i odczyt.
Descriptor of buffer.
Definition: IBuffer.h:35
rttr::type DataType
[Optional] Type of single element in buffer.
Definition: IBuffer.h:39
rttr::type DataType
[Optional] Type of single element in buffer.
Definition: BufferInitData.h:17
ResourceUsage
Specyfikuje typ dostępu do pamięci danego zasobu.
Definition: GraphicAPIConstants.h:72
Buffer initialization data.
Definition: BufferInitData.h:12
uint32 ElementSize
Size of single element in buffer.
Definition: IBuffer.h:38
const uint8 * Data
Pointer must be valid only in time of creation.
Definition: BufferInitData.h:14
ResourceUsage Usage
Usage of resource by graphic card.
Definition: IBuffer.h:40
Vertex buffer initialization data.
Definition: BufferInitData.h:40
ResourcePtr< ShaderInputLayout > VertexLayout
Definition: IBuffer.h:52
PrimitiveTopology Topology
[Optional] Topology of verticies.
Definition: BufferInitData.h:43
PrimitiveTopology Topology
[Optional] Topology of verticies.
Definition: BufferInitData.h:56
bool Use4BytesIndex
Index buffer consists of 4 bytes instead of 2 bytes indicies.
Definition: BufferInitData.h:57
PrimitiveTopology Topology
Definition: IBuffer.h:46
PrimitiveTopology
Topologia wierzchołków.
Definition: GraphicAPIConstants.h:84
Constant buffer initialization data.
Definition: BufferInitData.h:32