mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-01-20 14:11:16 +00:00
Update renderer.cpp (clang-formatted)
This commit is contained in:
parent
3b9ca55bb9
commit
ea2849512e
@ -13,70 +13,97 @@
|
|||||||
#include <whb/sdcard.h>
|
#include <whb/sdcard.h>
|
||||||
|
|
||||||
struct IsleGX2Backend {
|
struct IsleGX2Backend {
|
||||||
GX2RBuffer positionBuffer;
|
GX2RBuffer positionBuffer;
|
||||||
GX2RBuffer colourBuffer;
|
GX2RBuffer colourBuffer;
|
||||||
WHBGfxShaderGroup shaderGroup;
|
WHBGfxShaderGroup shaderGroup;
|
||||||
bool rendering = false;
|
bool rendering = false;
|
||||||
|
|
||||||
void Init(const char* shaderPath) {
|
void Init(const char* shaderPath)
|
||||||
WHBLogUdpInit();
|
{
|
||||||
WHBProcInit();
|
WHBLogUdpInit();
|
||||||
WHBGfxInit();
|
WHBProcInit();
|
||||||
WHBMountSdCard();
|
WHBGfxInit();
|
||||||
char path[256];
|
WHBMountSdCard();
|
||||||
sprintf(path, "%s/%s", WHBGetSdCardMountPath(), shaderPath);
|
char path[256];
|
||||||
FILE* f = fopen(path, "rb");
|
sprintf(path, "%s/%s", WHBGetSdCardMountPath(), shaderPath);
|
||||||
if (!f) return;
|
FILE* f = fopen(path, "rb");
|
||||||
fseek(f, 0, SEEK_END);
|
if (!f) {
|
||||||
size_t fsize = ftell(f);
|
return;
|
||||||
rewind(f);
|
}
|
||||||
char* data = (char*) malloc(fsize);
|
fseek(f, 0, SEEK_END);
|
||||||
fread(data, 1, fsize, f);
|
size_t fsize = ftell(f);
|
||||||
WHBGfxLoadGFDShaderGroup(&shaderGroup, 0, data);
|
rewind(f);
|
||||||
free(data);
|
char* data = (char*) malloc(fsize);
|
||||||
WHBGfxInitShaderAttribute(&shaderGroup, "aPosition", 0, 0, GX2_ATTRIB_FORMAT_FLOAT_32_32_32_32);
|
fread(data, 1, fsize, f);
|
||||||
WHBGfxInitShaderAttribute(&shaderGroup, "aColour", 1, 0, GX2_ATTRIB_FORMAT_FLOAT_32_32_32_32);
|
WHBGfxLoadGFDShaderGroup(&shaderGroup, 0, data);
|
||||||
WHBGfxInitFetchShader(&shaderGroup);
|
free(data);
|
||||||
}
|
WHBGfxInitShaderAttribute(&shaderGroup, "aPosition", 0, 0, GX2_ATTRIB_FORMAT_FLOAT_32_32_32_32);
|
||||||
|
WHBGfxInitShaderAttribute(&shaderGroup, "aColour", 1, 0, GX2_ATTRIB_FORMAT_FLOAT_32_32_32_32);
|
||||||
|
WHBGfxInitFetchShader(&shaderGroup);
|
||||||
|
}
|
||||||
|
|
||||||
void StartFrame() {
|
void StartFrame()
|
||||||
if (rendering) return;
|
{
|
||||||
WHBGfxBeginRender();
|
if (rendering) {
|
||||||
WHBGfxBeginRenderTV();
|
return;
|
||||||
rendering = true;
|
}
|
||||||
}
|
WHBGfxBeginRender();
|
||||||
|
WHBGfxBeginRenderTV();
|
||||||
|
rendering = true;
|
||||||
|
}
|
||||||
|
|
||||||
void EndFrame() {
|
void EndFrame()
|
||||||
if (!rendering) return;
|
{
|
||||||
WHBGfxFinishRenderTV();
|
if (!rendering) {
|
||||||
WHBGfxBeginRenderDRC();
|
return;
|
||||||
WHBGfxFinishRenderDRC();
|
}
|
||||||
WHBGfxFinishRender();
|
WHBGfxFinishRenderTV();
|
||||||
rendering = false;
|
WHBGfxBeginRenderDRC();
|
||||||
}
|
WHBGfxFinishRenderDRC();
|
||||||
|
WHBGfxFinishRender();
|
||||||
|
rendering = false;
|
||||||
|
}
|
||||||
|
|
||||||
void Clear(float r, float g, float b) {
|
void Clear(float r, float g, float b)
|
||||||
StartFrame();
|
{
|
||||||
WHBGfxClearColor(r, g, b, 1.0f);
|
StartFrame();
|
||||||
}
|
WHBGfxClearColor(r, g, b, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
void Flip() {
|
void Flip() { EndFrame(); }
|
||||||
EndFrame();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Shutdown() {
|
void Shutdown()
|
||||||
WHBUnmountSdCard();
|
{
|
||||||
WHBGfxShutdown();
|
WHBUnmountSdCard();
|
||||||
WHBProcShutdown();
|
WHBGfxShutdown();
|
||||||
WHBLogUdpDeinit();
|
WHBProcShutdown();
|
||||||
}
|
WHBLogUdpDeinit();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static IsleGX2Backend g_backend;
|
static IsleGX2Backend g_backend;
|
||||||
|
|
||||||
extern "C" void IsleBackendInit(const char* shaderPath) { g_backend.Init(shaderPath); }
|
extern "C" void IsleBackendInit(const char* shaderPath)
|
||||||
extern "C" void IsleBackendStartFrame() { g_backend.StartFrame(); }
|
{
|
||||||
extern "C" void IsleBackendEndFrame() { g_backend.EndFrame(); }
|
g_backend.Init(shaderPath);
|
||||||
extern "C" void IsleBackendClear(float r, float g, float b) { g_backend.Clear(r, g, b); }
|
}
|
||||||
extern "C" void IsleBackendFlip() { g_backend.Flip(); }
|
extern "C" void IsleBackendStartFrame()
|
||||||
extern "C" void IsleBackendShutdown() { g_backend.Shutdown(); }
|
{
|
||||||
|
g_backend.StartFrame();
|
||||||
|
}
|
||||||
|
extern "C" void IsleBackendEndFrame()
|
||||||
|
{
|
||||||
|
g_backend.EndFrame();
|
||||||
|
}
|
||||||
|
extern "C" void IsleBackendClear(float r, float g, float b)
|
||||||
|
{
|
||||||
|
g_backend.Clear(r, g, b);
|
||||||
|
}
|
||||||
|
extern "C" void IsleBackendFlip()
|
||||||
|
{
|
||||||
|
g_backend.Flip();
|
||||||
|
}
|
||||||
|
extern "C" void IsleBackendShutdown()
|
||||||
|
{
|
||||||
|
g_backend.Shutdown();
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user