Browse Source

Overlap texture data to fix the seam

psp
staphen 2 years ago committed by Anders Jenbo
parent
commit
aa535532ed
  1. 9
      Source/engine/dx.cpp
  2. 16
      Source/storm/storm_svid.cpp
  3. 8
      Source/utils/display.cpp

9
Source/engine/dx.cpp

@ -231,7 +231,7 @@ void RenderPresent()
if (SDL_UpdateTexture(left.get(), nullptr, surface->pixels, surface->pitch) <= -1) { // pitch is 2560
ErrSdl();
}
if (SDL_UpdateTexture(right.get(), nullptr, reinterpret_cast<char *>(surface->pixels) + surface->pitch / 2, surface->pitch) <= -1) { // pitch is 2560
if (SDL_UpdateTexture(right.get(), nullptr, reinterpret_cast<char *>(surface->pixels) + surface->pitch - (surface->pitch / gnScreenWidth) * 512, surface->pitch) <= -1) { // pitch is 2560
ErrSdl();
}
@ -244,11 +244,12 @@ void RenderPresent()
ErrSdl();
}
SDL_Rect leftRect = MakeSdlRect(0, 0, gnScreenWidth / 2, gnScreenHeight);
if (SDL_RenderCopy(renderer, left.get(), nullptr, &leftRect) <= -1) {
if (SDL_RenderCopy(renderer, left.get(), &leftRect, &leftRect) <= -1) {
ErrSdl();
}
SDL_Rect rightRect = MakeSdlRect(gnScreenWidth / 2, 0, gnScreenWidth / 2, gnScreenHeight);
if (SDL_RenderCopy(renderer, right.get(), nullptr, &rightRect) <= -1) {
SDL_Rect rightSrcRect = MakeSdlRect(512 - gnScreenWidth / 2 - gnScreenWidth % 2 - 1, 0, gnScreenWidth / 2 + gnScreenWidth % 2, gnScreenHeight);
SDL_Rect rightDstRect = MakeSdlRect(gnScreenWidth / 2, 0, gnScreenWidth / 2 + gnScreenWidth % 2, gnScreenHeight);
if (SDL_RenderCopy(renderer, right.get(), &rightSrcRect, &rightDstRect) <= -1) {
ErrSdl();
}
if (ControlMode == ControlTypes::VirtualGamepad) {

16
Source/storm/storm_svid.cpp

@ -286,11 +286,11 @@ bool SVidPlayBegin(const char *filename, int flags)
int renderWidth = static_cast<int>(SVidWidth);
int renderHeight = static_cast<int>(SVidHeight);
#ifdef PSP
left = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_ABGR1555, SDL_TEXTUREACCESS_STREAMING, renderWidth / 2, renderHeight);
right = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_ABGR1555, SDL_TEXTUREACCESS_STREAMING, renderWidth / 2, renderHeight);
left = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_ABGR1555, SDL_TEXTUREACCESS_STREAMING, 512, renderHeight);
right = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_ABGR1555, SDL_TEXTUREACCESS_STREAMING, 512, renderHeight);
#else
left = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, renderWidth / 2, renderHeight);
right = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, renderWidth / 2, renderHeight);
left = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, 512, renderHeight);
right = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, 512, renderHeight);
#endif
if (SDL_RenderSetLogicalSize(renderer, renderWidth, renderHeight) <= -1) {
ErrSdl();
@ -386,11 +386,11 @@ void SVidPlayEnd()
#ifndef USE_SDL1
if (renderer != nullptr) {
#ifdef PSP
left = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_ABGR1555, SDL_TEXTUREACCESS_STREAMING, gnScreenWidth / 2, gnScreenHeight);
right = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_ABGR1555, SDL_TEXTUREACCESS_STREAMING, gnScreenWidth / 2, gnScreenHeight);
left = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_ABGR1555, SDL_TEXTUREACCESS_STREAMING, 512, gnScreenHeight);
right = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_ABGR1555, SDL_TEXTUREACCESS_STREAMING, 512, gnScreenHeight);
#else
left = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, gnScreenWidth / 2, gnScreenHeight);
right = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, gnScreenWidth / 2, gnScreenHeight);
left = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, 512, gnScreenHeight);
right = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, 512, gnScreenHeight);
#endif
if (renderer != nullptr && SDL_RenderSetLogicalSize(renderer, gnScreenWidth, gnScreenHeight) <= -1) {
ErrSdl();

8
Source/utils/display.cpp

@ -390,11 +390,11 @@ void ReinitializeTexture()
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, quality.c_str());
#ifdef PSP
left = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_ABGR1555, SDL_TEXTUREACCESS_STREAMING, gnScreenWidth / 2, gnScreenHeight);
right = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_ABGR1555, SDL_TEXTUREACCESS_STREAMING, gnScreenWidth / 2, gnScreenHeight);
left = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_ABGR1555, SDL_TEXTUREACCESS_STREAMING, 512, gnScreenHeight);
right = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_ABGR1555, SDL_TEXTUREACCESS_STREAMING, 512, gnScreenHeight);
#else
left = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, gnScreenWidth / 2, gnScreenHeight);
right = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, gnScreenWidth / 2, gnScreenHeight);
left = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, 512, gnScreenHeight);
right = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, 512, gnScreenHeight);
#endif
}

Loading…
Cancel
Save