Fixed broken rendering

git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/branches/sfml2@1223 4e206d99-4929-0410-ac5d-dfc041789085
This commit is contained in:
laurentgom 2009-09-24 13:46:01 +00:00
parent a5e20f23ca
commit 282dfe6b6f
2 changed files with 15 additions and 6 deletions

View File

@ -39,12 +39,21 @@ namespace
// Fast float to int conversion
inline sf::Int32 Round(double value)
{
value += 6755399441055744.0;
// Use a union rather than reinterpret_cast, because it doesn't break strict-aliasing
// rules and results in a correct behaviour when compiling in optimized mode
union DoubleToInt
{
double d;
sf::Int32 i[2];
};
DoubleToInt u;
u.d = value + 6755399441055744.0;
#if defined(SFML_ENDIAN_LITTLE)
return (reinterpret_cast<sf::Int32*>(&value))[0];
return u.i[0];
#else
return (reinterpret_cast<sf::Int32*>(&value))[1];
return u.i[1];
#endif
}
}

View File

@ -275,7 +275,7 @@ void ContextGLX::CreateContext(ContextGLX* shared, unsigned int bitsPerPixel, co
GLXContext toShare = shared ? shared->myContext : NULL;
// Create the context -- first try an OpenGL 3.0 context if it is supported
const GLubyte* name = reinterpret_cast<const GLubyte*>("glXCreateContextAttribsARB");
/*const GLubyte* name = reinterpret_cast<const GLubyte*>("glXCreateContextAttribsARB");
PFNGLXCREATECONTEXTATTRIBSARBPROC glXCreateContextAttribsARB = reinterpret_cast<PFNGLXCREATECONTEXTATTRIBSARBPROC>(glXGetProcAddress(name));
if (glXCreateContextAttribsARB)
{
@ -295,7 +295,7 @@ void ContextGLX::CreateContext(ContextGLX* shared, unsigned int bitsPerPixel, co
0, 0
};
myContext = glXCreateContextAttribsARB(myDisplay, configs[0], toShare, true, attributes);
}
}*/
// If the OpenGL 3.0 context failed, create a regular OpenGL 1.x context
if (!myContext)