diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-12-16 01:03:19 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-12-16 01:03:19 +0300 |
commit | 78fb544aeb8761e8d554487487bc27e610822e2d (patch) | |
tree | 45ec42f5dcba94cd391f54a4cef2c017d7318d38 /src/render/safeopenglgraphics.cpp | |
parent | fcdc44b21bda79052205ca1884b7f3a1ebd32957 (diff) | |
download | manaverse-78fb544aeb8761e8d554487487bc27e610822e2d.tar.gz manaverse-78fb544aeb8761e8d554487487bc27e610822e2d.tar.bz2 manaverse-78fb544aeb8761e8d554487487bc27e610822e2d.tar.xz manaverse-78fb544aeb8761e8d554487487bc27e610822e2d.zip |
Use screenshort helpers for creating screenshots
Diffstat (limited to 'src/render/safeopenglgraphics.cpp')
-rw-r--r-- | src/render/safeopenglgraphics.cpp | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/src/render/safeopenglgraphics.cpp b/src/render/safeopenglgraphics.cpp index f2609c299..143594733 100644 --- a/src/render/safeopenglgraphics.cpp +++ b/src/render/safeopenglgraphics.cpp @@ -517,62 +517,6 @@ void SafeOpenGLGraphics::endDraw() popClipArea(); } -void SafeOpenGLGraphics::prepareScreenshot() -{ - if (config.getBoolValue("usefbo")) - graphicsManager.createFBO(mRect.w, mRect.h, &mFbo); -} - -SDL_Surface* SafeOpenGLGraphics::getScreenshot() -{ - const int h = mRect.h; - const int w = mRect.w - (mRect.w % 4); - GLint pack = 1; - - SDL_Surface *const screenshot = MSDL_CreateRGBSurface( - SDL_SWSURFACE, w, h, 24, 0xff0000, 0x00ff00, 0x0000ff, 0x000000); - - if (!screenshot || !screenshot->pixels) - return nullptr; - - if (SDL_MUSTLOCK(screenshot)) - SDL_LockSurface(screenshot); - - // Grap the pixel buffer and write it to the SDL surface - glGetIntegerv(GL_PACK_ALIGNMENT, &pack); - glPixelStorei(GL_PACK_ALIGNMENT, 1); - glReadPixels(0, 0, w, h, GL_RGB, GL_UNSIGNED_BYTE, screenshot->pixels); - - // Flip the screenshot, as OpenGL has 0,0 in bottom left - size_t lineSize = 3 * w; - GLubyte* buf = new GLubyte[lineSize]; - - const int h2 = h / 2; - for (int i = 0; i < h2; i++) - { - GLubyte *const top = static_cast<GLubyte*>( - screenshot->pixels) + lineSize * i; - GLubyte *const bot = static_cast<GLubyte*>( - screenshot->pixels) + lineSize * (h - 1 - i); - - memcpy(buf, top, lineSize); - memcpy(top, bot, lineSize); - memcpy(bot, buf, lineSize); - } - - delete [] buf; - - if (config.getBoolValue("usefbo")) - graphicsManager.deleteFBO(&mFbo); - - glPixelStorei(GL_PACK_ALIGNMENT, pack); - - if (SDL_MUSTLOCK(screenshot)) - SDL_UnlockSurface(screenshot); - - return screenshot; -} - void SafeOpenGLGraphics::pushClipArea(const Rect &area) { int transX = 0; |