take screenshot libwiigui January 06, 2013 11:42AM | Registered: 12 years ago Posts: 12 |
static u8* videoScreen = NULL; void TakeScreenshot() { int size = VIDEO_GetFrameBufferSize(vmode); videoScreen = (u8*)memalign(32,size); if (videoScreen) memcpy(videoScreen,xfb[whichfb],VIDEO_GetFrameBufferSize(vmode)); }in menu.cpp i call TakeScreenshot() and try to display the image:
TakeScreenshot(); ... GuiImage screen(videoScreen,640,480); HaltGui(); mainWindow->Append(&screen); ResumeGui();
Re: take screenshot libwiigui January 13, 2013 10:16PM | Registered: 12 years ago Posts: 12 |
void TakeScreenshot() { videoScreenshot = (u8 *)memalign(32, vmode->fbWidth * vmode->efbHeight * 4); if(!videoScreenshot) return; GX_SetTexCopySrc(0, 0, vmode->fbWidth, vmode->efbHeight); GX_SetTexCopyDst(vmode->fbWidth, vmode->efbHeight, GX_TF_RGBA8, GX_FALSE); DCInvalidateRange(videoScreenshot, vmode->fbWidth * vmode->efbHeight * 4); GX_CopyTex(videoScreenshot, GX_FALSE); GX_PixModeSync(); }
TakeScreenshot(); ... videoImg = new GuiImage(); videoImg->SetImage(videoScreenshot, vmode->fbWidth, vmode->viHeight); videoImg->SetScaleX(screenwidth/(float)vmode->fbWidth); videoImg->SetScaleY(screenheight/(float)vmode->efbHeight); mainWindow->Append(videoImg);