A Lot of Bugfixes
This commit is contained in:
parent
3270842a1b
commit
bca1c36f75
19
.vscode/settings.json
vendored
19
.vscode/settings.json
vendored
@ -38,6 +38,23 @@
|
|||||||
"system_error": "cpp",
|
"system_error": "cpp",
|
||||||
"tuple": "cpp",
|
"tuple": "cpp",
|
||||||
"typeinfo": "cpp",
|
"typeinfo": "cpp",
|
||||||
"utility": "cpp"
|
"utility": "cpp",
|
||||||
|
"atomic": "cpp",
|
||||||
|
"bit": "cpp",
|
||||||
|
"bitset": "cpp",
|
||||||
|
"chrono": "cpp",
|
||||||
|
"codecvt": "cpp",
|
||||||
|
"condition_variable": "cpp",
|
||||||
|
"cstring": "cpp",
|
||||||
|
"ctime": "cpp",
|
||||||
|
"deque": "cpp",
|
||||||
|
"forward_list": "cpp",
|
||||||
|
"map": "cpp",
|
||||||
|
"iomanip": "cpp",
|
||||||
|
"memory_resource": "cpp",
|
||||||
|
"ratio": "cpp",
|
||||||
|
"regex": "cpp",
|
||||||
|
"shared_mutex": "cpp",
|
||||||
|
"valarray": "cpp"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -32,6 +32,7 @@
|
|||||||
#include <renderd7/bmp.hpp>
|
#include <renderd7/bmp.hpp>
|
||||||
#include <renderd7/bmpconverter.hpp>
|
#include <renderd7/bmpconverter.hpp>
|
||||||
|
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
#include <renderd7/external/fs.h>
|
#include <renderd7/external/fs.h>
|
||||||
@ -447,28 +448,40 @@ namespace RenderD7
|
|||||||
/// Setup the Benchmark
|
/// Setup the Benchmark
|
||||||
/// \param framerate The Fps of the ScreenUpdates
|
/// \param framerate The Fps of the ScreenUpdates
|
||||||
void SetupBenchmark(int framerate);
|
void SetupBenchmark(int framerate);
|
||||||
|
bool IsBenchmarkRunning() { return this->benchmark; }
|
||||||
|
|
||||||
|
void DrawText(int x, int y, float t_size, u32 color, std::string text);
|
||||||
private:
|
private:
|
||||||
int frame = 0;
|
int frame = 0;
|
||||||
RenderD7::Image renderframe;
|
RenderD7::Image renderframe;
|
||||||
bool isscreen = false;
|
bool isscreen = false;
|
||||||
C3D_RenderTarget* targetr;
|
C3D_RenderTarget* targetr;
|
||||||
BMP bitmap = NULL;
|
BMP bitmap = BMP(20, 20, true); //Need to Set e Predefined Bitmap. If not the System will Crash.
|
||||||
BMP blank = NULL;
|
BMP blank = BMP(20, 20, true); //Need to Set e Predefined Bitmap. If not the System will Crash.
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//Benchmark Stuff;
|
//Benchmark Stuff;
|
||||||
bool benchmark = false;
|
bool benchmark = false;
|
||||||
bool setupbenchmark;
|
bool setupbenchmark;
|
||||||
float frametime = 0;
|
float frametime = 0;
|
||||||
uint64_t lastTime = 0;
|
uint64_t lastTime = 0;
|
||||||
float dtt = 0.f;
|
float dtt = 0.f;
|
||||||
|
float dtt2 = 0.f;
|
||||||
|
float dtt3 = 0.f;
|
||||||
float timer = 0;
|
float timer = 0;
|
||||||
float mhdtt = 0;
|
float mhdtt = 0;
|
||||||
|
float mdtt2;
|
||||||
|
float mdtt3;
|
||||||
|
|
||||||
float fpsClock = 0.f;
|
float fpsClock = 0.f;
|
||||||
int frameCounter = 0, fps = 0;
|
int frameCounter = 0, fps = 0;
|
||||||
|
|
||||||
std::vector<float> hdttt;
|
std::vector<float> hdttt;
|
||||||
|
std::vector<float> hdttt2;
|
||||||
|
std::vector<float> hdttt3;
|
||||||
std::vector<int> fpscountc;
|
std::vector<int> fpscountc;
|
||||||
int renderedframes = 0;
|
int renderedframes = 0;
|
||||||
int testfps = 60;
|
int testfps = 60;
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
};
|
};
|
||||||
} /// RenderD7
|
} /// RenderD7
|
||||||
|
@ -960,6 +960,7 @@ void RenderD7::Image::LoadPng(const std::string path)
|
|||||||
if (loadet)
|
if (loadet)
|
||||||
{
|
{
|
||||||
C3D_TexDelete(this->img.tex);
|
C3D_TexDelete(this->img.tex);
|
||||||
|
loadet = false;
|
||||||
}
|
}
|
||||||
lodepng::decode(ImageBuffer, width, height, path);
|
lodepng::decode(ImageBuffer, width, height, path);
|
||||||
|
|
||||||
@ -989,12 +990,14 @@ void RenderD7::Image::LoadPng(const std::string path)
|
|||||||
|
|
||||||
RenderD7::Image::~Image()
|
RenderD7::Image::~Image()
|
||||||
{
|
{
|
||||||
C3D_TexDelete(img.tex);
|
if(loadet) C3D_TexDelete(img.tex);
|
||||||
|
loadet = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderD7::Image::Unload()
|
void RenderD7::Image::Unload()
|
||||||
{
|
{
|
||||||
C3D_TexDelete(img.tex);
|
if(loadet) C3D_TexDelete(img.tex);
|
||||||
|
loadet = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderD7::Image::LoadPFromBuffer(const std::vector<u8> &buffer)
|
void RenderD7::Image::LoadPFromBuffer(const std::vector<u8> &buffer)
|
||||||
@ -1003,6 +1006,7 @@ void RenderD7::Image::LoadPFromBuffer(const std::vector<u8> &buffer)
|
|||||||
if (loadet)
|
if (loadet)
|
||||||
{
|
{
|
||||||
C3D_TexDelete(this->img.tex);
|
C3D_TexDelete(this->img.tex);
|
||||||
|
loadet = false;
|
||||||
}
|
}
|
||||||
unsigned width, height;
|
unsigned width, height;
|
||||||
lodepng::decode(ImageBuffer, width, height, buffer);
|
lodepng::decode(ImageBuffer, width, height, buffer);
|
||||||
@ -1108,7 +1112,8 @@ bool RenderD7::DrawImage(C2D_Image img, float x, float y, float scaleX, float sc
|
|||||||
|
|
||||||
bool RenderD7::Image::Draw(float x, float y, float scaleX, float scaleY)
|
bool RenderD7::Image::Draw(float x, float y, float scaleX, float scaleY)
|
||||||
{
|
{
|
||||||
return C2D_DrawImageAt(this->img, x, y, 0.5f, nullptr, scaleX, scaleY);
|
if(loadet) return C2D_DrawImageAt(this->img, x, y, 0.5f, nullptr, scaleX, scaleY);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
bool RenderD7::FS::FileExist(const std::string& path)
|
bool RenderD7::FS::FileExist(const std::string& path)
|
||||||
{
|
{
|
||||||
@ -1333,7 +1338,7 @@ std::string RenderD7::Kbd(int lenght, SwkbdType tp)
|
|||||||
SwkbdState state;
|
SwkbdState state;
|
||||||
char temp[lenght + 1] = { 0 };
|
char temp[lenght + 1] = { 0 };
|
||||||
|
|
||||||
swkbdInit(&state, SwkbdType::SWKBD_TYPE_NUMPAD, 2, lenght);
|
swkbdInit(&state, tp, 2, lenght);
|
||||||
swkbdSetValidation(&state, SWKBD_NOTBLANK_NOTEMPTY, SWKBD_FILTER_PROFANITY, 0);
|
swkbdSetValidation(&state, SWKBD_NOTBLANK_NOTEMPTY, SWKBD_FILTER_PROFANITY, 0);
|
||||||
SwkbdButton ret = swkbdInputText(&state, temp, sizeof(temp));
|
SwkbdButton ret = swkbdInputText(&state, temp, sizeof(temp));
|
||||||
temp[lenght] = '\0';
|
temp[lenght] = '\0';
|
||||||
@ -1563,8 +1568,13 @@ unsigned Image_to_C3D(C2D_Image img, const std::vector<unsigned char>& bmpc) {
|
|||||||
|
|
||||||
void RenderD7::Image::LoadFromBitmap(BMP bitmap)
|
void RenderD7::Image::LoadFromBitmap(BMP bitmap)
|
||||||
{
|
{
|
||||||
|
loadet = false;
|
||||||
unsigned error = Image_to_C3D(this->img, bitmap.DATA());
|
unsigned error = Image_to_C3D(this->img, bitmap.DATA());
|
||||||
|
if (error == 0)
|
||||||
|
{
|
||||||
|
this->loadet = true;
|
||||||
|
}
|
||||||
|
|
||||||
if(error) {
|
if(error) {
|
||||||
std::cout << "BMP decoding error " << error << std::endl;
|
std::cout << "BMP decoding error " << error << std::endl;
|
||||||
RenderD7::AddOvl(std::make_unique<RenderD7::Toast>("Bmp - Error", "Code: " + std::to_string(error)));
|
RenderD7::AddOvl(std::make_unique<RenderD7::Toast>("Bmp - Error", "Code: " + std::to_string(error)));
|
||||||
@ -1600,14 +1610,15 @@ void RenderD7::Toast::Logic()
|
|||||||
|
|
||||||
RenderD7::BitmapPrinter::BitmapPrinter(int w, int h)
|
RenderD7::BitmapPrinter::BitmapPrinter(int w, int h)
|
||||||
{
|
{
|
||||||
bitmap = BMP(w, h, true);
|
BMP newmap(w, h, true);
|
||||||
|
bitmap = newmap;
|
||||||
//renderframe.LoadPFromBuffer(BitmapConverter::ConvertData(bitmap.DATA()));
|
//renderframe.LoadPFromBuffer(BitmapConverter::ConvertData(bitmap.DATA()));
|
||||||
blank = BMP(w, h, true);
|
blank = newmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderD7::BitmapPrinter::~BitmapPrinter()
|
RenderD7::BitmapPrinter::~BitmapPrinter()
|
||||||
{
|
{
|
||||||
|
if(this->renderframe.loadet) this->renderframe.Unload();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RenderD7::BitmapPrinter::DecodeFile(std::string file)
|
bool RenderD7::BitmapPrinter::DecodeFile(std::string file)
|
||||||
@ -1697,7 +1708,7 @@ void RenderD7::BitmapPrinter::CreateScreen(C3D_RenderTarget *target)
|
|||||||
bitmap = BMP(320, 240, true);
|
bitmap = BMP(320, 240, true);
|
||||||
blank = BMP(320, 240, true);
|
blank = BMP(320, 240, true);
|
||||||
}
|
}
|
||||||
//renderframe.LoadPFromBuffer(BitmapConverter::ConvertData(bitmap.DATA()));
|
renderframe.LoadPFromBuffer(BitmapConverter::ConvertData(bitmap.DATA()));
|
||||||
|
|
||||||
}
|
}
|
||||||
void RenderD7::BitmapPrinter::DrawScreenDirectF(int framerate)
|
void RenderD7::BitmapPrinter::DrawScreenDirectF(int framerate)
|
||||||
@ -1706,12 +1717,12 @@ void RenderD7::BitmapPrinter::DrawScreenDirectF(int framerate)
|
|||||||
{
|
{
|
||||||
if(frame == (60/framerate)){
|
if(frame == (60/framerate)){
|
||||||
RenderD7::OnScreen(targetr);
|
RenderD7::OnScreen(targetr);
|
||||||
renderframe.Unload();
|
if(renderframe.loadet) renderframe.Unload();
|
||||||
renderframe.LoadFromBitmap(bitmap);
|
renderframe.LoadFromBitmap(bitmap);
|
||||||
frame = 0;
|
frame = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderframe.Draw(0, 0);
|
if(renderframe.loadet) renderframe.Draw(0, 0);
|
||||||
frame++;
|
frame++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1721,9 +1732,9 @@ void RenderD7::BitmapPrinter::DrawScreenDirect()
|
|||||||
if (isscreen)
|
if (isscreen)
|
||||||
{
|
{
|
||||||
RenderD7::OnScreen(targetr);
|
RenderD7::OnScreen(targetr);
|
||||||
renderframe.Unload();
|
if(renderframe.loadet) renderframe.Unload();
|
||||||
renderframe.LoadFromBitmap(bitmap);
|
renderframe.LoadFromBitmap(bitmap);
|
||||||
renderframe.Draw(0, 0);
|
if(renderframe.loadet) renderframe.Draw(0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1761,7 +1772,7 @@ void RenderD7::BitmapPrinter::DrawScreenF(int framerate)
|
|||||||
frame = 0;
|
frame = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderframe.Draw(0, 0);
|
if(renderframe.loadet) renderframe.Draw(0, 0);
|
||||||
frame++;
|
frame++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1770,7 +1781,7 @@ void RenderD7::BitmapPrinter::DrawScreen()
|
|||||||
if (isscreen)
|
if (isscreen)
|
||||||
{
|
{
|
||||||
RenderD7::OnScreen(targetr);
|
RenderD7::OnScreen(targetr);
|
||||||
renderframe.Draw(0, 0);
|
if(renderframe.loadet) renderframe.Draw(0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void RenderD7::BitmapPrinter::UpdateScreenF(int framerate)
|
void RenderD7::BitmapPrinter::UpdateScreenF(int framerate)
|
||||||
@ -1778,7 +1789,7 @@ void RenderD7::BitmapPrinter::UpdateScreenF(int framerate)
|
|||||||
if (isscreen)
|
if (isscreen)
|
||||||
{
|
{
|
||||||
if(frame == (60/framerate)){
|
if(frame == (60/framerate)){
|
||||||
renderframe.Unload();
|
if(renderframe.loadet) renderframe.Unload();
|
||||||
renderframe.LoadFromBitmap(bitmap);
|
renderframe.LoadFromBitmap(bitmap);
|
||||||
frame = 0;
|
frame = 0;
|
||||||
}
|
}
|
||||||
@ -1789,7 +1800,7 @@ void RenderD7::BitmapPrinter::UpdateScreen()
|
|||||||
{
|
{
|
||||||
if (isscreen)
|
if (isscreen)
|
||||||
{
|
{
|
||||||
renderframe.Unload();
|
if(renderframe.loadet) renderframe.Unload();
|
||||||
renderframe.LoadFromBitmap(bitmap);
|
renderframe.LoadFromBitmap(bitmap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1804,7 +1815,7 @@ void RenderD7::BitmapPrinter::Benchmark()
|
|||||||
renderedframes = 0;
|
renderedframes = 0;
|
||||||
timer = 0;
|
timer = 0;
|
||||||
setupbenchmark = false;
|
setupbenchmark = false;
|
||||||
lastTime = svcGetSystemTick();
|
lastTime = svcGetSystemTick();
|
||||||
}
|
}
|
||||||
if(benchmark)
|
if(benchmark)
|
||||||
{
|
{
|
||||||
@ -1813,21 +1824,33 @@ void RenderD7::BitmapPrinter::Benchmark()
|
|||||||
std::string renderedf = std::to_string(renderedframes);
|
std::string renderedf = std::to_string(renderedframes);
|
||||||
std::string avgdtt = std::to_string(mhdtt);
|
std::string avgdtt = std::to_string(mhdtt);
|
||||||
float alldtt = 0;
|
float alldtt = 0;
|
||||||
for (size_t i = 0; i < hdttt.size(); i++)
|
for (size_t i = 1; i < hdttt.size(); i++)
|
||||||
{
|
{
|
||||||
alldtt += hdttt[i];
|
alldtt += hdttt[i];
|
||||||
}
|
}
|
||||||
|
float alldtt2 = 0;
|
||||||
|
for (size_t i = 1; i < hdttt2.size(); i++)
|
||||||
|
{
|
||||||
|
alldtt2 += hdttt2[i];
|
||||||
|
}
|
||||||
|
float alldtt3 = 0;
|
||||||
|
for (size_t i = 1; i < hdttt3.size(); i++)
|
||||||
|
{
|
||||||
|
alldtt3 += hdttt3[i];
|
||||||
|
}
|
||||||
int allfps = 0;
|
int allfps = 0;
|
||||||
for (size_t f = 0; f < fpscountc.size(); f++)
|
for (size_t f = 1; f < fpscountc.size(); f++)
|
||||||
{
|
{
|
||||||
allfps += fpscountc[f];
|
allfps += fpscountc[f];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
std::string avgcpu = std::to_string((alldtt/(float)hdttt.size()));
|
std::string avgcpu = std::to_string((alldtt/(float)hdttt.size()-1));
|
||||||
std::string avgfps = std::to_string((allfps/(int)fpscountc.size()));
|
std::string avgcpu2 = std::to_string(((alldtt2/(float)hdttt2.size()-1)*1000));
|
||||||
|
std::string avgcpu3 = std::to_string(((alldtt3/(float)hdttt3.size()-1)*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;
|
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";
|
||||||
RenderD7::Error::DisplayError("Result", resultt, 30);
|
RenderD7::Error::DisplayError("Result", resultt, 30);
|
||||||
benchmark = false;
|
benchmark = false;
|
||||||
}
|
}
|
||||||
@ -1842,13 +1865,28 @@ void RenderD7::BitmapPrinter::Benchmark()
|
|||||||
frameCounter = 0;
|
frameCounter = 0;
|
||||||
fpsClock = 0.f;
|
fpsClock = 0.f;
|
||||||
}
|
}
|
||||||
|
uint64_t lastTime2 = svcGetSystemTick();
|
||||||
this->ClearBlank();
|
this->ClearBlank();
|
||||||
this->DrawRectFilled(0, 0, this->bitmap.bmp_info_header.width, this->bitmap.bmp_info_header.width, 255, 255, 255, 255);
|
this->DrawRectFilled(0, 0, this->bitmap.bmp_info_header.width, this->bitmap.bmp_info_header.width, 255, 255, 255, 255);
|
||||||
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);
|
||||||
|
uint64_t currentTime2 = svcGetSystemTick();
|
||||||
|
dtt2 = ((float)(currentTime2 / (float)TICKS_PER_MSEC) - (float)(lastTime2 / (float)TICKS_PER_MSEC)) / 1000.f;
|
||||||
|
hdttt2.push_back(dtt2);
|
||||||
|
lastTime2 = svcGetSystemTick();
|
||||||
this->UpdateScreenF(testfps);
|
this->UpdateScreenF(testfps);
|
||||||
this->DrawScreen();
|
currentTime2 = svcGetSystemTick();
|
||||||
|
dtt3 = ((float)(currentTime2 / (float)TICKS_PER_MSEC) - (float)(lastTime2 / (float)TICKS_PER_MSEC)) / 1000.f;
|
||||||
|
hdttt3.push_back(dtt3);
|
||||||
|
if (!shouldbe_disabled) this->DrawScreen();
|
||||||
renderedframes++;
|
renderedframes++;
|
||||||
|
if(mdtt2 < dtt2)
|
||||||
|
{
|
||||||
|
mdtt2 = dtt2;
|
||||||
|
}
|
||||||
|
if(mdtt3 < dtt3)
|
||||||
|
{
|
||||||
|
mdtt3 = dtt3;
|
||||||
|
}
|
||||||
timer+= 1*dtt;
|
timer+= 1*dtt;
|
||||||
float hdtt = C3D_GetProcessingTime();
|
float hdtt = C3D_GetProcessingTime();
|
||||||
hdttt.push_back(hdtt);
|
hdttt.push_back(hdtt);
|
||||||
@ -1857,8 +1895,16 @@ void RenderD7::BitmapPrinter::Benchmark()
|
|||||||
{
|
{
|
||||||
mhdtt = C3D_GetProcessingTime();
|
mhdtt = C3D_GetProcessingTime();
|
||||||
}
|
}
|
||||||
RenderD7::DrawText(0, 0, 0.5f, RenderD7::Color::Hex("#ff0000"), "Time: " + std::to_string(timer));
|
if (!shouldbe_disabled)
|
||||||
RenderD7::DrawText(0, 20, 0.5f, RenderD7::Color::Hex("#ff0000"), "Fps: " + std::to_string(fps));
|
{
|
||||||
|
RenderD7::OnScreen(Bottom);
|
||||||
|
RenderD7::DrawText(0, 0, 0.5f, RenderD7::Color::Hex("#ff0000"), "Time: " + std::to_string(timer));
|
||||||
|
RenderD7::DrawText(0, 20, 0.5f, RenderD7::Color::Hex("#ff0000"), "Fps: " + std::to_string(fps));
|
||||||
|
RenderD7::DrawText(0, 40, 0.5f, RenderD7::Color::Hex("#ff0000"), "dt: " + std::to_string(dtt));
|
||||||
|
RenderD7::DrawText(0, 60, 0.5f, RenderD7::Color::Hex("#ff0000"), "MaxRenderTime: " + std::to_string(mdtt2*1000) + "ms/f");
|
||||||
|
RenderD7::DrawText(0, 80, 0.5f, RenderD7::Color::Hex("#ff0000"), "MaxConvertTime: " + std::to_string(mdtt3*1000) + "ms");
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1867,4 +1913,9 @@ void RenderD7::BitmapPrinter::SetupBenchmark(int framerate)
|
|||||||
benchmark = true;
|
benchmark = true;
|
||||||
setupbenchmark = true;
|
setupbenchmark = true;
|
||||||
this->testfps = framerate;
|
this->testfps = framerate;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RenderD7::BitmapPrinter::DrawText(int x, int y, float t_size, u32 color, std::string text)
|
||||||
|
{
|
||||||
|
//Todo
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user