オブジェクト2Dクラスを拡張し、図形クラスを持った上でそれを描画できる2D描画オブジェクトです。
下の図のように、描画する図形にテクスチャを合成することも可能です。
具体的には、Shapeプロパティに描画したい図形を設定すると、その形状の情報をもとに図形を描画します。
また、図形が線分以外の形状の時は、指定したテクスチャを図形に合成することが可能です。
なし
名称 | 説明 |
---|---|
Shape | 描画する図形のハンドル |
Texture | 描画する2Dテクスチャのハンドル |
AlphaBlendMode | 図形描画の際に適用されるアルファブレンドの種類 |
CenterPosition | 図形に適用する変換(拡大、回転、移動)の基準位置(親から見た相対座標にて設定) |
Color | 図形描画の際の合成色のRGBA値を0~255の間で指定(Aの値を255未満にすると透明になる。) |
DrawingPriority | 描画の優先順位 |
TextureFilterType | 描画時のテクスチャフィルタ(近傍補間:Nearestもしくは線形補間:Linear) |
なし
GeometryObject2Dクラスのサンプルです。
#include <Base.h>
/**
@brief GeometryObject2Dのサンプル。図形を表示しています。
*/
int main()
{
// AC-Engineを初期化する
ace::Engine::Initialize(ace::ToAString("GeometryObject2D").c_str(), 640, 480, ace::EngineOption());
// シーンを生成する
auto scene = std::make_shared<ace::Scene>();
// レイヤーを生成する。
auto layer = std::make_shared<ace::Layer2D>();
// テクスチャを画像ファイルから生成する。
auto texture = ace::Engine::GetGraphics()->CreateTexture2D(ace::ToAString("Data/Texture/Sample1.png").c_str());
// 図形描画クラスのコンストラクタを呼び出す。
auto geometryObj1 = std::make_shared<ace::GeometryObject2D>();
auto geometryObj2 = std::make_shared<ace::GeometryObject2D>();
auto geometryObj3 = std::make_shared<ace::GeometryObject2D>();
// 図形描画クラスをレイヤーに追加する。
layer->AddObject(geometryObj1);
layer->AddObject(geometryObj2);
layer->AddObject(geometryObj3);
// レイヤーをシーンに追加する。
scene->AddLayer(layer);
// シーンを変更する。
ace::Engine::ChangeScene(scene);
// 弧を図形描画クラス1にて描画する。
{
// 弧の外径、内径、頂点数、中心位置、開始頂点番号、終了頂点番号を指定する。
auto arc = std::make_shared<ace::ArcShape>();
arc->SetOuterDiameter(100);
arc->SetInnerDiameter(10);
arc->SetNumberOfCorners(96);
arc->SetPosition(ace::Vector2DF(300, 100));
arc->SetStartingCorner(90);
arc->SetEndingCorner(5);
// 弧を描画する図形として設定し、合成するテクスチャも設定する。
geometryObj1->SetShape(arc);
geometryObj1->SetTexture(texture);
geometryObj1->SetPosition(ace::Vector2DF(0, 0));
}
// 矩形を図形描画クラス2にて描画する。
{
// 矩形の描画範囲、UV範囲を指定する。
auto rect = std::make_shared<ace::RectangleShape>();
rect->SetDrawingArea(ace::RectF(10, 210, 300, 200));
rect->SetUV(ace::RectF(0, 0, 0.5, 0.5));
// 矩形を描画する図形として設定し、合成するテクスチャも設定する。
geometryObj2->SetShape(rect);
geometryObj2->SetTexture(texture);
geometryObj2->SetPosition(ace::Vector2DF(0, 0));
}
// 多角形を図形描画クラス3にて描画する。
{
auto polygon = std::make_shared<ace::PolygonShape>();
// 多角形を構成する頂点を追加していく。(星形になるようにする。)
for (int i = 0; i < 10; ++i)
{
ace::Vector2DF vec = ace::Vector2DF(1, 0);
vec.SetDegree(i * 36);
vec.SetLength((i % 2 == 0) ? 100 : 55);
polygon->AddVertex(vec + ace::Vector2DF(500, 250));
}
// 多角形を描画する図形として設定し、合成するテクスチャも設定。
geometryObj3->SetShape(polygon);
geometryObj3->SetTexture(texture);
geometryObj3->SetPosition(ace::Vector2DF(0, 0));
}
// AC-Engineが進行可能かチェックする。
while (ace::Engine::DoEvents())
{
// AC-Engineを更新する。
ace::Engine::Update();
}
// AC-Engineを終了する。
ace::Engine::Terminate();
return 0;
}