14GX_CORE_NAMESPACE_BEGIN()
24 auto* GX_RESTRICT pVertex = draw2DLineStrip(2, material, position._z);
28 pVertex[0]._position = position + LINE_PRIMITIVE_OFFSET_2D_XY;
29 pVertex[0]._color = color;
30 pVertex[1]._position = pVertex[0]._position +
GxVector3(1.0f, 0.0f, 0.0);
31 pVertex[1]._color = color;
32 GX_TRACE(GX_TRACE_CATEGORY_CORE,
"2D POINT プリミティブは仮実装です。サポートまでご連絡ください。");
45 draw2DLineG(position0, position1, color, color, material);
62 pVertex[0]._position = position0 + LINE_PRIMITIVE_OFFSET_2D_XY;
63 pVertex[0]._color = color0;
64 pVertex[1]._position = position1 + LINE_PRIMITIVE_OFFSET_2D_XY;
65 pVertex[1]._color = color1;
80 draw2DPolyLineG(position0, position1, width, color, color, fillMode, material);
94 draw2DTriangleG(position0, position1, position2, color, color, color, fillMode, material);
107 draw2DRectG(rect, z, color, color, color, color, fillMode, material);
121 draw2DRectG(rect, positionZ, z, color, color, color, color, fillMode, material);
136 draw2DRectG(rect, z, rotateCenter, rotateRadian, color, color, color, color, fillMode, material);
153 draw2DRectTextureG(rect, 0.0f, z, color, color, color, color, uv0, uv1, material, uvSecond0, uvSecond1);
171 draw2DRectTextureG(rect, 0.0f, z, rotateCenter, rotateRadian, color, color, color, color, uv0, uv1, material, uvSecond0, uvSecond1);
188void GxPrimitiveContext::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,
const GxFloat2& uvSecond1)
190 draw2DRectTextureG(rect, 0.0f, z, color0, color1, color2, color3, uv0, uv1, material, uvSecond0, uvSecond1);
208void GxPrimitiveContext::draw2DRectTextureG(
const GxRectF& rect, f32 positionZ, 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,
const GxFloat2& uvSecond1)
215 auto left = rect.
_left;
216 auto top = rect.
_top;
220 pVertex[0]._position =
GxFloat3(left, top, positionZ);
221 pVertex[0]._color = color0;
222 pVertex[0]._texCoord = uv0;
223 pVertex[0]._texCoordSecond = uvSecond0;
224 pVertex[1]._position =
GxFloat3(right, top, positionZ);
225 pVertex[1]._color = color1;
227 pVertex[1]._texCoordSecond =
GxFloat2(uvSecond1.
_u, uvSecond0.
_v);
228 pVertex[2]._position =
GxFloat3(right, bottom, positionZ);
229 pVertex[2]._color = color2;
230 pVertex[2]._texCoord = uv1;
231 pVertex[2]._texCoordSecond = uvSecond1;
232 pVertex[3]._position =
GxFloat3(left, bottom, positionZ);
233 pVertex[3]._color = color3;
235 pVertex[3]._texCoordSecond =
GxFloat2(uvSecond0.
_u, uvSecond1.
_v);
255void GxPrimitiveContext::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,
const GxFloat2& uvSecond1)
257 draw2DRectTextureG(rect, 0.0f, z, rotateCenter, rotateRadian, color0, color1, color2, color3, uv0, uv1, material, uvSecond0, uvSecond1);
277void GxPrimitiveContext::draw2DRectTextureG(
const GxRectF& rect, f32 positionZ, 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,
const GxFloat2& uvSecond1)
283 auto left = rect.
_left - rotateCenter.
_x;
284 auto top = rect.
_top - rotateCenter.
_y;
285 auto right = rect.
_right - rotateCenter.
_x;
286 auto bottom = rect.
_bottom - rotateCenter.
_y;
300 pVertex[0]._position =
GxFloat3(leftTopX, leftTopY, positionZ);
301 pVertex[0]._color = color0;
302 pVertex[0]._texCoord = uv0;
303 pVertex[0]._texCoordSecond = uvSecond0;
304 pVertex[1]._position =
GxFloat3(rightTopX, rightTopY, positionZ);
305 pVertex[1]._color = color1;
307 pVertex[1]._texCoordSecond =
GxFloat2(uvSecond1.
_u, uvSecond0.
_v);
308 pVertex[2]._position =
GxFloat3(rightBottomX, rightBottomY, positionZ);
309 pVertex[2]._color = color2;
310 pVertex[2]._texCoord = uv1;
311 pVertex[2]._texCoordSecond = uvSecond1;
312 pVertex[3]._position =
GxFloat3(leftBottomX, leftBottomY, positionZ);
313 pVertex[3]._color = color3;
315 pVertex[3]._texCoordSecond =
GxFloat2(uvSecond0.
_u, uvSecond1.
_v);
330 draw2DCircleG(position, radius, color, color, divide, fillMode, material);
347 draw2DFanG(position, radius, startRadian, deltaRadian, color, color, divide, fillMode, material);
362 draw2DArrowG(position0, position1, color, color, fillMode, material, arrowRate, arrowRadius);
378 draw2DLineG(position0, position1, color0, color1, material);
402 draw2DTriangleG(position1, vL, vR, color1, color2, color2, fillMode, material);
414 auto* GX_RESTRICT pVertex =
draw3DLineStrip(1, material, position, viewFlag);
418 pVertex[0]._position = position;
419 pVertex[0]._color = color;
433 draw3DLineG(position0, position1, color, color, material, viewFlag);
447 auto* GX_RESTRICT pVertex =
draw3DLineStrip(2, material, (position0 + position1) * 0.5f, viewFlag);
451 pVertex[0]._position = position0;
452 pVertex[0]._color = color0;
453 pVertex[1]._position = position1;
454 pVertex[1]._color = color1;
470 draw3DTriangleG(position0, position1, position2, color, color, color, fillMode, material, viewFlag);
486 draw3DQuadG(position0, position1, position2, position3, color, color, color, color, fillMode, material, viewFlag);
504 GxColor colorArray[4] = {color, color, color, color};
505 draw3DQuadTextureG(position0, position1, position2, position3, colorArray, pUvArray, fillMode, material, pUvArraySecond, viewFlag);
521 draw3DArrowG(position0, position1, color, color, fillMode, material, arrowRate, arrowRadian, viewFlag );
618 auto* pNewPacket = _pManager->allocatePacketBlock();
623 _pPacketTop = pNewPacket;
629 *ppNext = pNewPacket;
634 _packetCountBlock = 0;
635 _pPacketBlock = pNewPacket;
644 return &_pPacketBlock[_packetCountBlock++];
652void* GxPrimitiveContext::allocateCommand(u32 size)
657 if( GxPrimitiveManager::COMMAND_BLOCK_SIZE < _commandSizeBlock + size )
660 auto* pBuffer = _pManager->allocateCommandBlock();
663 _pCommandBlock = pBuffer;
664 _commandSizeBlock = 0;
672 auto* pCommand = _pCommandBlock;
673 _pCommandBlock = GX_POINTER_ADD(_pCommandBlock, size);
674 _commandSizeBlock += size;
686 static const u32 vertexCountLimit = GxPrimitiveManager::VERTEX_BLOCK_SIZE /
sizeof(
GxPrimitiveVertex);
688 if( vertexCount > vertexCountLimit )
690 GX_ASSERT(vertexCount <= vertexCountLimit,
"プリミティブの頂点数が最大値(%d)を超えています。最大値を超えないように分割して描画してください。", vertexCountLimit);
694 if( _vertexCountBlock + vertexCount > vertexCountLimit )
697 auto* pBuffer = _pManager->allocateVertexBlock();
700 _pVertexBlock = pBuffer;
701 _vertexCountBlock = 0;
709 auto* pVertex = _pVertexBlock;
711 _pVertexBlock += vertexCount;
712 _vertexCount += vertexCount;
713 _vertexCountBlock += vertexCount;
718GX_CORE_NAMESPACE_END()
PRIMITIVE_FILL_MODE
塗りつぶしモード
Definition GxPrimitive.h:31
static GX_FORCE_INLINE T getRoundUpFast(T value, size_t alignment)
数値切り上げ(高速版 ※2のべき乗指定)
Definition GxMath.h:537
static GX_FORCE_INLINE f32 getFastCos(const f32 radian)
余弦を取得(FPU, f32)
Definition GxMath.h:216
static GX_FORCE_INLINE f32 getFastSin(const f32 radian)
正弦を取得(FPU, f32)
Definition GxMath.h:209
@ _16
16byteアライメント
Definition GxMemory.h:54
プリミティブの並列発行を管理します。
Definition GxPrimitiveContext.h:22
GxPrimitiveVertex * draw3DLineStrip(u32 vertexCount, const GxPrimitiveMaterial &material, const GxVector3 &priorityPoint, u32 viewFlag=0xFFFFFFFF)
3Dラインストリップ
Definition GxPrimitiveContext.cpp:923
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))
2Dテクスチャ付き四角形(Gradation)
Definition GxPrimitiveContext.inl:188
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)
3D四角形(Gradation)
Definition GxPrimitiveContext.cpp:1172
GX_FORCE_INLINE void draw2DRectF(const GxRectF &rect, f32 z, const GxColor color, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial &material)
2D四角形(Flat)
Definition GxPrimitiveContext.inl:105
GX_FORCE_INLINE void draw2DLineF(const GxVector3 &position0, const GxVector3 &position1, const GxColor color, const GxPrimitiveMaterial &material)
2Dライン(Flat)
Definition GxPrimitiveContext.inl:43
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)
2D扇形(Gradation)
Definition GxPrimitiveContext.cpp:816
GX_FORCE_INLINE void draw3DBox(const GxShapeBox &box, const GxColor color, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial &material, u32 viewFlag=0xFFFFFFFF)
3D箱(形状指定)
Definition GxPrimitiveContext.inl:603
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))
2Dベクトル(Flat)
Definition GxPrimitiveContext.inl:360
GX_FORCE_INLINE void draw3DLineF(const GxVector3 &position0, const GxVector3 &position1, const GxColor color, const GxPrimitiveMaterial &material, u32 viewFlag=0xFFFFFFFF)
3Dライン(Flat)
Definition GxPrimitiveContext.inl:431
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)
3Dテクスチャ付き四角形(Flat)
Definition GxPrimitiveContext.inl:502
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)
2D三角形(Gradation)
Definition GxPrimitiveContext.cpp:482
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)
3D三角形(Flat)
Definition GxPrimitiveContext.inl:468
GX_FORCE_INLINE void draw2DLineG(const GxVector3 &position0, const GxVector3 &position1, const GxColor color0, const GxColor color1, const GxPrimitiveMaterial &material)
2Dライン(Gradation)
Definition GxPrimitiveContext.inl:56
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)
3Dテクスチャ付き四角形(Gradation)
Definition GxPrimitiveContext.cpp:1246
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)
3Dベクトル(Gradation)
Definition GxPrimitiveContext.cpp:1344
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)
3Dマトリクス
Definition GxPrimitiveContext.inl:534
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)
3D四角形(Flat)
Definition GxPrimitiveContext.inl:484
GX_FORCE_INLINE void draw3DLineG(const GxVector3 &position0, const GxVector3 &position1, const GxColor color0, const GxColor color1, const GxPrimitiveMaterial &material, u32 viewFlag=0xFFFFFFFF)
3Dライン(Gradation)
Definition GxPrimitiveContext.inl:445
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)
2D四角形(Gradation)
Definition GxPrimitiveContext.cpp:535
GxPrimitiveVertex * draw2DTriangleFan(u32 vertexCount, const GxPrimitiveMaterial &material, f32 priority)
2Dトライアングルファン
Definition GxPrimitiveContext.cpp:350
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))
2Dベクトル(Gradation)
Definition GxPrimitiveContext.inl:376
GX_FORCE_INLINE void draw3DSphere(const GxShapeSphere &sphere, const GxColor color, u32 divide, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial &material, u32 viewFlag=0xFFFFFFFF)
3D球(形状指定)
Definition GxPrimitiveContext.inl:575
GX_FORCE_INLINE void draw2DTriangleF(const GxVector3 &position0, const GxVector3 &position1, const GxVector3 &position2, const GxColor color, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial &material)
2D三角形(Flat)
Definition GxPrimitiveContext.inl:92
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))
2Dテクスチャ付き四角形(Flat)
Definition GxPrimitiveContext.inl:151
GX_FORCE_INLINE void draw3DPoint(const GxVector3 &position, const GxColor color, const GxPrimitiveMaterial &material, u32 viewFlag=0xFFFFFFFF)
3D点
Definition GxPrimitiveContext.inl:412
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)
3Dベクトル(Flat)
Definition GxPrimitiveContext.inl:519
GxPrimitiveVertex * draw2DLineStrip(u32 vertexCount, const GxPrimitiveMaterial &material, f32 priority)
2Dラインストリップ
Definition GxPrimitiveContext.cpp:248
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)
3D三角形(Gradation)
Definition GxPrimitiveContext.cpp:1102
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)
2D扇形(Flat)
Definition GxPrimitiveContext.inl:345
void draw2DCircleG(const GxVector3 &position, f32 radius, const GxColor color0, const GxColor color1, u32 divide, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial &material)
2D円(Gradation)
Definition GxPrimitiveContext.cpp:751
void draw2DPolyLineG(const GxVector3 &position0, const GxVector3 &position1, u32 width, const GxColor color0, const GxColor color1, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial &material)
2Dポリライン(Gradation)
Definition GxPrimitiveContext.cpp:421
GX_FORCE_INLINE void draw2DCircleF(const GxVector3 &position, f32 radius, const GxColor color, u32 divide, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial &material)
2D円(Flat)
Definition GxPrimitiveContext.inl:328
GX_FORCE_INLINE void draw2DPolyLineF(const GxVector3 &position0, const GxVector3 &position1, u32 width, const GxColor color, PRIMITIVE_FILL_MODE fillMode, const GxPrimitiveMaterial &material)
2Dポリライン(Flat)
Definition GxPrimitiveContext.inl:78
箱形状クラス
Definition GxShape.h:333
GX_FORCE_INLINE const GxVector3 & getExtent(void) const
大きさ取得
Definition GxShape.h:373
GX_FORCE_INLINE const GxMatrixAffine & getMatrix(void) const
マトリクス取得
Definition GxShape.h:379
球形状クラス
Definition GxShape.h:240
GX_FORCE_INLINE const GxVector3 & getPosition(void) const
位置取得
Definition GxShape.h:305
constexpr f32 getRadius(void) const
半径取得
Definition GxShape.h:301
static const GxColor SYSTEM_AXIS_X
X軸
Definition GxColor.h:55
static const GxColor SYSTEM_AXIS_Z
Z軸
Definition GxColor.h:57
static GX_FORCE_INLINE GxColor getLerp(const GxColor color0, const GxColor color1, f32 t)
補間値を取得(互換用)
Definition GxColor.inl:468
static const GxColor WHITE
白
Definition GxColor.h:37
static const GxColor SYSTEM_AXIS_Y
Y軸
Definition GxColor.h:56
2次元浮動小数点数クラス
Definition GxStruct.h:22
f32 _u
U値
Definition GxStruct.h:76
f32 _v
V値
Definition GxStruct.h:81
3次元浮動小数点数クラス
Definition GxStruct.h:91
アフィン変換行列(行優先)
Definition GxMatrix.h:330
GX_FORCE_INLINE const GxVector3 & getPosition(void) const
平行移動量を取得
Definition GxMatrix.h:454
描画パケット
Definition GxPrimitiveManager.h:136
プリミティブマテリアル
Definition GxPrimitive.h:103
プリミティブ頂点
Definition GxPrimitive.h:20
実数矩形
Definition GxStruct.h:1100
f32 _left
左辺
Definition GxStruct.h:1231
f32 _bottom
底辺
Definition GxStruct.h:1234
f32 _top
上辺
Definition GxStruct.h:1232
f32 _right
右辺
Definition GxStruct.h:1233
2次元ベクトル
Definition GxVector.h:34
f32 _y
Y値
Definition GxVector.h:235
f32 _x
X値
Definition GxVector.h:234
3次元ベクトル
Definition GxVector.h:245
f32 _z
Z値
Definition GxVector.h:572
f32 _y
Y値
Definition GxVector.h:571
static const GxVector3 AXIS_Z
(0, 0, 1)
Definition GxVector.h:264
static const GxVector3 AXIS_X
(1, 0, 0)
Definition GxVector.h:260
static const GxVector3 AXIS_Y
(0, 1, 0)
Definition GxVector.h:262
f32 _x
X値
Definition GxVector.h:570