Fix A Lot of Stuff
This commit is contained in:
parent
61cb41ae29
commit
83946b1e66
@ -12,6 +12,19 @@
|
|||||||
|
|
||||||
namespace RenderD7
|
namespace RenderD7
|
||||||
{
|
{
|
||||||
|
enum Encoder
|
||||||
|
{
|
||||||
|
BITMAP, ///< Encode Data to Bitmap
|
||||||
|
DIRECT, ///< Encode Direct to Framebuffer(No Decoder Required)
|
||||||
|
C3D ///< Encode Directly to C3D_Tex (Just an Idea)
|
||||||
|
};
|
||||||
|
|
||||||
|
enum Decoder
|
||||||
|
{
|
||||||
|
BITMAP2C3D, ///< Decode and Encode to C3D_Tex (Currently Fastest) (47,4ms)
|
||||||
|
BITMAP2PNG2C3D ///< Decode Bitmap end Convert to Png, then C3D (Very Slow) (201,4ms)
|
||||||
|
};
|
||||||
|
|
||||||
class BitmapPrinter
|
class BitmapPrinter
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -19,7 +32,7 @@ namespace RenderD7
|
|||||||
~BitmapPrinter();
|
~BitmapPrinter();
|
||||||
bool DecodeFile(std::string file);
|
bool DecodeFile(std::string file);
|
||||||
|
|
||||||
bool DecodeMem(std::vector<unsigned char> buffer);
|
void SetDecoder(Decoder deccc) { decc = deccc; }
|
||||||
void DrawPixel(int x, int y, u8 b, u8 g, u8 r, u8 a);
|
void DrawPixel(int x, int y, u8 b, u8 g, u8 r, u8 a);
|
||||||
void DrawRect(int x, int y, int w, int h, u8 line_w, u8 b, u8 g, u8 r, u8 a);
|
void DrawRect(int x, int y, int w, int h, u8 line_w, u8 b, u8 g, u8 r, u8 a);
|
||||||
void DrawRectFilled(int x, int y, int w, int h, u8 b, u8 g, u8 r, u8 a);
|
void DrawRectFilled(int x, int y, int w, int h, u8 b, u8 g, u8 r, u8 a);
|
||||||
@ -49,6 +62,7 @@ namespace RenderD7
|
|||||||
void DrawText(int x, int y, float t_size, u32 color, std::string text);
|
void DrawText(int x, int y, float t_size, u32 color, std::string text);
|
||||||
private:
|
private:
|
||||||
//funcs
|
//funcs
|
||||||
|
bool Decode(Decoder deccc);
|
||||||
void DrawChar(u32 posX, u32 posY, u32 color, char character);
|
void DrawChar(u32 posX, u32 posY, u32 color, char character);
|
||||||
//parameter
|
//parameter
|
||||||
int frame = 0;
|
int frame = 0;
|
||||||
@ -60,6 +74,7 @@ namespace RenderD7
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//Benchmark Stuff;
|
//Benchmark Stuff;
|
||||||
|
int testfpsd;
|
||||||
bool benchmark = false;
|
bool benchmark = false;
|
||||||
bool setupbenchmark;
|
bool setupbenchmark;
|
||||||
float frametime = 0;
|
float frametime = 0;
|
||||||
@ -81,6 +96,8 @@ namespace RenderD7
|
|||||||
std::vector<int> fpscountc;
|
std::vector<int> fpscountc;
|
||||||
int renderedframes = 0;
|
int renderedframes = 0;
|
||||||
int testfps = 60;
|
int testfps = 60;
|
||||||
|
Encoder encc = Encoder::BITMAP;
|
||||||
|
Decoder decc = Decoder::BITMAP2C3D;
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
};
|
};
|
||||||
}
|
}
|
@ -13,14 +13,6 @@ namespace RenderD7
|
|||||||
{
|
{
|
||||||
namespace Color
|
namespace Color
|
||||||
{
|
{
|
||||||
enum ColorFmt
|
|
||||||
{
|
|
||||||
RGBA8,
|
|
||||||
RGB8,
|
|
||||||
RGB565,
|
|
||||||
BGRA8,
|
|
||||||
BGR8
|
|
||||||
};
|
|
||||||
struct rgba
|
struct rgba
|
||||||
{
|
{
|
||||||
uint8_t r, g, b, a;
|
uint8_t r, g, b, a;
|
||||||
@ -34,6 +26,5 @@ namespace RenderD7
|
|||||||
};
|
};
|
||||||
std::string RGB2Hex(int r, int g, int b);
|
std::string RGB2Hex(int r, int g, int b);
|
||||||
uint32_t Hex(const std::string color, uint8_t a = 255);
|
uint32_t Hex(const std::string color, uint8_t a = 255);
|
||||||
uint32_t Convert(uint32_t src, RenderD7::Color::ColorFmt srcFormat, RenderD7::Color::ColorFmt dstFormat);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -31,16 +31,6 @@ bool RenderD7::BitmapPrinter::DecodeFile(std::string file)
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
bool RenderD7::BitmapPrinter::DecodeMem(std::vector<unsigned char> buffer)
|
|
||||||
{
|
|
||||||
unsigned error = bitmap.read_mem(buffer);
|
|
||||||
if (error)
|
|
||||||
{
|
|
||||||
RenderD7::AddOvl(std::make_unique<RenderD7::Toast>("BitmapPrinter", "Error Code: " + std::to_string(error)));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void RenderD7::BitmapPrinter::DrawPixel(int x, int y, u8 b, u8 g, u8 r, u8 a)
|
void RenderD7::BitmapPrinter::DrawPixel(int x, int y, u8 b, u8 g, u8 r, u8 a)
|
||||||
{
|
{
|
||||||
@ -117,7 +107,7 @@ bool RenderD7::BitmapPrinter::DrawScreenDirectF(int framerate)
|
|||||||
if(frame == (60/framerate)){
|
if(frame == (60/framerate)){
|
||||||
RenderD7::OnScreen(targetr);
|
RenderD7::OnScreen(targetr);
|
||||||
if(renderframe.loadet) renderframe.Unload();
|
if(renderframe.loadet) renderframe.Unload();
|
||||||
renderframe.LoadFromBitmap(bitmap);
|
this->Decode(decc);
|
||||||
frame = 0;
|
frame = 0;
|
||||||
updtt = true;
|
updtt = true;
|
||||||
}
|
}
|
||||||
@ -135,7 +125,7 @@ bool RenderD7::BitmapPrinter::DrawScreenDirect()
|
|||||||
{
|
{
|
||||||
RenderD7::OnScreen(targetr);
|
RenderD7::OnScreen(targetr);
|
||||||
if(renderframe.loadet) renderframe.Unload();
|
if(renderframe.loadet) renderframe.Unload();
|
||||||
renderframe.LoadFromBitmap(bitmap);
|
this->Decode(decc);
|
||||||
updtt = true;
|
updtt = true;
|
||||||
if(renderframe.loadet) renderframe.Draw(0, 0);
|
if(renderframe.loadet) renderframe.Draw(0, 0);
|
||||||
}
|
}
|
||||||
@ -195,7 +185,8 @@ bool RenderD7::BitmapPrinter::UpdateScreenF(int framerate)
|
|||||||
{
|
{
|
||||||
if(frame == (60/framerate)){
|
if(frame == (60/framerate)){
|
||||||
if(renderframe.loadet) renderframe.Unload();
|
if(renderframe.loadet) renderframe.Unload();
|
||||||
renderframe.LoadFromBitmap(bitmap);
|
//renderframe.LoadFromBitmap(bitmap);
|
||||||
|
this->Decode(decc);
|
||||||
frame = 0;
|
frame = 0;
|
||||||
updtt = true;
|
updtt = true;
|
||||||
}
|
}
|
||||||
@ -209,7 +200,7 @@ bool RenderD7::BitmapPrinter::UpdateScreen()
|
|||||||
if (isscreen)
|
if (isscreen)
|
||||||
{
|
{
|
||||||
if(renderframe.loadet) renderframe.Unload();
|
if(renderframe.loadet) renderframe.Unload();
|
||||||
renderframe.LoadFromBitmap(bitmap);
|
this->Decode(decc);
|
||||||
updtt = true;
|
updtt = true;
|
||||||
}
|
}
|
||||||
return updtt;
|
return updtt;
|
||||||
@ -260,8 +251,9 @@ void RenderD7::BitmapPrinter::Benchmark()
|
|||||||
std::string avgcpu3 = std::to_string(((alldtt3/(float)hdttt3.size())*1000));
|
std::string avgcpu3 = std::to_string(((alldtt3/(float)hdttt3.size())*1000));
|
||||||
std::string avgfps = std::to_string((allfps/(int)fpscountc.size()-1));
|
std::string avgfps = std::to_string((allfps/(int)fpscountc.size()-1));
|
||||||
|
|
||||||
std::string resultt = "Frames Rendered: " + renderedf + "\nMax Cpu Time: " + avgdtt + "\nAvg Cpu Time: " + avgcpu + "\nAvg Fps: " + avgfps + "\nAvg RenderTime: " + avgcpu2 + "ms/f\nAvg ConvertTime: " + avgcpu3 + "ms\n";
|
std::string resultt = "TestMode: " + std::to_string(testfpsd) + "fps" + "\nRendered Frames: " + renderedf + "\nMax Cpu Time: " + avgdtt + "\nAvg Cpu Time: " + avgcpu + "\nAvg Fps: " + avgfps + "\nAvg EncodeTime: " + avgcpu2 + "ms/f\nAvg DecodeTime: " + avgcpu3 + "ms\n";
|
||||||
this->ClearBlank();
|
this->ClearBlank();
|
||||||
|
this->DrawRectFilled(0, 0, this->bitmap.bmp_info_header.width, this->bitmap.bmp_info_header.height, 0, 0, 0, 255);
|
||||||
this->DrawText(0, 0, 0, RenderD7::Color::Hex("#ffffff"), resultt);
|
this->DrawText(0, 0, 0, RenderD7::Color::Hex("#ffffff"), resultt);
|
||||||
std::string outname = csvpc + "/benchmark_" + RenderD7::GetTimeStr() + ".png";
|
std::string outname = csvpc + "/benchmark_" + RenderD7::GetTimeStr() + ".png";
|
||||||
this->SavePng(outname);
|
this->SavePng(outname);
|
||||||
@ -285,10 +277,10 @@ void RenderD7::BitmapPrinter::Benchmark()
|
|||||||
this->DrawRect(5, 5, this->bitmap.bmp_info_header.width - 10, this->bitmap.bmp_info_header.height - 10, 5, 0, 0, 0, 0);
|
this->DrawRect(5, 5, this->bitmap.bmp_info_header.width - 10, this->bitmap.bmp_info_header.height - 10, 5, 0, 0, 0, 0);
|
||||||
//this->DrawText(20, 20, 0, RenderD7::Color::Hex("#ffffff"), "Fps: " + std::to_string(fps));
|
//this->DrawText(20, 20, 0, RenderD7::Color::Hex("#ffffff"), "Fps: " + std::to_string(fps));
|
||||||
this->DrawText(0, 0, 0.5f, RenderD7::Color::Hex("#ff0000"), "Time: " + std::to_string(timer));
|
this->DrawText(0, 0, 0.5f, RenderD7::Color::Hex("#ff0000"), "Time: " + std::to_string(timer));
|
||||||
this->DrawText(0, 20, 0.5f, RenderD7::Color::Hex("#ff0000"), "Fps: " + std::to_string(fps));
|
this->DrawText(0, 10, 0.5f, RenderD7::Color::Hex("#ff0000"), "Fps: " + std::to_string(fps));
|
||||||
this->DrawText(0, 40, 0.5f, RenderD7::Color::Hex("#ff0000"), "dt: " + std::to_string(dtt));
|
this->DrawText(0, 20, 0.5f, RenderD7::Color::Hex("#ff0000"), "dt: " + std::to_string(dtt));
|
||||||
this->DrawText(0, 60, 0.5f, RenderD7::Color::Hex("#ff0000"), "MaxRenderTime: " + std::to_string(mdtt2*1000) + "ms/f");
|
this->DrawText(0, 30, 0.5f, RenderD7::Color::Hex("#ff0000"), "MaxEncodeTime: " + std::to_string(mdtt2*1000) + "ms/f");
|
||||||
this->DrawText(0, 80, 0.5f, RenderD7::Color::Hex("#ff0000"), "MaxConvertTime: " + std::to_string(mdtt3*1000) + "ms");
|
this->DrawText(0, 40, 0.5f, RenderD7::Color::Hex("#ff0000"), "MaxDecodeTime: " + std::to_string(mdtt3*1000) + "ms");
|
||||||
uint64_t currentTime2 = svcGetSystemTick();
|
uint64_t currentTime2 = svcGetSystemTick();
|
||||||
dtt2 = ((float)(currentTime2 / (float)TICKS_PER_MSEC) - (float)(lastTime2 / (float)TICKS_PER_MSEC)) / 1000.f;
|
dtt2 = ((float)(currentTime2 / (float)TICKS_PER_MSEC) - (float)(lastTime2 / (float)TICKS_PER_MSEC)) / 1000.f;
|
||||||
hdttt2.push_back(dtt2);
|
hdttt2.push_back(dtt2);
|
||||||
@ -333,6 +325,7 @@ void RenderD7::BitmapPrinter::SetupBenchmark(int framerate)
|
|||||||
benchmark = true;
|
benchmark = true;
|
||||||
setupbenchmark = true;
|
setupbenchmark = true;
|
||||||
this->testfps = framerate;
|
this->testfps = framerate;
|
||||||
|
this->testfpsd = framerate;
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <renderd7/debugfont.h>
|
#include <renderd7/debugfont.h>
|
||||||
@ -384,3 +377,25 @@ void RenderD7::BitmapPrinter::DrawText(int x, int y, float t_size, u32 color, st
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RenderD7::BitmapPrinter::Decode(Decoder deccc)
|
||||||
|
{
|
||||||
|
bool res = false;
|
||||||
|
|
||||||
|
switch (deccc)
|
||||||
|
{
|
||||||
|
case Decoder::BITMAP2PNG2C3D:
|
||||||
|
renderframe.LoadPFromBuffer(BitmapConverter::ConvertData(this->bitmap.DATA()));
|
||||||
|
res = true;
|
||||||
|
break;
|
||||||
|
case Decoder::BITMAP2C3D:
|
||||||
|
renderframe.LoadFromBitmap(this->bitmap);
|
||||||
|
res = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
res = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
@ -20,73 +20,3 @@ std::string RenderD7::Color::RGB2Hex(int r, int g, int b)
|
|||||||
ss << std::hex << (r << 16 | g << 8 | b );
|
ss << std::hex << (r << 16 | g << 8 | b );
|
||||||
return ss.str();
|
return ss.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t RenderD7::Color::Convert(uint32_t src, RenderD7::Color::ColorFmt srcFormat, RenderD7::Color::ColorFmt dstFormat)
|
|
||||||
{
|
|
||||||
uint32_t result = 0x00000000;
|
|
||||||
//uint8_t red, green, blue, alpha = 0x00;
|
|
||||||
/*switch(srcFormat)
|
|
||||||
{
|
|
||||||
case RGBA8:
|
|
||||||
{
|
|
||||||
red, green, blue, alpha = (UNPACK_RGBA(src));
|
|
||||||
switch (dstFormat)
|
|
||||||
{
|
|
||||||
case RGBA8:
|
|
||||||
{
|
|
||||||
result = ((((red) & 0xFF) << 0) | (((green) & 0xFF) << 8) | (((blue) & 0xFF) << 16) | (((alpha) & 0xFF) << 24));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case RGB8:
|
|
||||||
{
|
|
||||||
result = ((((red) & 0xFF) << 0) | (((green) & 0xFF) << 8) | (((blue) & 0xFF) << 16));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case RGB565:
|
|
||||||
{
|
|
||||||
//NOTYET
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case BGRA8:
|
|
||||||
{
|
|
||||||
result = ((((blue) & 0xFF) << 16) | (((green) & 0xFF) << 8) | (((red) & 0xFF) << 0 | (((alpha) & 0xFF) << 24)));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case BGR8:
|
|
||||||
{
|
|
||||||
result = ((((blue) & 0xFF) << 16) | (((green) & 0xFF) << 8) | (((red) & 0xFF) << 0));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case RGB8:
|
|
||||||
{
|
|
||||||
result[2] = src[2];
|
|
||||||
result[1] = src[1];
|
|
||||||
result[0] = src[0];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case RGB565:
|
|
||||||
{
|
|
||||||
// thanks neobrain
|
|
||||||
uint16_t px = *(uint16_t *)src;
|
|
||||||
blue = px & 0x1F;
|
|
||||||
green = (px >> 5) & 0x3F;
|
|
||||||
red = (px >> 11) & 0x1F;
|
|
||||||
|
|
||||||
result[0] = (blue << 3) | (blue >> 2);
|
|
||||||
result[1] = (green << 2) | (green >> 4);
|
|
||||||
result[2] = (red << 3) | (red >> 2);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
default: break;
|
|
||||||
}*/
|
|
||||||
return result;
|
|
||||||
}
|
|
@ -19,5 +19,5 @@ std::string RenderD7::GetTimeStr(void)
|
|||||||
{
|
{
|
||||||
time_t unixTime = time(NULL);
|
time_t unixTime = time(NULL);
|
||||||
struct tm* timeStruct = gmtime((const time_t*)&unixTime);
|
struct tm* timeStruct = gmtime((const time_t*)&unixTime);
|
||||||
return RenderD7::FormatString("%02i:%02i:%02i", timeStruct->tm_hour, timeStruct->tm_min, timeStruct->tm_sec);
|
return RenderD7::FormatString("%02i-%02i-%02i", timeStruct->tm_hour, timeStruct->tm_min, timeStruct->tm_sec);
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ RenderD7::Toast::Toast(std::string head, std::string msg)
|
|||||||
this->toast.DrawRectFilled(0, 0, 400, 25, 70, 70, 70, 255);
|
this->toast.DrawRectFilled(0, 0, 400, 25, 70, 70, 70, 255);
|
||||||
this->toast.DrawText(4, 5, 0, RenderD7::Color::Hex("#ffffff"), this->head);
|
this->toast.DrawText(4, 5, 0, RenderD7::Color::Hex("#ffffff"), this->head);
|
||||||
this->toast.DrawText(4, 40, 0, RenderD7::Color::Hex("#ffffff"), this->msg);
|
this->toast.DrawText(4, 40, 0, RenderD7::Color::Hex("#ffffff"), this->msg);
|
||||||
this->toastrendered->LoadPFromBuffer(this->toast.GetBitmap().DATA());
|
this->toastrendered->LoadPFromBuffer(BitmapConverter::ConvertData(toast.GetBitmap().DATA()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderD7::Toast::Draw(void) const
|
void RenderD7::Toast::Draw(void) const
|
||||||
@ -20,7 +20,7 @@ void RenderD7::Toast::Draw(void) const
|
|||||||
RenderD7::DrawRect(0, msgposy, 400, 25, RenderD7::Color::Hex("#222222"));
|
RenderD7::DrawRect(0, msgposy, 400, 25, RenderD7::Color::Hex("#222222"));
|
||||||
RenderD7::DrawText(2, msgposy+3, 0.7f, RenderD7::Color::Hex("#ffffff"), head);
|
RenderD7::DrawText(2, msgposy+3, 0.7f, RenderD7::Color::Hex("#ffffff"), head);
|
||||||
RenderD7::DrawText(2, msgposy+30, 0.6f, RenderD7::Color::Hex("#ffffff"), msg);*/
|
RenderD7::DrawText(2, msgposy+30, 0.6f, RenderD7::Color::Hex("#ffffff"), msg);*/
|
||||||
toastrendered->Draw(0, 0);
|
toastrendered->Draw(0, msgposy);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderD7::Toast::Logic()
|
void RenderD7::Toast::Logic()
|
||||||
|
Loading…
Reference in New Issue
Block a user