partially implement camera clears

This commit is contained in:
Stefanos Kornilios Mitsis Poiitidis 2025-02-23 22:01:14 +02:00
parent e0e07883d1
commit fc6cdc5f7e
2 changed files with 9 additions and 3 deletions

View file

@ -1089,6 +1089,8 @@ void endUpdate(Camera* cam) {
{
pvr_set_zclip(0.0f);
pvr_wait_ready();
pvr_set_bg_color(cam->clearColor.red / 255.0f, cam->clearColor.green / 255.0f, cam->clearColor.blue / 255.0f);
if (cam->frameBuffer->type == Raster::CAMERATEXTURE) {
auto natras = GETDCRASTEREXT(cam->frameBuffer);
uint32 rx = cam->frameBuffer->width;
@ -1146,7 +1148,10 @@ void endUpdate(Camera* cam) {
matfxContexts.clear();
}
void clearCamera(Camera*,RGBA*,uint32) {
void clearCamera(Camera* cam,RGBA* col,uint32 flags) {
if (flags & rwCAMERACLEARIMAGE) {
cam->clearColor = *col;
}
UNIMPL_LOG();
}
@ -4092,9 +4097,9 @@ rasterCreate(Raster* raster)
if (raster->type == Raster::CAMERATEXTURE) {
if (rasterFmt == Raster::DEFAULT && raster->depth == 0) {
fprintf(stderr, "CameraTexture: Default means 4444?\n");
fprintf(stderr, "CameraTexture: Default means 565?\n");
raster->depth = 16;
raster->format |= Raster::C4444;
raster->format |= Raster::C565;
}
}

View file

@ -779,6 +779,7 @@ struct Camera
/* RW: frustum sectors, space, position */
World *world;
ObjectWithFrame::Sync originalSync;
RGBA clearColor;
void (*originalBeginUpdate)(Camera*);
void (*originalEndUpdate)(Camera*);