[Scummvm-tracker] [ScummVM :: Bugs] #13169: Myst III Exile: missing scene transition effect on PowerPC (big-endian) machines on all OSes

ScummVM :: Bugs trac at scummvm.org
Mon Apr 4 06:27:36 UTC 2022


#13169: Myst III Exile: missing scene transition effect on PowerPC (big-endian)
machines on all OSes
-------------------------------------------+----------------------------
Reporter:  kas1e                           |       Owner:  (none)
    Type:  defect                          |      Status:  new
Priority:  normal                          |   Component:  Engine: Myst3
 Version:                                  |  Resolution:
Keywords:  big endian, BE, Myst3, AmigaOS  |        Game:  Myst 3: Exile
-------------------------------------------+----------------------------
Comment (by lephilousophe):

 @kas1e and @BeWorld2018

 I don't understand how it renders now with the patch.
 Is it possible to make a screenshot in the middle of the transition?
 If it's too fast, you can change the setting in scummvm.ini file by
 setting transition_speed to something like -400 (note the minus sign).

 Another test is possible although this looks more like a workaround.

 By looking at MiniGL code, one can see that `glReadPixels` calls
 `W3D_FlushFrame` and `W3D_WaitIdle` before reading pixels. This is not
 done in `glCopyTexImage2D`.
 The main problem with the workaround is that I am not sure MiniGL will
 issue the `W3D_FlushFrame` when doing `glFinish`.

 {{{#!diff
 diff --git a/engines/myst3/gfx_opengl_texture.cpp
 b/engines/myst3/gfx_opengl_texture.cpp
 index bae85ba2e7f..40f07c44dfe 100644
 --- a/engines/myst3/gfx_opengl_texture.cpp
 +++ b/engines/myst3/gfx_opengl_texture.cpp
 @@ -139,10 +139,13 @@ void OpenGLTexture::copyFromFramebuffer(const
 Common::Rect &screen) {
         glBindTexture(GL_TEXTURE_2D, id);
         glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, internalWidth,
 internalHeight, 0, internalFormat, GL_UNSIGNED_BYTE, nullptr);
         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

 +       // Ensure everything is rendered before capturing framebuffer
 +       glFinish();
 +
         glCopyTexImage2D(GL_TEXTURE_2D, 0, internalFormat, screen.left,
 screen.top, internalWidth, internalHeight, 0);
  }

  } // End of namespace Myst3

 }}}
-- 
Ticket URL: <https://bugs.scummvm.org/ticket/13169#comment:11>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM


More information about the Scummvm-tracker mailing list