OROCHI
 
Loading...
Searching...
No Matches
GxPrimitiveContext.h
Go to the documentation of this file.
1//===========================================================================
11//===========================================================================
12#pragma once
13
14GX_CORE_NAMESPACE_BEGIN()
15
16class GxPrimitiveModel;
17//===========================================================================
20//===========================================================================
22{
23 //-------------------------------------------------------------
25 //-------------------------------------------------------------
27public:
28 GX_RTTI_CLASS(GxPrimitiveContext, GxClassBase)
29 // GxClassBase継承クラス用禁止宣言
31 // new, delete定義
32 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::RENDER)
33
34 friend class GxPrimitiveManager;
35
37 //-------------------------------------------------------------
39 //-------------------------------------------------------------
41public:
44
45private:
48
50 constexpr void terminate(void) {}
51
53 //-----------------------------------------------------------
55 //-----------------------------------------------------------
57private:
59 constexpr u32 getPacketCount(void) const { return _packetCount; }
61 constexpr u32 getVertexCount(void) const { return _vertexCount; }
62
64 //-------------------------------------------------------------
66 //-------------------------------------------------------------
68public:
70 void setScreenSize(const GxSize& size, f32 priority);
72 void setScissorRect(const GxRect& rect, f32 priority, u32 viewFlag = 0xFFFFFFFF);
74 void setRenderTarget(GxRenderTexture* pRenderTarget, f32 priority, u32 viewFlag = 0xFFFFFFFF);
76 void copyRenderTargetToTexture(u32 index, GxRenderTexture* pTexture, u32 dstMipLevel, const GxRect* pSrcRect, const GxPoint2* pDstPoint, f32 priority, u32 viewFlag = 0xFFFFFFFF);
78 void clear(const GxColor& clearColor, f32 priority, u32 viewFlag = 0xFFFFFFFF);
79
81 GxPrimitiveVertex* draw2DLineList(u32 vertexCount, const GxPrimitiveMaterial& material, f32 priority);
83 GxPrimitiveVertex* draw2DLineStrip(u32 vertexCount, const GxPrimitiveMaterial& material, f32 priority);
85 GxPrimitiveVertex* draw2DTriangleList(u32 vertexCount, const GxPrimitiveMaterial& material, f32 priority);
87 GxPrimitiveVertex* draw2DTriangleStrip(u32 vertexCount, const GxPrimitiveMaterial& material, f32 priority);
89 GxPrimitiveVertex* draw2DTriangleFan(u32 vertexCount, const GxPrimitiveMaterial& material, f32 priority);
91 GxPrimitiveVertex* draw2DQuadList(u32 vertexCount, const GxPrimitiveMaterial& material, f32 priority);
92
94 GX_FORCE_INLINE void draw2DPoint(const GxVector3& position, const GxColor color, const GxPrimitiveMaterial& material);
96 GX_FORCE_INLINE void draw2DLineF(const GxVector3& position0, const GxVector3& position1, const GxColor color, const GxPrimitiveMaterial& material);
98 GX_FORCE_INLINE void draw2DLineG(const GxVector3& position0, const GxVector3& position1, const GxColor color0, const GxColor color1, const GxPrimitiveMaterial& material);
100 GX_FORCE_INLINE void draw2DPolyLineF(const GxVector3& position0, const GxVector3& position1, u32 width, const GxColor color, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material);
102 void draw2DPolyLineG(const GxVector3& position0, const GxVector3& position1, u32 width, const GxColor color0, const GxColor color1, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material);
104 GX_FORCE_INLINE void draw2DTriangleF(const GxVector3& position0, const GxVector3& position1, const GxVector3& position2, const GxColor color, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material);
106 void draw2DTriangleG(const GxVector3& position0, const GxVector3& position1, const GxVector3& position2, const GxColor color0, const GxColor color1, const GxColor color2, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material);
108 GX_FORCE_INLINE void draw2DRectF(const GxRectF& rect, f32 z, const GxColor color, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material);
110 GX_FORCE_INLINE void draw2DRectF(const GxRectF& rect, f32 posZ, f32 z, const GxColor color, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material);
112 void draw2DRectG(const GxRectF& rect, f32 z, const GxColor color0, const GxColor color1, const GxColor color2, const GxColor color3, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material);
114 void draw2DRectG(const GxRectF& rect, f32 posZ, f32 z, const GxColor color0, const GxColor color1, const GxColor color2, const GxColor color3, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material);
116 GX_FORCE_INLINE void draw2DRectTextureF(const GxRectF& rect, f32 z, const GxColor color, const GxFloat2& uv0, const GxFloat2& uv1, const GxPrimitiveMaterial& material, const GxFloat2& uvSecond0 = GxFloat2(0.f, 0.f), const GxFloat2& uvSecond1 = GxFloat2(1.f, 1.f));
118 GX_FORCE_INLINE void draw2DRectTextureG(const GxRectF& rect, f32 z, const GxColor color0, const GxColor color1, const GxColor color2, const GxColor color3, const GxFloat2& uv0, const GxFloat2& uv1, const GxPrimitiveMaterial& material, const GxFloat2& uvSecond0 = GxFloat2(0.f, 0.f), const GxFloat2& uvSecond1 = GxFloat2(1.f, 1.f));
120 GX_FORCE_INLINE void draw2DRectTextureG(const GxRectF& rect, f32 posZ, f32 z, const GxColor color0, const GxColor color1, const GxColor color2, const GxColor color3, const GxFloat2& uv0, const GxFloat2& uv1, const GxPrimitiveMaterial& material, const GxFloat2& uvSecond0 = GxFloat2(0.f, 0.f), const GxFloat2& uvSecond1 = GxFloat2(1.f, 1.f));
121
123 GX_FORCE_INLINE void draw2DRectF(const GxRectF& rect, f32 z, const GxVector2& rotateCenter, const f32 rotateRadian, const GxColor color, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material);
125 void draw2DRectG(const GxRectF& rect, f32 z, const GxVector2& rotateCenter, const f32 rotateRadian, const GxColor color0, const GxColor color1, const GxColor color2, const GxColor color3, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material);
127 GX_FORCE_INLINE void draw2DRectTextureF(const GxRectF& rect, f32 z, const GxVector2& rotateCenter, const f32 rotateRadian, const GxColor color, const GxFloat2& uv0, const GxFloat2& uv1, const GxPrimitiveMaterial& material, const GxFloat2& uvSecond0 = GxFloat2(0.f, 0.f), const GxFloat2& uvSecond1 = GxFloat2(1.f, 1.f));
129 GX_FORCE_INLINE void draw2DRectTextureG(const GxRectF& rect, f32 z, const GxVector2& rotateCenter, const f32 rotateRadian, const GxColor color0, const GxColor color1, const GxColor color2, const GxColor color3, const GxFloat2& uv0, const GxFloat2& uv1, const GxPrimitiveMaterial& material, const GxFloat2& uvSecond0 = GxFloat2(0.f, 0.f), const GxFloat2& uvSecond1 = GxFloat2(1.f, 1.f));
131 GX_FORCE_INLINE void draw2DRectTextureG(const GxRectF& rect, f32 posZ, f32 z, const GxVector2& rotateCenter, const f32 rotateRadian, const GxColor color0, const GxColor color1, const GxColor color2, const GxColor color3, const GxFloat2& uv0, const GxFloat2& uv1, const GxPrimitiveMaterial& material, const GxFloat2& uvSecond0 = GxFloat2(0.f, 0.f), const GxFloat2& uvSecond1 = GxFloat2(1.f, 1.f));
132
134 GX_FORCE_INLINE void draw2DCircleF(const GxVector3& position, f32 radius, const GxColor color, u32 divide, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material);
136 void draw2DCircleG(const GxVector3& position, f32 radius, const GxColor color0, const GxColor color1, u32 divide, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material);
138 GX_FORCE_INLINE void draw2DFanF(const GxVector3& position, f32 radius, f32 startRadian, f32 deltaRadian, const GxColor color, u32 divide, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material);
140 void draw2DFanG(const GxVector3& position, f32 radius, f32 startRadian, f32 deltaRadian, const GxColor color0, const GxColor color1, u32 divide, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material);
142 GX_FORCE_INLINE void draw2DArrowF(const GxVector3& position0, const GxVector3& position1, const GxColor color, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material, f32 arrowRate=0.2f, f32 arrowRadius=DEGREE_TO_RADIAN(30.0f));
144 GX_FORCE_INLINE void draw2DArrowG(const GxVector3& position0, const GxVector3& position1, const GxColor color0, const GxColor color1, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material, f32 arrowRate=0.2f, f32 arrowRadius=DEGREE_TO_RADIAN(30.0f));
145
147 void draw2DCustom(const GxPrimitiveMaterial& material, f32 priority);
148
150 GxPrimitiveVertex* draw3DLineList(u32 vertexCount, const GxPrimitiveMaterial& material, const GxVector3& priorityPoint, u32 viewFlag = 0xFFFFFFFF);
152 GxPrimitiveVertex* draw3DLineStrip(u32 vertexCount, const GxPrimitiveMaterial& material, const GxVector3& priorityPoint, u32 viewFlag = 0xFFFFFFFF);
154 GxPrimitiveVertex* draw3DTriangleList(u32 vertexCount, const GxPrimitiveMaterial& material, const GxVector3& priorityPoint, u32 viewFlag = 0xFFFFFFFF);
156 GxPrimitiveVertex* draw3DTriangleStrip(u32 vertexCount, const GxPrimitiveMaterial& material, const GxVector3& priorityPoint, u32 viewFlag = 0xFFFFFFFF);
158 GxPrimitiveVertex* draw3DTriangleFan(u32 vertexCount, const GxPrimitiveMaterial& material, const GxVector3& priorityPoint, u32 viewFlag = 0xFFFFFFFF);
160 GxPrimitiveVertex* draw3DQuadList(u32 vertexCount, const GxPrimitiveMaterial& material, const GxVector3& priorityPoint, u32 viewFlag = 0xFFFFFFFF);
161
163 GX_FORCE_INLINE void draw3DPoint(const GxVector3& position, const GxColor color, const GxPrimitiveMaterial& material, u32 viewFlag = 0xFFFFFFFF);
165 GX_FORCE_INLINE void draw3DLineF(const GxVector3& position0, const GxVector3& position1, const GxColor color, const GxPrimitiveMaterial& material, u32 viewFlag = 0xFFFFFFFF);
167 GX_FORCE_INLINE void draw3DLineG(const GxVector3& position0, const GxVector3& position1, const GxColor color0, const GxColor color1, const GxPrimitiveMaterial& material, u32 viewFlag = 0xFFFFFFFF);
169 GX_FORCE_INLINE void draw3DTriangleF(const GxVector3& position0, const GxVector3& position1, const GxVector3& position2, const GxColor color, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material, u32 viewFlag = 0xFFFFFFFF);
171 void draw3DTriangleG(const GxVector3& position0, const GxVector3& position1, const GxVector3& position2, const GxColor color0, const GxColor color1, const GxColor color2, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material, u32 viewFlag = 0xFFFFFFFF);
173 GX_FORCE_INLINE void draw3DQuadF(const GxVector3& position0, const GxVector3& position1, const GxVector3& position2, const GxVector3& position3, const GxColor color, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material, u32 viewFlag = 0xFFFFFFFF);
175 void draw3DQuadG(const GxVector3& position0, const GxVector3& position1, const GxVector3& position2, const GxVector3& position3, const GxColor color0, const GxColor color1, const GxColor color2, const GxColor color3, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material, u32 viewFlag = 0xFFFFFFFF);
177 GX_FORCE_INLINE void draw3DQuadTextureF(const GxVector3& position0, const GxVector3& position1, const GxVector3& position2, const GxVector3& position3, const GxColor color, GxFloat2* pUvArray, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material, GxFloat2* pUvArraySecond = nullptr, u32 viewFlag = 0xFFFFFFFF);
179 void draw3DQuadTextureG(const GxVector3& position0, const GxVector3& position1, const GxVector3& position2, const GxVector3& position3, GxColor* pColorArray, GxFloat2* pUvArray, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material, GxFloat2* pUvArraySecond = nullptr, u32 viewFlag = 0xFFFFFFFF);
181 GX_FORCE_INLINE void draw3DArrowF(const GxVector3& position0, const GxVector3& position1, const GxColor color, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material, f32 arrowRate=0.2f, f32 arrowRadian=DEGREE_TO_RADIAN(30.0f), u32 viewFlag = 0xFFFFFFFF);
183 void draw3DArrowG(const GxVector3& position0, const GxVector3& position1, const GxColor color0, const GxColor color1, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material, f32 arrowRate=0.2f, f32 arrowRadian=DEGREE_TO_RADIAN(30.0f), u32 viewFlag = 0xFFFFFFFF);
185 GX_FORCE_INLINE void draw3DMatrix(const GxMatrixAffine& matrix, f32 size, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material, f32 arrowRate=0.2f, f32 arrowRadius=DEGREE_TO_RADIAN(30.0f), u32 viewFlag = 0xFFFFFFFF);
187 GX_FORCE_INLINE void draw3DMatrix(const GxVector3& position, f32 size, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material, f32 arrowRate=0.2f, f32 arrowRadius=DEGREE_TO_RADIAN(30.0f), u32 viewFlag = 0xFFFFFFFF);
189 GX_FORCE_INLINE void draw3DSphere(const GxShapeSphere& sphere, const GxColor color, u32 divide, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material, u32 viewFlag = 0xFFFFFFFF);
191 GX_FORCE_INLINE void draw3DSphere(const GxVector3& center, f32 radius, const GxColor color, u32 divide, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material, u32 viewFlag = 0xFFFFFFFF);
193 void draw3DSphere(const GxMatrixAffine& matrix, f32 radius, const GxColor color, u32 divide, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material, u32 viewFlag = 0xFFFFFFFF);
195 GX_FORCE_INLINE void draw3DBox(const GxShapeBox& box, const GxColor color, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material, u32 viewFlag = 0xFFFFFFFF);
197 void draw3DBox(const GxMatrixAffine& matrix, const GxVector3& extent, const GxColor color, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial& material, u32 viewFlag = 0xFFFFFFFF);
198
200 void draw3DCustom(const GxPrimitiveMaterial& material, const GxVector3& priorityPoint, u32 viewFlag = 0xFFFFFFFF);
201
202private:
204 GX_FORCE_INLINE GxPrimitiveManager::GxPacket* allocatePacket(void);
206 GX_FORCE_INLINE void* allocateCommand(u32 size = sizeof(GxPrimitiveManager::GxCommandDraw));
208 GX_FORCE_INLINE GxPrimitiveVertex* allocateVertexBuffer(u32 vertexCount);
209
211 void reset(void);
212
214 GxPrimitiveManager::GxPacket* buildPacket(b32 isSort);
216 void mergeSort(GxPrimitiveManager::GxPacket* pDst, GxPrimitiveManager::GxPacket* pSrc, s32 left, s32 right);
217
219 //-------------------------------------------------------------
221 //-------------------------------------------------------------
223private:
224 GxPrimitiveManager* _pManager;
225 u32 _packetCount;
226 u32 _vertexCount;
227
228 GxPrimitiveManager::GxPacket* _pPacketTop;
229 GxPrimitiveManager::GxPacket* _pPacketBlock;
230 u32 _packetCountBlock;
231
232 void* _pCommandBlock;
233 u32 _commandSizeBlock;
234
235 GxPrimitiveVertex* _pVertexBlock;
236 u32 _vertexCountBlock;
237
238 static const GxVector3 LINE_PRIMITIVE_OFFSET_2D_XY;
239 static const f32 LINE_PRIMITIVE_OFFSET_2D_F;
240
242};
243
244GX_CORE_NAMESPACE_END()
245
246#include "GxPrimitiveContext.inl"
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
PRIMITIVE_FILL_MODE
塗りつぶしモード
Definition GxPrimitive.h:31
@ RENDER
レンダリング
オブジェクト基底クラス
Definition GxBase.h:88
プリミティブの並列発行を管理します。
Definition GxPrimitiveContext.h:22
プリミティブの描画発行単位を管理します。
Definition GxPrimitiveManager.h:23
void terminate(void)
終了関数
Definition GxPrimitiveManager.cpp:410
virtual b32 initialize(GxAllocator *pAllocator, u32 commandBufferSize, u32 vertexBufferSize, u32 indexBufferSize, RENDER_TYPE type, u32 maxProjection2DId, b32 use32bitIndex=false)
初期化関数
Definition GxPrimitiveManager.cpp:281
テクスチャクラス
Definition GxRenderTexture.h:19
箱形状クラス
Definition GxShape.h:333
球形状クラス
Definition GxShape.h:240
Definition GxColor.h:21
2次元浮動小数点数クラス
Definition GxStruct.h:22
アフィン変換行列(行優先)
Definition GxMatrix.h:330
座標
Definition GxStruct.h:867
描画コマンド(アライメントの関係で、サイズは16の倍数である必要がある!)
Definition GxPrimitiveManager.h:92
描画パケット
Definition GxPrimitiveManager.h:136
プリミティブマテリアル
Definition GxPrimitive.h:103
プリミティブ頂点
Definition GxPrimitive.h:20
実数矩形
Definition GxStruct.h:1100
矩形
Definition GxStruct.h:951
サイズ
Definition GxStruct.h:730
2次元ベクトル
Definition GxVector.h:34
3次元ベクトル
Definition GxVector.h:245
32bitブーリアン
Definition GxDefine.h:173