Windows fixes
This was SVN commit r8884.
This commit is contained in:
parent
cb78822f19
commit
c710e718aa
@ -77,42 +77,16 @@ void CLOSTexture::BindTexture(int unit)
|
||||
g_Renderer.BindTexture(unit, m_Texture);
|
||||
}
|
||||
|
||||
CMatrix3D CLOSTexture::GetTextureMatrix()
|
||||
const float* CLOSTexture::GetTextureMatrix()
|
||||
{
|
||||
debug_assert(m_MapSize);
|
||||
|
||||
// We want to map
|
||||
// world pos (0, y, 0) (i.e. first vertex)
|
||||
// onto texcoord (0.5/texsize, 0.5/texsize) (i.e. middle of first texel);
|
||||
// world pos ((mapsize-1)*cellsize, y, (mapsize-1)*cellsize) (i.e. last vertex)
|
||||
// onto texcoord ((mapsize-0.5) / texsize, (mapsize-0.5) / texsize) (i.e. middle of last texel)
|
||||
// so construct an appropriate matrix:
|
||||
|
||||
float s = (m_MapSize-1) / (float)(m_TextureSize * (m_MapSize-1) * CELL_SIZE);
|
||||
float t = 0.5f / m_TextureSize;
|
||||
CMatrix3D m;
|
||||
m.SetZero();
|
||||
m._11 = s;
|
||||
m._23 = s;
|
||||
m._14 = t;
|
||||
m._24 = t;
|
||||
m._44 = 1;
|
||||
return m;
|
||||
debug_assert(!m_Dirty);
|
||||
return &m_TextureMatrix._11;
|
||||
}
|
||||
|
||||
CMatrix3D CLOSTexture::GetMinimapTextureMatrix()
|
||||
const float* CLOSTexture::GetMinimapTextureMatrix()
|
||||
{
|
||||
debug_assert(m_MapSize);
|
||||
|
||||
// We want to map UV (0,0)-(1,1) onto (0,0)-(mapsize/texsize, mapsize/texsize)
|
||||
|
||||
float s = m_MapSize / (float)m_TextureSize;
|
||||
CMatrix3D m;
|
||||
m.SetZero();
|
||||
m._11 = s;
|
||||
m._22 = s;
|
||||
m._44 = 1;
|
||||
return m;
|
||||
debug_assert(!m_Dirty);
|
||||
return &m_MinimapTextureMatrix._11;
|
||||
}
|
||||
|
||||
void CLOSTexture::ConstructTexture(int unit)
|
||||
@ -128,6 +102,33 @@ void CLOSTexture::ConstructTexture(int unit)
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
|
||||
{
|
||||
// Texture matrix: We want to map
|
||||
// world pos (0, y, 0) (i.e. first vertex)
|
||||
// onto texcoord (0.5/texsize, 0.5/texsize) (i.e. middle of first texel);
|
||||
// world pos ((mapsize-1)*cellsize, y, (mapsize-1)*cellsize) (i.e. last vertex)
|
||||
// onto texcoord ((mapsize-0.5) / texsize, (mapsize-0.5) / texsize) (i.e. middle of last texel)
|
||||
|
||||
float s = (m_MapSize-1) / (float)(m_TextureSize * (m_MapSize-1) * CELL_SIZE);
|
||||
float t = 0.5f / m_TextureSize;
|
||||
m_TextureMatrix.SetZero();
|
||||
m_TextureMatrix._11 = s;
|
||||
m_TextureMatrix._23 = s;
|
||||
m_TextureMatrix._14 = t;
|
||||
m_TextureMatrix._24 = t;
|
||||
m_TextureMatrix._44 = 1;
|
||||
}
|
||||
|
||||
{
|
||||
// Minimap matrix: We want to map UV (0,0)-(1,1) onto (0,0)-(mapsize/texsize, mapsize/texsize)
|
||||
|
||||
float s = m_MapSize / (float)m_TextureSize;
|
||||
m_MinimapTextureMatrix.SetZero();
|
||||
m_MinimapTextureMatrix._11 = s;
|
||||
m_MinimapTextureMatrix._22 = s;
|
||||
m_MinimapTextureMatrix._44 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void CLOSTexture::RecomputeTexture(int unit)
|
||||
|
@ -17,10 +17,9 @@
|
||||
|
||||
#include "lib/ogl.h"
|
||||
|
||||
#include "maths/Matrix3D.h"
|
||||
#include "simulation2/components/ICmpRangeManager.h"
|
||||
|
||||
class CMatrix3D;
|
||||
|
||||
/**
|
||||
* Maintains the LOS (fog-of-war / shroud-of-darkness) texture, used for
|
||||
* rendering and for the minimap.
|
||||
@ -50,17 +49,17 @@ public:
|
||||
|
||||
/**
|
||||
* Returns a matrix to map (x,y,z) world coordinates onto (u,v) LOS texture
|
||||
* coordinates.
|
||||
* coordinates, in the form expected by glLoadMatrixf.
|
||||
* This must only be called after BindTexture.
|
||||
*/
|
||||
CMatrix3D GetTextureMatrix();
|
||||
const float* GetTextureMatrix();
|
||||
|
||||
/**
|
||||
* Returns a matrix to map (0,0)-(1,1) texture coordinates onto LOS texture
|
||||
* coordinates.
|
||||
* coordinates, in the form expected by glLoadMatrixf.
|
||||
* This must only be called after BindTexture.
|
||||
*/
|
||||
CMatrix3D GetMinimapTextureMatrix();
|
||||
const float* GetMinimapTextureMatrix();
|
||||
|
||||
private:
|
||||
void ConstructTexture(int unit);
|
||||
@ -75,4 +74,7 @@ private:
|
||||
|
||||
ssize_t m_MapSize; // vertexes per side
|
||||
GLsizei m_TextureSize; // texels per side
|
||||
|
||||
CMatrix3D m_TextureMatrix;
|
||||
CMatrix3D m_MinimapTextureMatrix;
|
||||
};
|
||||
|
@ -375,7 +375,7 @@ void CMiniMap::Draw()
|
||||
glColor3f(0.0f, 0.0f, 0.0f);
|
||||
|
||||
glMatrixMode(GL_TEXTURE);
|
||||
glLoadMatrixf(&losTexture.GetMinimapTextureMatrix()._11);
|
||||
glLoadMatrixf(losTexture.GetMinimapTextureMatrix());
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
|
||||
DrawTexture(1.0f, angle, x, y, x2, y2, z);
|
||||
|
@ -104,7 +104,7 @@ struct STileBlend
|
||||
{
|
||||
bool operator()(const STileBlend& a) const
|
||||
{
|
||||
return a.m_TileMask & (1 << 8);
|
||||
return (a.m_TileMask & (1 << 8)) != 0;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
@ -265,7 +265,7 @@ void TerrainRenderer::RenderTerrain(ShadowMap* shadow)
|
||||
streamflags |= STREAM_POSTOUV1;
|
||||
|
||||
glMatrixMode(GL_TEXTURE);
|
||||
glLoadMatrixf(&losTexture.GetTextureMatrix()._11);
|
||||
glLoadMatrixf(losTexture.GetTextureMatrix());
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
|
||||
@ -340,7 +340,7 @@ void TerrainRenderer::RenderTerrain(ShadowMap* shadow)
|
||||
streamflags |= STREAM_POSTOUV3;
|
||||
|
||||
glMatrixMode(GL_TEXTURE);
|
||||
glLoadMatrixf(&losTexture.GetTextureMatrix()._11);
|
||||
glLoadMatrixf(losTexture.GetTextureMatrix());
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
|
||||
@ -385,7 +385,7 @@ void TerrainRenderer::RenderTerrain(ShadowMap* shadow)
|
||||
streamflags |= STREAM_POSTOUV2;
|
||||
|
||||
glMatrixMode(GL_TEXTURE);
|
||||
glLoadMatrixf(&losTexture.GetTextureMatrix()._11);
|
||||
glLoadMatrixf(losTexture.GetTextureMatrix());
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
|
||||
@ -566,7 +566,7 @@ void TerrainRenderer::RenderWater()
|
||||
pglClientActiveTextureARB(GL_TEXTURE1);
|
||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
|
||||
glLoadMatrixf(&losTexture.GetTextureMatrix()._11);
|
||||
glLoadMatrixf(losTexture.GetTextureMatrix());
|
||||
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_MODULATE);
|
||||
@ -638,7 +638,7 @@ void TerrainRenderer::RenderWater()
|
||||
pglUniform4fARB( translation, tx, ty, 0, 0 );
|
||||
pglUniformMatrix4fvARB( reflectionMatrix, 1, false, &WaterMgr->m_ReflectionMatrix._11 );
|
||||
pglUniformMatrix4fvARB( refractionMatrix, 1, false, &WaterMgr->m_RefractionMatrix._11 );
|
||||
pglUniformMatrix4fvARB( losMatrix, 1, false, &losTexture.GetTextureMatrix()._11 );
|
||||
pglUniformMatrix4fvARB( losMatrix, 1, false, losTexture.GetTextureMatrix() );
|
||||
pglUniform1iARB( normalMap, 0 ); // texture unit 0
|
||||
pglUniform1iARB( reflectionMap, 1 ); // texture unit 1
|
||||
pglUniform1iARB( refractionMap, 2 ); // texture unit 2
|
||||
|
Loading…
Reference in New Issue
Block a user