Renderer code refactored to implement rotation in a cleaner way.

Rectangle type refactored to only store the center point and the half width and half height.
Test code refactored to reflect these changes.
Gui_Panel_Refactor
Joeyrp 4 years ago
parent f7c3663e18
commit 08adeb6b9d

@ -17,9 +17,11 @@ Core:
✔ Implement the Image creation methods @done (9/9/2021, 2:50:20 PM) ✔ Implement the Image creation methods @done (9/9/2021, 2:50:20 PM)
✔ Implement Render to Texture @done (9/15/2021, 7:00:33 PM) ✔ Implement Render to Texture @done (9/15/2021, 7:00:33 PM)
✔ Adjust the font loading code to use the binary file buffer instead of ifstream @done (9/17/2021, 6:11:06 PM) ✔ Adjust the font loading code to use the binary file buffer instead of ifstream @done (9/17/2021, 6:11:06 PM)
☐ Find a way to add rotation to shapes and images ✔ Find a way to add rotation to shapes and images @done (10/29/2021, 7:35:14 PM)
✔ Add a DrawPolygon method that takes vertices and draws arbirary shapes @done (10/29/2021, 6:24:14 PM) ✔ Add a DrawPolygon method that takes vertices and draws arbirary shapes @done (10/29/2021, 6:24:14 PM)
☐ Allow DrawPolygon to add a texture to the polygon ☐ Allow DrawPolygon to add a texture to the polygon @low
✔ Refactor the drawing code to allow for rotation with cleaner code @high @done (10/29/2021, 8:36:24 PM)
☐ Test rotation of images
GUI: GUI:

@ -53,7 +53,7 @@ namespace lunarium
virtual void DrawEllipse(glm::vec2 center, glm::vec2 radii, Color color, float thickness, int resolution) = 0; virtual void DrawEllipse(glm::vec2 center, glm::vec2 radii, Color color, float thickness, int resolution) = 0;
virtual void DrawFilledEllipse(glm::vec2 center, glm::vec2 radii, Color color, int resolution) = 0; virtual void DrawFilledEllipse(glm::vec2 center, glm::vec2 radii, Color color, int resolution) = 0;
virtual void DrawBox(Rectangle dimensions, Color color, float thickness, float angle = 0.0f) = 0; virtual void DrawBox(Rectangle dimensions, Color color, float thickness, float angle = 0.0f) = 0;
virtual void DrawFilledBox(glm::vec2 topLeft, glm::vec2 botRight, Color color, float angle = 0.0f) = 0; virtual void DrawFilledBox(Rectangle box, Color color, float angle = 0.0f) = 0;
virtual void DrawImage(Image& image, glm::vec2 topLeft, Color color, float angle = 0.0f) = 0; virtual void DrawImage(Image& image, glm::vec2 topLeft, Color color, float angle = 0.0f) = 0;
virtual void DrawImage(Image& image, Rectangle source, Rectangle destination, Color color, float angle = 0.0f) = 0; virtual void DrawImage(Image& image, Rectangle source, Rectangle destination, Color color, float angle = 0.0f) = 0;
virtual void DrawString(const char* string, Rectangle boundingArea, Color color, float scale = 1.0f, int font = 0) = 0; virtual void DrawString(const char* string, Rectangle boundingArea, Color color, float scale = 1.0f, int font = 0) = 0;

@ -290,39 +290,18 @@ namespace lunarium
glBindVertexArray(0); glBindVertexArray(0);
} }
void OglGraphics::DrawFilledBox(glm::vec2 topLeft, glm::vec2 botRight, Color color, float angle) void OglGraphics::DrawFilledBox(Rectangle box, Color color, float angle)
{ {
mShapeShader.MakeActive(); mShapeShader.MakeActive();
mShapeShader.SetUniformMatrix("projection", 1, glm::value_ptr(mProjection)); mShapeShader.SetUniformMatrix("projection", 1, glm::value_ptr(mProjection));
glm::mat4 model = glm::mat4(1.0f); glm::mat4 model = glm::mat4(1.0f);
float width = botRight.x - topLeft.x; model = glm::translate(model, glm::vec3(box.X, box.Y, 0.0f));
float height = botRight.y - topLeft.y;
model = glm::translate(model, glm::vec3(topLeft.x + width / 2, topLeft.y + height / 2 , 0.0f));
model = glm::rotate(model, angle, glm::vec3(0.0f, 0.0f, 1.0f)); model = glm::rotate(model, angle, glm::vec3(0.0f, 0.0f, 1.0f));
model = glm::scale(model, glm::vec3(width, height, 1.0f)); model = glm::scale(model, glm::vec3(box.HalfWidth * 2, box.HalfHeight * 2, 1.0f));
mShapeShader.SetUniformMatrix("model", 1, glm::value_ptr(model)); mShapeShader.SetUniformMatrix("model", 1, glm::value_ptr(model));
mShapeShader.SetUniformf("shapeColor", { color.Red, color.Green, color.Blue, color.Alpha }); mShapeShader.SetUniformf("shapeColor", { color.Red, color.Green, color.Blue, color.Alpha });
glBindVertexArray(mRectVAO); glBindVertexArray(mRectVAO);
// GLfloat vertices[6][4] = {
// { topLeft.x, botRight.y, },
// { botRight.x, topLeft.y, },
// { topLeft.x, topLeft.y, },
// { topLeft.x, botRight.y, },
// { botRight.x, botRight.y, },
// { botRight.x, topLeft.y, }
// };
// Pos
// 0.0f, 1.0f,
// 1.0f, 0.0f,
// 0.0f, 0.0f,
// 0.0f, 1.0f,
// 1.0f, 1.0f,
// 1.0f, 0.0f,
GLfloat vertices[6][4] = { GLfloat vertices[6][4] = {
{ -0.5f, 0.5f, }, { -0.5f, 0.5f, },
{ 0.5f, -0.5f, }, { 0.5f, -0.5f, },
@ -342,7 +321,7 @@ namespace lunarium
void OglGraphics::DrawBox(Rectangle dimensions, Color color, float thickness, float angle) void OglGraphics::DrawBox(Rectangle dimensions, Color color, float thickness, float angle)
{ {
glm::vec2 topLeft(dimensions.Left, dimensions.Top); glm::vec2 topLeft(dimensions.left(), dimensions.top());
glm::vec2 botRight(dimensions.right(), dimensions.bottom()); glm::vec2 botRight(dimensions.right(), dimensions.bottom());
// left side top to bottom // left side top to bottom
@ -358,18 +337,21 @@ namespace lunarium
DrawLine(glm::vec2(botRight.x, topLeft.y), glm::vec2(topLeft.x, topLeft.y), color, thickness); DrawLine(glm::vec2(botRight.x, topLeft.y), glm::vec2(topLeft.x, topLeft.y), color, thickness);
} }
void OglGraphics::DrawImage(Image& image, glm::vec2 topLeft, Color color, float angle) void OglGraphics::DrawImage(Image& image, glm::vec2 position, Color color, float angle)
{ {
DrawImage(image, Rectangle(0.0f, 0.0f, (float)image.GetWidth(), (float)image.GetHeight()), float half_width = image.GetWidth() / 2;
Rectangle(topLeft.x, topLeft.y, (float)image.GetWidth(), (float)image.GetHeight()), color, angle); float half_height = image.GetHeight() / 2;
DrawImage(image, Rectangle(half_width, half_height, half_width, half_height),
Rectangle(position.x, position.y, half_width, half_height), color, angle);
} }
void OglGraphics::DrawImage(Image& image, Rectangle source, Rectangle destination, Color color, float angle) void OglGraphics::DrawImage(Image& image, Rectangle source, Rectangle destination, Color color, float angle)
{ {
glm::mat4 id = glm::mat4(1.0f); glm::mat4 id = glm::mat4(1.0f);
glm::vec3 pos = glm::vec3(destination.Left, destination.Top, 0.0f); glm::vec3 pos = glm::vec3(destination.left(), destination.top(), 0.0f);
glm::mat4 trans = glm::translate(id, pos); glm::mat4 trans = glm::translate(id, pos);
trans = glm::scale(trans, glm::vec3(destination.Width, destination.Height, 1.0f)); trans = glm::rotate(trans, angle, glm::vec3(0.0f, 0.0f, 1.0f));
trans = glm::scale(trans, glm::vec3(destination.HalfWidth * 2, destination.HalfHeight * 2, 1.0f));
mImageShader.MakeActive(); mImageShader.MakeActive();
@ -387,10 +369,10 @@ namespace lunarium
// { // {
// NOTE: Pretty sure these values will work out to be correct with out the if check // NOTE: Pretty sure these values will work out to be correct with out the if check
float xScale = source.Width / image.GetWidth(); float xScale = (source.HalfWidth * 2) / image.GetWidth();
float xOffset = source.Left / image.GetWidth(); float xOffset = source.left() / image.GetWidth();
float yScale = source.Height / image.GetHeight(); float yScale = (source.HalfHeight * 2) / image.GetHeight();
float yOffset = source.Top / image.GetHeight(); float yOffset = source.top() / image.GetHeight();
// Logger::Log(LogCategory::GRAPHICS, LogLevel::INFO_VERBOSE, "uvManip Values: %f, %f, %f, %f", xScale, xOffset, yScale, yOffset); // Logger::Log(LogCategory::GRAPHICS, LogLevel::INFO_VERBOSE, "uvManip Values: %f, %f, %f, %f", xScale, xOffset, yScale, yOffset);
@ -412,7 +394,7 @@ namespace lunarium
void OglGraphics::DrawString(const char* string, Rectangle boundingArea, Color color, float scale, int font) void OglGraphics::DrawString(const char* string, Rectangle boundingArea, Color color, float scale, int font)
{ {
mText.DrawString(font, string, glm::vec2(boundingArea.Left, boundingArea.Top), mText.DrawString(font, string, glm::vec2(boundingArea.left(), boundingArea.top()),
glm::vec2(boundingArea.right(), boundingArea.bottom()), color, scale, mProjection); glm::vec2(boundingArea.right(), boundingArea.bottom()), color, scale, mProjection);
} }

@ -47,9 +47,9 @@ namespace lunarium
virtual void DrawLine(glm::vec2 point1, glm::vec2 point2, Color color, float lineWidth); virtual void DrawLine(glm::vec2 point1, glm::vec2 point2, Color color, float lineWidth);
virtual void DrawEllipse(glm::vec2 center, glm::vec2 radii, Color color, float thickness, int resolution); virtual void DrawEllipse(glm::vec2 center, glm::vec2 radii, Color color, float thickness, int resolution);
virtual void DrawFilledEllipse(glm::vec2 center, glm::vec2 radii, Color color, int resolution); virtual void DrawFilledEllipse(glm::vec2 center, glm::vec2 radii, Color color, int resolution);
virtual void DrawBox(Rectangle dimensions, Color color, float thickness, float angle = 0.0f); virtual void DrawBox(Rectangle box, Color color, float thickness, float angle = 0.0f);
virtual void DrawFilledBox(glm::vec2 topLeft, glm::vec2 botRight, Color color, float angle = 0.0f); virtual void DrawFilledBox(Rectangle box, Color color, float angle = 0.0f);
virtual void DrawImage(Image& image, glm::vec2 topLeft, Color color, float angle = 0.0f); virtual void DrawImage(Image& image, glm::vec2 position, Color color, float angle = 0.0f);
virtual void DrawImage(Image& image, Rectangle source, Rectangle destination, Color color, float angle = 0.0f); virtual void DrawImage(Image& image, Rectangle source, Rectangle destination, Color color, float angle = 0.0f);
virtual void DrawString(const char* string, Rectangle boundingArea, Color color, float scale = 1.0f, int font = 0); virtual void DrawString(const char* string, Rectangle boundingArea, Color color, float scale = 1.0f, int font = 0);

@ -30,37 +30,48 @@ namespace lunarium
// RECTANGLE // RECTANGLE
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
Rectangle::Rectangle() Rectangle::Rectangle()
: Left(0.0f), Top(0.0f), Width(0.0f), Height(0.0f) : X(0.0f), Y(0.0f), HalfWidth(1.0f), HalfHeight(1.0f)
{ {
} }
Rectangle::Rectangle(b2AABB& box) Rectangle::Rectangle(b2AABB& box)
{ {
float hwidth = box.GetExtents().x; X = box.GetCenter().x;
float hheight = box.GetExtents().y; Y = box.GetCenter().y;
Left = (box.GetCenter().x - hwidth); HalfWidth = box.GetExtents().x;
Top = (box.GetCenter().y - hheight); HalfHeight = box.GetExtents().y;
Width = hwidth * 2;
Height = hheight * 2;
} }
Rectangle::Rectangle(float _left, float _top, float _width, float _height) Rectangle::Rectangle(float x, float y, float half_width, float half_height)
: Left(_left), Top(_top), Width(_width), Height(_height) : X(x), Y(y), HalfWidth(half_width), HalfHeight(half_height)
{ {
}
Rectangle Rectangle::MakeFromTopLeft(float left, float top, float width, float height)
{
float halfw = width / 2;
float halfh = height / 2;
return Rectangle(left + halfw, top + halfh, halfw, halfh);
}
void Rectangle::Scale(float x, float y)
{
HalfWidth *= x;
HalfHeight *= y;
} }
float Rectangle::Area() const float Rectangle::Area() const
{ {
return Width * Height; return HalfWidth * 2 * HalfHeight * 2;
} }
bool Rectangle::ContainsPoint(glm::vec2 point) const bool Rectangle::ContainsPoint(glm::vec2 point) const
{ {
if (point.x < this->Left || point.x > this->right()) if (point.x < this->left() || point.x > this->right())
return false; return false;
if (point.y < this->Top || point.y > this->bottom()) if (point.y < this->top() || point.y > this->bottom())
return false; return false;
return true; return true;
@ -68,14 +79,14 @@ namespace lunarium
bool Rectangle::Intersects(const Rectangle& other, glm::vec2& centers) const bool Rectangle::Intersects(const Rectangle& other, glm::vec2& centers) const
{ {
glm::vec2 myCenter = glm::vec2(this->Left + (this->Width / 2.0f), this->Top + (this->Height / 2.0f)); glm::vec2 myCenter = glm::vec2(X, Y);
glm::vec2 otherCenter = glm::vec2(other.Left + (other.Width / 2.0f), other.Top + (other.Height / 2.0f)); glm::vec2 otherCenter = glm::vec2(other.X, other.Y);
centers = myCenter - otherCenter; centers = myCenter - otherCenter;
if (this->Left > other.right() || other.Left > this->right()) if (this->left() > other.right() || other.left() > this->right())
return false; return false;
if (this->Top > other.bottom() || other.Top > this->bottom()) if (this->top() > other.bottom() || other.top() > this->bottom())
return false; return false;
return true; return true;

@ -59,21 +59,24 @@ namespace lunarium
///////////////////////////////////////////////// /////////////////////////////////////////////////
struct Rectangle struct Rectangle
{ {
float Left; float X;
float Top; float Y;
float Width; float HalfWidth;
float Height; float HalfHeight;
float right() const { return Left + Width; } float left() const { return X - HalfWidth; }
float bottom() const { return Top + Height; } float top() const { return Y - HalfHeight; }
float right() const { return X + HalfWidth; }
float bottom() const { return Y + HalfHeight; }
glm::vec2 LeftTop() const { return glm::vec2(Left, Top); } glm::vec2 CenterPoint() const;
glm::vec2 RightBottom() const { return glm::vec2(right(), bottom()); } Sizef FullSize() const;
Rectangle(); Rectangle();
Rectangle(b2AABB& box); Rectangle(b2AABB& box);
Rectangle(float _left, float _top, float _width, float _height); Rectangle(float x, float y, float half_width, float half_height);
void Scale(float x, float y);
float Area() const; float Area() const;
bool ContainsPoint(glm::vec2 point) const; bool ContainsPoint(glm::vec2 point) const;
@ -81,6 +84,8 @@ namespace lunarium
// Rectangle's center to the invoking object's center. // Rectangle's center to the invoking object's center.
// This could be used for determining the angle of the intersection. // This could be used for determining the angle of the intersection.
bool Intersects(const Rectangle& other, glm::vec2& centers) const; bool Intersects(const Rectangle& other, glm::vec2& centers) const;
static Rectangle MakeFromTopLeft(float left, float top, float width, float height);
}; };
///////////////////////////////////////////////// /////////////////////////////////////////////////
} }

@ -127,17 +127,18 @@ namespace lunarium
mpGroundBox->ComputeAABB(&groundbox, mpGroundBody->GetTransform(), 0); mpGroundBox->ComputeAABB(&groundbox, mpGroundBody->GetTransform(), 0);
Rectangle groundRect(groundbox); Rectangle groundRect(groundbox);
g->DrawFilledBox(groundRect.LeftTop() * scaleFactor, groundRect.Scale(scaleFactor, scaleFactor);
groundRect.RightBottom() * scaleFactor, groundRect.X *= scaleFactor;
Color(0.0f, 1.0f, 0.0f, 1.0f)); groundRect.Y *= scaleFactor;
g->DrawFilledBox(groundRect, Color(0.0f, 1.0f, 0.0f, 1.0f));
b2AABB groundbox2; b2AABB groundbox2;
mpGroundBox2->ComputeAABB(&groundbox2, mpGroundBody2->GetTransform(), 0); mpGroundBox2->ComputeAABB(&groundbox2, mpGroundBody2->GetTransform(), 0);
Rectangle groundRect2(groundbox2); Rectangle groundRect2(groundbox2);
g->DrawFilledBox(groundRect2.LeftTop() * scaleFactor, groundRect2.Scale(scaleFactor, scaleFactor);
groundRect2.RightBottom() * scaleFactor, groundRect2.X *= scaleFactor;
Color(0.0f, 1.0f, 0.0f, 1.0f)); groundRect2.Y *= scaleFactor;
g->DrawFilledBox(groundRect2, Color(0.0f, 1.0f, 0.0f, 1.0f));
b2AABB dynbox; b2AABB dynbox;
b2Transform transform; b2Transform transform;
@ -146,39 +147,38 @@ namespace lunarium
mpDynamicBox->ComputeAABB(&dynbox, transform, 0); mpDynamicBox->ComputeAABB(&dynbox, transform, 0);
Rectangle dynRect(dynbox); Rectangle dynRect(dynbox);
float angle = mpDynamicBody->GetAngle(); float angle = mpDynamicBody->GetAngle();
g->DrawFilledBox(dynRect.LeftTop() * scaleFactor, dynRect.Scale(scaleFactor, scaleFactor);
dynRect.RightBottom() * scaleFactor, dynRect.X *= scaleFactor;
Color(0.0f, 0.0f, 1.0f, 1.0f), angle); dynRect.Y *= scaleFactor;
g->DrawFilledBox(dynRect, Color(0.0f, 0.0f, 1.0f, 1.0f), angle);
// Debug info // Debug info
char str[256] = { 0 }; char str[256] = { 0 };
sprintf(str, "GroundBox: (%f, %f) (%f, %f)", sprintf(str, "GroundBox: pos: (%f, %f) size: (%f, %f)", groundRect.X, groundRect.Y, groundRect.HalfWidth, groundRect.HalfHeight);
groundRect.LeftTop().x * scaleFactor, groundRect.LeftTop().y * scaleFactor, g->DrawString(str, Rectangle::MakeFromTopLeft(10.0f, 10.0f, 800.0f, 30.0f), Color(0.75f, 0.85f, 0.5f, 1.0f), 0.4f);
groundRect.RightBottom().x * scaleFactor, groundRect.RightBottom().y * scaleFactor);
g->DrawString(str, Rectangle(10.0f, 10.0f, 800.0f, 30.0f), Color(0.75f, 0.85f, 0.5f, 1.0f), 0.4f);
sprintf(str, "GroundBox Half Size: (%f, %f)", groundRect.Width, groundRect.Height); // sprintf(str, "GroundBox Half Size: (%f, %f)", groundRect.Width, groundRect.Height);
g->DrawString(str, Rectangle(10.0f, 35.0f, 800.0f, 30.0f), Color(0.75f, 0.85f, 0.5f, 1.0f), 0.4f); // g->DrawString(str, Rectangle(10.0f, 35.0f, 800.0f, 30.0f), Color(0.75f, 0.85f, 0.5f, 1.0f), 0.4f);
sprintf(str, "DynBox: (%f, %f) (%f, %f), Angle: %f", // sprintf(str, "DynBox: (%f, %f) (%f, %f), Angle: %f",
dynRect.LeftTop().x * scaleFactor, dynRect.LeftTop().y * scaleFactor, // dynRect.LeftTop().x * scaleFactor, dynRect.LeftTop().y * scaleFactor,
dynRect.RightBottom().x * scaleFactor, dynRect.RightBottom().y * scaleFactor, angle); // dynRect.RightBottom().x * scaleFactor, dynRect.RightBottom().y * scaleFactor, angle);
g->DrawString(str, Rectangle(10.0f, 60.0f, 1000.0f, 100.0f), Color(0.75f, 0.85f, 0.5f, 1.0f), 0.4); // g->DrawString(str, Rectangle(10.0f, 60.0f, 1000.0f, 100.0f), Color(0.75f, 0.85f, 0.5f, 1.0f), 0.4);
int ww, wh; int ww, wh;
Core::MainWindow().GetFramebufferSize(&ww, &wh); Core::MainWindow().GetFramebufferSize(&ww, &wh);
for (int i = 0; i < wh; i += 10) for (int i = 0; i < wh; i += 10)
{ {
sprintf(str, "%d", i); sprintf(str, "%d", i);
g->DrawString(str, Rectangle(ww - 35.0f, i, 4.0f, 5.0f), Color(1.0f, 0.0f, 0.0f, 1.0f), 0.25f); g->DrawString(str, Rectangle::MakeFromTopLeft(ww - 35.0f, i, 4.0f, 5.0f), Color(1.0f, 0.0f, 0.0f, 1.0f), 0.25f);
g->DrawBox(Rectangle(ww - 10.0f, i, 10.0f, 2.0f), Color(1.0f, 0.0f, 0.0f, 1.0f), 1.0f); g->DrawBox(Rectangle::MakeFromTopLeft(ww - 10.0f, i, 10.0f, 2.0f), Color(1.0f, 0.0f, 0.0f, 1.0f), 1.0f);
} }
for (int i = 0; i < ww; i += 25) for (int i = 0; i < ww; i += 25)
{ {
sprintf(str, "%d", i); sprintf(str, "%d", i);
g->DrawString(str, Rectangle(i, wh - 20.0f, 4.0f, 5.0f), Color(1.0f, 0.0f, 0.0f, 1.0f), 0.25f); g->DrawString(str, Rectangle::MakeFromTopLeft(i, wh - 20.0f, 4.0f, 5.0f), Color(1.0f, 0.0f, 0.0f, 1.0f), 0.25f);
g->DrawBox(Rectangle(i, wh - 5.0f, 2.0f, 5.0f), Color(1.0f, 0.0f, 0.0f, 1.0f), 1.0f); g->DrawBox(Rectangle::MakeFromTopLeft(i, wh - 5.0f, 2.0f, 5.0f), Color(1.0f, 0.0f, 0.0f, 1.0f), 1.0f);
} }
} }

@ -78,7 +78,7 @@ namespace lunarium
IGraphics& g = Core::Graphics(); IGraphics& g = Core::Graphics();
g.DrawFilledEllipse(glm::vec2(600, 300), glm::vec2(100, 150), Color(1.0f, 0.0f, 1.0f, 1.0f), 100); g.DrawFilledEllipse(glm::vec2(600, 300), glm::vec2(100, 150), Color(1.0f, 0.0f, 1.0f, 1.0f), 100);
g.DrawString("This is a test of the text renderer!", Rectangle(100, 200, mTextBoxWidth, 300), g.DrawString("This is a test of the text renderer!", Rectangle::MakeFromTopLeft(100, 200, mTextBoxWidth, 300),
Color(0.0f, 1.0f, 1.0f, 1.0f), 0.5f, g.DefaultFont()); Color(0.0f, 1.0f, 1.0f, 1.0f), 0.5f, g.DefaultFont());
mpRenderedImage = Core::GetInstance().EndRenderToTexture(); mpRenderedImage = Core::GetInstance().EndRenderToTexture();
@ -86,9 +86,9 @@ namespace lunarium
void SimpleRenderScene::OnRender(IGraphics* g) void SimpleRenderScene::OnRender(IGraphics* g)
{ {
g->DrawImage(*mpRenderedImage, Rectangle(0.0f, 0.0f, (float)mpRenderedImage->GetWidth(), (float)mpRenderedImage->GetHeight()), g->DrawImage(*mpRenderedImage, Rectangle::MakeFromTopLeft(0.0f, 0.0f, (float)mpRenderedImage->GetWidth(), (float)mpRenderedImage->GetHeight()),
Rectangle(0.0f, 0.0f, (float)mImageSize.Width, (float)mImageSize.Height), Color(1.0f, 1.0f, 1.0f, 1.0f)); Rectangle::MakeFromTopLeft(0.0f, 0.0f, (float)mImageSize.Width, (float)mImageSize.Height), Color(1.0f, 1.0f, 1.0f, 1.0f));
g->DrawBox(Rectangle(0.0f, 0.0f, (float)mImageSize.Width, (float)mImageSize.Height), Color(0.0f, 0.0f, 0.0f, 1.0f), 1.0f); g->DrawBox(Rectangle::MakeFromTopLeft(0.0f, 0.0f, (float)mImageSize.Width, (float)mImageSize.Height), Color(0.0f, 0.0f, 0.0f, 1.0f), 1.0f);
} }
} }
Loading…
Cancel
Save