Adapt to new libnx NWindow/Framebuffer API
This commit is contained in:
parent
d4af9cd2b9
commit
29caa76884
@ -93,7 +93,7 @@ static inline void DrawPixel(uint32_t x, uint32_t y, color_t clr)
|
|||||||
{
|
{
|
||||||
if (x >= 1280 || y >= 720)
|
if (x >= 1280 || y >= 720)
|
||||||
return;
|
return;
|
||||||
u32 off = (y * g_framebuf_width + x)*4;
|
u32 off = y*g_framebuf_width + x*4;
|
||||||
g_framebuf[off] = BlendColor(g_framebuf[off], clr.r, clr.a); off++;
|
g_framebuf[off] = BlendColor(g_framebuf[off], clr.r, clr.a); off++;
|
||||||
g_framebuf[off] = BlendColor(g_framebuf[off], clr.g, clr.a); off++;
|
g_framebuf[off] = BlendColor(g_framebuf[off], clr.g, clr.a); off++;
|
||||||
g_framebuf[off] = BlendColor(g_framebuf[off], clr.b, clr.a); off++;
|
g_framebuf[off] = BlendColor(g_framebuf[off], clr.b, clr.a); off++;
|
||||||
@ -103,7 +103,7 @@ static inline void DrawPixelRaw(uint32_t x, uint32_t y, color_t clr)
|
|||||||
{
|
{
|
||||||
if (x >= 1280 || y >= 720)
|
if (x >= 1280 || y >= 720)
|
||||||
return;
|
return;
|
||||||
u32 off = (y * g_framebuf_width + x)*4;
|
u32 off = y*g_framebuf_width + x*4;
|
||||||
*((u32*)&g_framebuf[off]) = clr.r | (clr.g<<8) | (clr.b<<16) | (0xff<<24);
|
*((u32*)&g_framebuf[off]) = clr.r | (clr.g<<8) | (clr.b<<16) | (0xff<<24);
|
||||||
}
|
}
|
||||||
static inline void Draw4PixelsRaw(uint32_t x, uint32_t y, color_t clr)
|
static inline void Draw4PixelsRaw(uint32_t x, uint32_t y, color_t clr)
|
||||||
@ -113,12 +113,12 @@ static inline void Draw4PixelsRaw(uint32_t x, uint32_t y, color_t clr)
|
|||||||
|
|
||||||
u32 color = clr.r | (clr.g<<8) | (clr.b<<16) | (0xff<<24);
|
u32 color = clr.r | (clr.g<<8) | (clr.b<<16) | (0xff<<24);
|
||||||
u128 val = color | ((u128)color<<32) | ((u128)color<<64) | ((u128)color<<96);
|
u128 val = color | ((u128)color<<32) | ((u128)color<<64) | ((u128)color<<96);
|
||||||
u32 off = (y * g_framebuf_width + x)*4;
|
u32 off = y*g_framebuf_width + x*4;
|
||||||
*((u128*)&g_framebuf[off]) = val;
|
*((u128*)&g_framebuf[off]) = val;
|
||||||
}
|
}
|
||||||
static inline color_t FetchPixelColor(uint32_t x, uint32_t y)
|
static inline color_t FetchPixelColor(uint32_t x, uint32_t y)
|
||||||
{
|
{
|
||||||
u32 off = (y * g_framebuf_width + x)*4;
|
u32 off = y*g_framebuf_width + x*4;
|
||||||
u32 val = *((u32*)&g_framebuf[off]);
|
u32 val = *((u32*)&g_framebuf[off]);
|
||||||
u8 r = (u8)val;
|
u8 r = (u8)val;
|
||||||
u8 g = (u8)(val>>8);
|
u8 g = (u8)(val>>8);
|
||||||
|
@ -545,14 +545,10 @@ void menuLoop(void) {
|
|||||||
DrawText(interuiregular14, 180, 46 + 18, themeCurrent.textColor, VERSION);
|
DrawText(interuiregular14, 180, 46 + 18, themeCurrent.textColor, VERSION);
|
||||||
|
|
||||||
#ifdef PERF_LOG_DRAW//Seperate from the PERF_LOG define since this might affect perf.
|
#ifdef PERF_LOG_DRAW//Seperate from the PERF_LOG define since this might affect perf.
|
||||||
extern u64 g_tickdiff_vsync;
|
|
||||||
extern u64 g_tickdiff_frame;
|
extern u64 g_tickdiff_frame;
|
||||||
|
|
||||||
char tmpstr[64];
|
char tmpstr[64];
|
||||||
|
|
||||||
snprintf(tmpstr, sizeof(tmpstr)-1, "%lu", g_tickdiff_vsync);
|
|
||||||
DrawText(interuiregular14, 180 + 256, 46 + 18, themeCurrent.textColor, tmpstr);
|
|
||||||
|
|
||||||
snprintf(tmpstr, sizeof(tmpstr)-1, "%lu", g_tickdiff_frame);
|
snprintf(tmpstr, sizeof(tmpstr)-1, "%lu", g_tickdiff_frame);
|
||||||
DrawText(interuiregular14, 180 + 256, 46 + 16 + 18, themeCurrent.textColor, tmpstr);
|
DrawText(interuiregular14, 180 + 256, 46 + 16 + 18, themeCurrent.textColor, tmpstr);
|
||||||
#endif
|
#endif
|
||||||
|
@ -5,13 +5,18 @@
|
|||||||
#include "../common/common.h"
|
#include "../common/common.h"
|
||||||
#include "nx_touch.h"
|
#include "nx_touch.h"
|
||||||
|
|
||||||
|
// Define the desired framebuffer resolution (here we set it to 720p).
|
||||||
|
#define FB_WIDTH 1280
|
||||||
|
#define FB_HEIGHT 720
|
||||||
|
|
||||||
|
Framebuffer g_framebufObj;
|
||||||
|
|
||||||
uint8_t* g_framebuf;
|
uint8_t* g_framebuf;
|
||||||
u32 g_framebuf_width;
|
u32 g_framebuf_width;
|
||||||
|
|
||||||
bool menuUpdateErrorScreen(void);
|
bool menuUpdateErrorScreen(void);
|
||||||
|
|
||||||
#ifdef PERF_LOG
|
#ifdef PERF_LOG
|
||||||
u64 g_tickdiff_vsync=0;
|
|
||||||
u64 g_tickdiff_frame=0;
|
u64 g_tickdiff_frame=0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -114,7 +119,8 @@ int main(int argc, char **argv)
|
|||||||
if (errormsg[0]) error_screen = 1;
|
if (errormsg[0]) error_screen = 1;
|
||||||
|
|
||||||
if (!error_screen) {
|
if (!error_screen) {
|
||||||
gfxInitDefault();
|
framebufferCreate(&g_framebufObj, nwindowGetDefault(), FB_WIDTH, FB_HEIGHT, PIXEL_FORMAT_RGBA_8888, 2);
|
||||||
|
framebufferMakeLinear(&g_framebufObj);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
consoleInit(NULL);
|
consoleInit(NULL);
|
||||||
@ -122,29 +128,20 @@ int main(int argc, char **argv)
|
|||||||
printf("Press the + button to exit.\n");
|
printf("Press the + button to exit.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef PERF_LOG
|
|
||||||
if (!error_screen) {
|
|
||||||
gfxWaitForVsync();
|
|
||||||
|
|
||||||
start_tick = svcGetSystemTick();
|
|
||||||
gfxWaitForVsync();
|
|
||||||
g_tickdiff_vsync = svcGetSystemTick() - start_tick;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
while (appletMainLoop())
|
while (appletMainLoop())
|
||||||
{
|
{
|
||||||
#ifdef PERF_LOG
|
|
||||||
if (!error_screen) start_tick = svcGetSystemTick();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//Scan all the inputs. This should be done once for each frame
|
//Scan all the inputs. This should be done once for each frame
|
||||||
hidScanInput();
|
hidScanInput();
|
||||||
|
|
||||||
if (!error_screen) {
|
if (!error_screen) {
|
||||||
g_framebuf = gfxGetFramebuffer(&g_framebuf_width, NULL);
|
|
||||||
memset(g_framebuf, 237, gfxGetFramebufferSize());
|
|
||||||
if (!uiUpdate()) break;
|
if (!uiUpdate()) break;
|
||||||
|
g_framebuf = framebufferBegin(&g_framebufObj, &g_framebuf_width);
|
||||||
|
#ifdef PERF_LOG
|
||||||
|
start_tick = svcGetSystemTick();
|
||||||
|
#endif
|
||||||
|
memset(g_framebuf, 237, g_framebuf_width * FB_HEIGHT);
|
||||||
menuLoop();
|
menuLoop();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -152,13 +149,11 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!error_screen) {
|
if (!error_screen) {
|
||||||
gfxFlushBuffers();
|
framebufferEnd(&g_framebufObj);
|
||||||
|
|
||||||
#ifdef PERF_LOG
|
#ifdef PERF_LOG
|
||||||
g_tickdiff_frame = svcGetSystemTick() - start_tick;
|
g_tickdiff_frame = svcGetSystemTick() - start_tick;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
gfxSwapBuffers();
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
consoleUpdate(NULL);
|
consoleUpdate(NULL);
|
||||||
@ -166,7 +161,7 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!error_screen) {
|
if (!error_screen) {
|
||||||
gfxExit();
|
framebufferClose(&g_framebufObj);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
consoleExit(NULL);
|
consoleExit(NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user