Siv3D | ColorMul, ColorAdd 사용 방법
그릴 도면 또는 텍스쳐 색상 사용
ScopedColorMul2D
와 ScopedColorAdd2D
를 사용하면 도형과 무늬를 그릴 때 RGBA 성분을 원래의 색깔과 곱하고 더할 수 있다.입력한 색상을
c
, ScopedColorMul2D
에 설정된 색상을 cM
, ScopedColorAdd2D
에 설정된 색상을 cA
, 출력된 색상을 c * cM + cA
로 계산합니다.(이곳에서 더 나아가 혼합 상태에 따라 알파 투과 등을 계산하여 쓴 색을 결정하지만 본 글은 설명을 생략한다)예제
Rect{ 100 }.draw(ColorF{ 0.6, 0.8, 1.0 });
에서 드로잉cM = ColorF{ 0.8, 0.7, 0.6, 1.0 }
cA = ColorF{ 0.2, 0.3, 0.4, 0.0 }
ColorF{ (0.6 * 0.8 + 0.2), (0.8 * 0.7 + 0.3), (1.0 * 0.6 + 0.4), (1.0 * 1.0 + 0.0) }
즉 ColorF{ 0.68, 0.86, 1.0, 1.0 }
색상으로 그려집니다.별도의 설정이 없는 경우
cM = ColorF{ 1.0, 1.0, 1.0, 1.0 }
, cA = ColorF{ 0.0, 0.0, 0.0, 0.0 }
가 기본값입니다.프로그램 예
ScopedColorMul2D
와 ScopedColorAdd2D
대상이 존재할 때 설정이 적용됩니다.프로그램의 드로잉 일부에만 해당되는 경우 { }
의 적용 범위를 사용하여 해당 부분을 둘러쌉니다.# include <Siv3D.hpp> // OpenSiv3D v0.4.3
void Main()
{
Scene::SetBackground(ColorF{ 0.4, 0.8, 0.6 });
const Array<Texture> textures =
{
Texture{Emoji{U"🐕"}},
Texture{Emoji{U"🐤"}},
Texture{Emoji{U"🐄"}},
Texture{Emoji{U"🐧"}},
};
ColorF cM{ 1.0, 1.0, 1.0, 1.0 };
ColorF cA{ 0.0, 0.0, 0.0, 0.0 };
while (System::Update())
{
SimpleGUI::Headline(U"Mul", Vec2{ 20, 20 });
SimpleGUI::Slider(cM.r, Vec2{ 20, 60 });
SimpleGUI::Slider(cM.g, Vec2{ 20, 100 });
SimpleGUI::Slider(cM.b, Vec2{ 20, 140 });
SimpleGUI::Headline(U"Add", Vec2{ 20, 200 });
SimpleGUI::Slider(cA.r, Vec2{ 20, 240 });
SimpleGUI::Slider(cA.g, Vec2{ 20, 280 });
SimpleGUI::Slider(cA.b, Vec2{ 20, 320 });
{
ScopedColorMul2D colorMul{ cM };
ScopedColorAdd2D colorAdd{ cA };
for (auto [i, texture] : Indexed(textures))
{
texture.drawAt(260 + i * 140, 200);
}
}
}
}
샘플 색상 설정
절반 밝기 도달 시
texture.draw(ColorF{ 0.5 })
cM = ColorF{ 0.5, 0.5, 0.5, 1.0 }
cA = ColorF{ 0.0, 0.0, 0.0, 0.0 }
검은색 윤곽의 경우
cM = ColorF{ 0.0, 0.0, 0.0, 1.0 }
cA = ColorF{ 0.0, 0.0, 0.0, 0.0 }
연한 파란색 윤곽선을 선택할 때
cM = ColorF{ 0.0, 0.0, 0.0, 1.0 }
cA = ColorF{ 0.0, 1.0, 1.0, 0.0 }
흰 실루엣
cM = ColorF{ 0.0, 0.0, 0.0, 1.0 }
cA = ColorF{ 1.0, 1.0, 1.0, 0.0 }
Reference
이 문제에 관하여(Siv3D | ColorMul, ColorAdd 사용 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/reputeless/articles/reference-2d-colormuladd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)