Fix A Lot of Stuff
This commit is contained in:
parent
61cb41ae29
commit
83946b1e66
@ -12,6 +12,19 @@
|
||||
|
||||
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
|
||||
{
|
||||
public:
|
||||
@ -19,7 +32,7 @@ namespace RenderD7
|
||||
~BitmapPrinter();
|
||||
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 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);
|
||||
@ -49,6 +62,7 @@ namespace RenderD7
|
||||
void DrawText(int x, int y, float t_size, u32 color, std::string text);
|
||||
private:
|
||||
//funcs
|
||||
bool Decode(Decoder deccc);
|
||||
void DrawChar(u32 posX, u32 posY, u32 color, char character);
|
||||
//parameter
|
||||
int frame = 0;
|
||||
@ -60,6 +74,7 @@ namespace RenderD7
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//Benchmark Stuff;
|
||||
int testfpsd;
|
||||
bool benchmark = false;
|
||||
bool setupbenchmark;
|
||||
float frametime = 0;
|
||||
@ -81,6 +96,8 @@ namespace RenderD7
|
||||
std::vector<int> fpscountc;
|
||||
int renderedframes = 0;
|
||||
int testfps = 60;
|
||||
Encoder encc = Encoder::BITMAP;
|
||||
Decoder decc = Decoder::BITMAP2C3D;
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
};
|
||||
}
|
@ -13,14 +13,6 @@ namespace RenderD7
|
||||
{
|
||||
namespace Color
|
||||
{
|
||||
enum ColorFmt
|
||||
{
|
||||
RGBA8,
|
||||
RGB8,
|
||||
RGB565,
|
||||
BGRA8,
|
||||
BGR8
|
||||
};
|
||||
struct rgba
|
||||
{
|
||||
uint8_t r, g, b, a;
|
||||
@ -34,6 +26,5 @@ namespace RenderD7
|
||||
};
|
||||
std::string RGB2Hex(int r, int g, int b);
|
||||
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;
|
||||
}
|
||||
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)
|
||||
{
|
||||
@ -117,7 +107,7 @@ bool RenderD7::BitmapPrinter::DrawScreenDirectF(int framerate)
|
||||
if(frame == (60/framerate)){
|
||||
RenderD7::OnScreen(targetr);
|
||||
if(renderframe.loadet) renderframe.Unload();
|
||||
renderframe.LoadFromBitmap(bitmap);
|
||||
this->Decode(decc);
|
||||
frame = 0;
|
||||
updtt = true;
|
||||
}
|
||||
@ -135,7 +125,7 @@ bool RenderD7::BitmapPrinter::DrawScreenDirect()
|
||||
{
|
||||
RenderD7::OnScreen(targetr);
|
||||
if(renderframe.loadet) renderframe.Unload();
|
||||
renderframe.LoadFromBitmap(bitmap);
|
||||
this->Decode(decc);
|
||||
updtt = true;
|
||||
if(renderframe.loadet) renderframe.Draw(0, 0);
|
||||
}
|
||||
@ -195,7 +185,8 @@ bool RenderD7::BitmapPrinter::UpdateScreenF(int framerate)
|
||||
{
|
||||
if(frame == (60/framerate)){
|
||||
if(renderframe.loadet) renderframe.Unload();
|
||||
renderframe.LoadFromBitmap(bitmap);
|
||||
//renderframe.LoadFromBitmap(bitmap);
|
||||
this->Decode(decc);
|
||||
frame = 0;
|
||||
updtt = true;
|
||||
}
|
||||
@ -209,7 +200,7 @@ bool RenderD7::BitmapPrinter::UpdateScreen()
|
||||
if (isscreen)
|
||||
{
|
||||
if(renderframe.loadet) renderframe.Unload();
|
||||
renderframe.LoadFromBitmap(bitmap);
|
||||
this->Decode(decc);
|
||||
updtt = true;
|
||||
}
|
||||
return updtt;
|
||||
@ -260,8 +251,9 @@ void RenderD7::BitmapPrinter::Benchmark()
|
||||
std::string avgcpu3 = std::to_string(((alldtt3/(float)hdttt3.size())*1000));
|
||||
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->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);
|
||||
std::string outname = csvpc + "/benchmark_" + RenderD7::GetTimeStr() + ".png";
|
||||
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->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, 20, 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, 60, 0.5f, RenderD7::Color::Hex("#ff0000"), "MaxRenderTime: " + 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, 10, 0.5f, RenderD7::Color::Hex("#ff0000"), "Fps: " + std::to_string(fps));
|
||||
this->DrawText(0, 20, 0.5f, RenderD7::Color::Hex("#ff0000"), "dt: " + std::to_string(dtt));
|
||||
this->DrawText(0, 30, 0.5f, RenderD7::Color::Hex("#ff0000"), "MaxEncodeTime: " + std::to_string(mdtt2*1000) + "ms/f");
|
||||
this->DrawText(0, 40, 0.5f, RenderD7::Color::Hex("#ff0000"), "MaxDecodeTime: " + std::to_string(mdtt3*1000) + "ms");
|
||||
uint64_t currentTime2 = svcGetSystemTick();
|
||||
dtt2 = ((float)(currentTime2 / (float)TICKS_PER_MSEC) - (float)(lastTime2 / (float)TICKS_PER_MSEC)) / 1000.f;
|
||||
hdttt2.push_back(dtt2);
|
||||
@ -333,6 +325,7 @@ void RenderD7::BitmapPrinter::SetupBenchmark(int framerate)
|
||||
benchmark = true;
|
||||
setupbenchmark = true;
|
||||
this->testfps = framerate;
|
||||
this->testfpsd = framerate;
|
||||
}
|
||||
|
||||
#include <renderd7/debugfont.h>
|
||||
@ -383,4 +376,26 @@ void RenderD7::BitmapPrinter::DrawText(int x, int y, float t_size, u32 color, st
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
@ -19,74 +19,4 @@ std::string RenderD7::Color::RGB2Hex(int r, int g, int b)
|
||||
ss << "#";
|
||||
ss << std::hex << (r << 16 | g << 8 | b );
|
||||
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);
|
||||
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.DrawText(4, 5, 0, RenderD7::Color::Hex("#ffffff"), this->head);
|
||||
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
|
||||
@ -20,7 +20,7 @@ void RenderD7::Toast::Draw(void) const
|
||||
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+30, 0.6f, RenderD7::Color::Hex("#ffffff"), msg);*/
|
||||
toastrendered->Draw(0, 0);
|
||||
toastrendered->Draw(0, msgposy);
|
||||
}
|
||||
|
||||
void RenderD7::Toast::Logic()
|
||||
|
Loading…
Reference in New Issue
Block a user