Support GPU Primitives as constexpr
This commit is contained in:
@@ -7,6 +7,7 @@ include $(JABY_ENGINE_DIR)/lib/Wildcard.mk
|
||||
SRCS = $(call rwildcard, src, c cpp)
|
||||
|
||||
INCLUDES += -I$(JABY_ENGINE_DIR)/include
|
||||
#CCFLAGS += -save-temps=obj
|
||||
|
||||
include $(JABY_ENGINE_DIR)/lib/Makefile
|
||||
include $(JABY_ENGINE_DIR)/lib/PSEXETarget.mk
|
||||
|
@@ -11,6 +11,71 @@ enum LBA {
|
||||
__jabyengine_end_lba_request
|
||||
};
|
||||
|
||||
// Some default values for the objects
|
||||
static constexpr auto TriangleColor = JabyEngine::GPU::Color24(0x0, 0xFF, 0xFF);
|
||||
static constexpr auto TriangleArea = JabyEngine::GPU::AreaI16({0, 0}, {64, 64});
|
||||
static constexpr auto TriangleTPage = JabyEngine::GPU::TPage(320, 0, JabyEngine::GPU::SemiTransparency::B_Half_add_F_Half, JabyEngine::GPU::TexturePageColor::$4bit);
|
||||
static constexpr auto TriangleClut = JabyEngine::GPU::PageClut(320, 511);
|
||||
|
||||
static constexpr auto RectangleColor = JabyEngine::GPU::Color24(0x80, 0x80, 0xFF);
|
||||
static constexpr auto RectangleArea = JabyEngine::GPU::AreaI16({0, TriangleArea.size.height}, {80, 80});
|
||||
static constexpr auto RectangleTPage = JabyEngine::GPU::TPage(320, 256, JabyEngine::GPU::SemiTransparency::B_Half_add_F_Half, JabyEngine::GPU::TexturePageColor::$4bit);
|
||||
static constexpr auto RectangleClut = JabyEngine::GPU::PageClut(320, 510);
|
||||
|
||||
static constexpr const JabyEngine::GPU::POLY_F3 triangle1({
|
||||
{TriangleArea.position.x, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.size.height},
|
||||
{TriangleArea.position.x, TriangleArea.size.height}},
|
||||
TriangleColor
|
||||
);
|
||||
static constexpr const JabyEngine::GPU::POLY_FT3 triangle2({
|
||||
{TriangleArea.position.x, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.size.height}},{
|
||||
// Texture
|
||||
{TriangleArea.position.x, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.size.height}},
|
||||
TriangleTPage,
|
||||
TriangleClut,
|
||||
JabyEngine::GPU::Color24::Grey()
|
||||
);
|
||||
static constexpr const JabyEngine::GPU::POLY_G3 triangle3({
|
||||
{triangle1.vertex0.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Red()},
|
||||
{triangle1.vertex1.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Green()},
|
||||
{triangle1.vertex2.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Blue()}}
|
||||
);
|
||||
static constexpr const JabyEngine::GPU::POLY_GT3 triangle4({
|
||||
{triangle2.vertex0.move(TriangleArea.size.width, 0), triangle2.page0, JabyEngine::GPU::Color24::Red()},
|
||||
{triangle2.vertex1.move(TriangleArea.size.width, 0), triangle2.page1, JabyEngine::GPU::Color24::Blue()},
|
||||
{triangle2.vertex2.move(TriangleArea.size.width, 0), triangle2.page2, JabyEngine::GPU::Color24::Green()}},
|
||||
TriangleTPage,
|
||||
TriangleClut
|
||||
);
|
||||
|
||||
static constexpr const JabyEngine::GPU::POLY_F4 rectangle1(RectangleArea, RectangleColor);
|
||||
static constexpr const JabyEngine::GPU::POLY_FT4 rectangle2({
|
||||
RectangleArea.position.move(RectangleArea.size.width, 0), RectangleArea.size}, {0, 0},
|
||||
RectangleTPage,
|
||||
RectangleClut,
|
||||
JabyEngine::GPU::Color24::Grey()
|
||||
);
|
||||
static constexpr const JabyEngine::GPU::POLY_G4 rectangle3(
|
||||
{RectangleArea.position.move(RectangleArea.size.width*2, 0), RectangleArea.size}, {
|
||||
JabyEngine::GPU::Color24::Red(),
|
||||
JabyEngine::GPU::Color24::Blue(),
|
||||
JabyEngine::GPU::Color24::Green(),
|
||||
JabyEngine::GPU::Color24::White()});
|
||||
static constexpr const JabyEngine::GPU::POLY_GT4 rectangle4(
|
||||
{RectangleArea.position.move(RectangleArea.size.width*3, 0), RectangleArea.size}, {0, 0},
|
||||
RectangleTPage,
|
||||
RectangleClut, {
|
||||
JabyEngine::GPU::Color24::Red(),
|
||||
JabyEngine::GPU::Color24::Blue(),
|
||||
JabyEngine::GPU::Color24::Green(),
|
||||
JabyEngine::GPU::Color24::White()}
|
||||
);
|
||||
|
||||
static void load_assets() {
|
||||
static const JabyEngine::CDFile Assets[] = {
|
||||
JabyEngine::CDFileBuilder::simple_tim(LBA::FONT, JabyEngine::SimpleTIM(320, 0, 320, 511)),
|
||||
@@ -41,70 +106,6 @@ static void load_assets() {
|
||||
}
|
||||
|
||||
void main() {
|
||||
static constexpr auto TriangleColor = JabyEngine::GPU::Color24(0x0, 0xFF, 0xFF);
|
||||
static constexpr auto TriangleArea = JabyEngine::GPU::AreaI16({0, 0}, {64, 64});
|
||||
static constexpr auto TriangleTPage = JabyEngine::GPU::TPage(320, 0, JabyEngine::GPU::SemiTransparency::B_Half_add_F_Half, JabyEngine::GPU::TexturePageColor::$4bit);
|
||||
static constexpr auto TriangleClut = JabyEngine::GPU::PageClut(320, 511);
|
||||
|
||||
static constexpr auto RectangleColor = JabyEngine::GPU::Color24(0x80, 0x80, 0xFF);
|
||||
static constexpr auto RectangleArea = JabyEngine::GPU::AreaI16({0, TriangleArea.size.height}, {80, 80});
|
||||
static constexpr auto RectangleTPage = JabyEngine::GPU::TPage(320, 256, JabyEngine::GPU::SemiTransparency::B_Half_add_F_Half, JabyEngine::GPU::TexturePageColor::$4bit);
|
||||
static constexpr auto RectangleClut = JabyEngine::GPU::PageClut(320, 510);
|
||||
|
||||
const JabyEngine::GPU::POLY_F3 triangle1({
|
||||
{TriangleArea.position.x, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.size.height},
|
||||
{TriangleArea.position.x, TriangleArea.size.height}},
|
||||
TriangleColor
|
||||
);
|
||||
const JabyEngine::GPU::POLY_FT3 triangle2({
|
||||
{TriangleArea.position.x, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.size.height}},{
|
||||
// Texture
|
||||
{TriangleArea.position.x, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.size.height}},
|
||||
TriangleTPage,
|
||||
TriangleClut,
|
||||
JabyEngine::GPU::Color24::Grey()
|
||||
);
|
||||
const JabyEngine::GPU::POLY_G3 triangle3({
|
||||
{triangle1.vertex0.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Red()},
|
||||
{triangle1.vertex1.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Green()},
|
||||
{triangle1.vertex2.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Blue()}}
|
||||
);
|
||||
const JabyEngine::GPU::POLY_GT3 triangle4({
|
||||
{triangle2.vertex0.move(TriangleArea.size.width, 0), triangle2.page0, JabyEngine::GPU::Color24::Red()},
|
||||
{triangle2.vertex1.move(TriangleArea.size.width, 0), triangle2.page1, JabyEngine::GPU::Color24::Blue()},
|
||||
{triangle2.vertex2.move(TriangleArea.size.width, 0), triangle2.page2, JabyEngine::GPU::Color24::Green()}},
|
||||
TriangleTPage,
|
||||
TriangleClut
|
||||
);
|
||||
|
||||
const JabyEngine::GPU::POLY_F4 rectangle1(RectangleArea, RectangleColor);
|
||||
const JabyEngine::GPU::POLY_FT4 rectangle2({
|
||||
RectangleArea.position.move(RectangleArea.size.width, 0), RectangleArea.size}, {0, 0},
|
||||
RectangleTPage,
|
||||
RectangleClut,
|
||||
JabyEngine::GPU::Color24::Grey()
|
||||
);
|
||||
const JabyEngine::GPU::POLY_G4 rectangle3(
|
||||
{RectangleArea.position.move(RectangleArea.size.width*2, 0), RectangleArea.size}, {
|
||||
JabyEngine::GPU::Color24::Red(),
|
||||
JabyEngine::GPU::Color24::Blue(),
|
||||
JabyEngine::GPU::Color24::Green(),
|
||||
JabyEngine::GPU::Color24::White()});
|
||||
const JabyEngine::GPU::POLY_GT4 rectangle4(
|
||||
{RectangleArea.position.move(RectangleArea.size.width*3, 0), RectangleArea.size}, {0, 0},
|
||||
RectangleTPage,
|
||||
RectangleClut, {
|
||||
JabyEngine::GPU::Color24::Red(),
|
||||
JabyEngine::GPU::Color24::Blue(),
|
||||
JabyEngine::GPU::Color24::Green(),
|
||||
JabyEngine::GPU::Color24::White()}
|
||||
);
|
||||
|
||||
load_assets();
|
||||
|
||||
while(true) {
|
||||
|
Reference in New Issue
Block a user