DEADSOFTWARE

gl: fix holmes scale and map offset
[d2df-sdl.git] / src / game / renders / opengl / r_holmes.pas
index 1a370d5961fa2078d862965b29dc3a2915536408..8c4bfdcd2501407dd0f8d27c7719f0b5e6b58ef2 100644 (file)
 {$INCLUDE ../../../shared/a_modes.inc}
 unit r_holmes;
 
+  {$IFDEF USE_GLES1}
+    {$FATAL Desktop OpenGL required for current Holmes implementation}
+  {$ENDIF}
+
 interface
 
 procedure r_Holmes_Draw ();
@@ -804,6 +808,11 @@ var
 begin
   if (gPlayer1 = nil) then exit;
 
+  glPushMatrix;
+  (* hack: scale and translate must be handled by hlmContext.glSetScaleTrans, but it dont work for some reason *)
+  glScalef(g_dbg_scale, g_dbg_scale, 1.0);
+  glTranslatef(-vpx, -vpy, 0);
+
   if (hlmContext = nil) then hlmContext := r_fui_gfx_gl.TGxContext.Create();
 
   gxSetContext(hlmContext);
@@ -815,7 +824,7 @@ begin
     glScalef(g_dbg_scale, g_dbg_scale, 1.0);
     glTranslatef(-vpx, -vpy, 0);
     }
-    hlmContext.glSetScaleTrans(g_dbg_scale, -vpx, -vpy);
+//    hlmContext.glSetScaleTrans(g_dbg_scale, -vpx, -vpy); // uncomment when fix it
     glEnable(GL_SCISSOR_TEST);
     glScissor(0, gScreenHeight-gPlayerScreenSize.Y-1, gPlayerScreenSize.X, gPlayerScreenSize.Y);
 
@@ -876,6 +885,8 @@ begin
     gxSetContext(nil);
   end;
 
+  glPopMatrix;
+
   if showMapCurPos then
   begin
     s := Format('mappos:(%d,%d)', [pmsCurMapX, pmsCurMapY]);