aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xCHANGELOG.TXT3
-rw-r--r--hge/graphics.cpp43
-rw-r--r--hge/hge_impl.h3
-rw-r--r--include/hge.h3
4 files changed, 16 insertions, 36 deletions
diff --git a/CHANGELOG.TXT b/CHANGELOG.TXT
index 8ed37c6..bc2892b 100755
--- a/CHANGELOG.TXT
+++ b/CHANGELOG.TXT
@@ -9,8 +9,7 @@ Pre-Released versions:
New level Supernova.
New level (still unnamed).
Add some additional tips.
-Add HGE::Gfx_SetTDRotate(float,float,float,float), which is almost
-a direct OpenGL call. It will be tested and ported to DX later.
+Fix blinking of HGE::Gfx_SetTransform in OpenGL.
Fix includes like " #include "../../include/..." " that would
cause errors.
Extend libcgh again. Adding operator ^ and method l().
diff --git a/hge/graphics.cpp b/hge/graphics.cpp
index 9688024..6ee9578 100644
--- a/hge/graphics.cpp
+++ b/hge/graphics.cpp
@@ -230,43 +230,26 @@ void CALL HGE_Impl::Gfx_SetClipping(int x, int y, int w, int h)
void CALL HGE_Impl::Gfx_SetTransform(float x, float y, float dx, float dy, float rot, float hscale, float vscale)
{
- if (!bTransforming)
+ if ((x == 0.0f) && (y == 0.0f) && (dx == 0.0f) && (dy == 0.0f) && (rot == 0.0f) && (hscale == 0.0f) && (vscale == 0.0f))
{
- if ((x == 0.0f) && (y == 0.0f) && (dx == 0.0f) && (dy == 0.0f) && (rot == 0.0f) && (hscale == 1.0f) && (vscale == 1.0f))
- return; // nothing to do here, don't call into the GL.
- }
-
- _render_batch();
-
- bTransforming = true;
-
- // !!! FIXME: this math is probably wrong. Re-sync with the Direct3D code.
-
- pOpenGLDevice->glMatrixMode(GL_MODELVIEW);
- if(vscale==0.0f) pOpenGLDevice->glLoadIdentity();
- else
- {
- pOpenGLDevice->glTranslatef(-x, -y, 0.0f);
- //pOpenGLDevice->glScalef(1.0f, -1.0f, 1.0f);
- pOpenGLDevice->glRotatef(-rot, 0.0f, 0.0f, -1.0f);
- pOpenGLDevice->glTranslatef(x+dx, y+dy, 0.0f);
- }
-}
-
-void CALL HGE_Impl::Gfx_SetTDRotate(float ang, float x, float y, float z)
-{
- if (!bTransforming)
- {
- if ((x == 0.0f) && (y == 0.0f) && (z == 0.0f) && (ang == 0.0f))
- return; // nothing to do here, don't call into the GL.
+ //reset everything
+ pOpenGLDevice->glMatrixMode(GL_MODELVIEW);
+ pOpenGLDevice->glLoadIdentity();
+ bTransforming=false;
+ return;
}
_render_batch();
-
bTransforming = true;
pOpenGLDevice->glMatrixMode(GL_MODELVIEW);
- pOpenGLDevice->glRotatef(ang, x, y, z);
+ //we have to reset the matrix in all cases.
+ //or this would cause insane transforming...
+ pOpenGLDevice->glLoadIdentity();
+ pOpenGLDevice->glTranslatef(-x, -y, 0.0f);
+ pOpenGLDevice->glScalef(hscale, vscale, 1.0f);
+ pOpenGLDevice->glRotatef(rot, 0.0f, 0.0f, 1.0f);
+ pOpenGLDevice->glTranslatef(x+dx, y+dy, 0.0f);
}
bool CALL HGE_Impl::Gfx_BeginScene(HTARGET targ)
diff --git a/hge/hge_impl.h b/hge/hge_impl.h
index bcee956..e09a321 100644
--- a/hge/hge_impl.h
+++ b/hge/hge_impl.h
@@ -199,7 +199,7 @@ public:
virtual bool CALL Input_KeyUp(int key);
virtual bool CALL Input_GetKeyState(int key);
virtual int CALL Input_GetKeyStateEx(int key);
- virtual const char* CALL Input_GetKeyName(int key);
+ virtual const char* CALL Input_GetKeyName(int key);
virtual int CALL Input_GetKey();
virtual int CALL Input_GetChar();
virtual bool CALL Input_GetEvent(hgeInputEvent *event);
@@ -214,7 +214,6 @@ public:
virtual void CALL Gfx_FinishBatch(int nprim);
virtual void CALL Gfx_SetClipping(int x=0, int y=0, int w=0, int h=0);
virtual void CALL Gfx_SetTransform(float x=0, float y=0, float dx=0, float dy=0, float rot=0, float hscale=0, float vscale=0);
- virtual void CALL Gfx_SetTDRotate(float ang=0, float x=0, float y=0, float z=0);
virtual HTARGET CALL Target_Create(int width, int height, bool zbuffer);
virtual void CALL Target_Free(HTARGET target);
diff --git a/include/hge.h b/include/hge.h
index 1ccab9d..131cbbf 100644
--- a/include/hge.h
+++ b/include/hge.h
@@ -409,7 +409,7 @@ public:
virtual bool CALL Input_KeyUp(int key) = 0;
virtual bool CALL Input_GetKeyState(int key) = 0;
virtual int CALL Input_GetKeyStateEx(int key) = 0;
- virtual const char* CALL Input_GetKeyName(int key) = 0;
+ virtual const char* CALL Input_GetKeyName(int key) = 0;
virtual int CALL Input_GetKey() = 0;
virtual int CALL Input_GetChar() = 0;
virtual bool CALL Input_GetEvent(hgeInputEvent *event) = 0;
@@ -424,7 +424,6 @@ public:
virtual void CALL Gfx_FinishBatch(int nprim) = 0;
virtual void CALL Gfx_SetClipping(int x=0, int y=0, int w=0, int h=0) = 0;
virtual void CALL Gfx_SetTransform(float x=0, float y=0, float dx=0, float dy=0, float rot=0, float hscale=0, float vscale=0) = 0;
- virtual void CALL Gfx_SetTDRotate(float ang=0, float x=0, float y=0, float z=0) = 0;
virtual HTARGET CALL Target_Create(int width, int height, bool zbuffer) = 0;
virtual void CALL Target_Free(HTARGET target) = 0;