[gameprogrammer] Re: weir cast problem in 64 bits system

  • From: "Madison McGaffin" <greyhill@xxxxxxxxx>
  • To: gameprogrammer@xxxxxxxxxxxxx
  • Date: Tue, 22 Jul 2008 10:02:58 -0400

On 7/22/08, Roger Durañona <luo_hei@xxxxxxxx> wrote:
>
> Im trying to use Cal3d in my project and I have found a weird problem.
> Cal3d API returns some values as void*, that should be casted to GLint like
> this:
>
> glBindTexture(GL_TEXTURE_2D, (GLint)pCalRenderer->getMapUserData(0));
>
> This works on some systems but in others the compiler produces an error:
> cast from void* to GLint loses precision. The only common thing I can find
> between the 2 setups where I get the error is that they are both 64 bits
> systems (Ubuntu and Gentoo).
> Can someboy suggest me a solution for this, or at least the cause of the
> problem?


What distinguishes a 64 bit system from a 32 bit system is that a 64 bit
system can handle memory addresses identified by 64-bit data types instead
of just 32-bit data types.  So, on 32 bit systems, void* is a 32-bit-wide
pointer to some place in memory but on 64 bit systems, a void* can be 64
bits wide.  Most likely, GLint is fixed at 32 bits wide, and, most likely,
you shouldn't need to worry about the loss of precision.

'course I don't know much about Cal3d specifically, and it seems really
horrible that they expect you to cast from a void* to a GLint, but that's my
2c.

-- 
> "La naturaleza y sus leyes yacían ocultas en la noche, Dios dijo , "Sea
> Newton" y todo fue luz", Alexander Pope
> "Pero esto no fue lo último. El diablo gritó "Sea Einstein", y se
> restableció la situación", John Collins Squire
>
>
>
> ______________________________________________ LLama Gratis a cualquier PC
> del Mundo. Llamadas a fijos y móviles desde 1 céntimo por minuto.
> http://es.voice.yahoo.com
>
>
> ---------------------
> To unsubscribe go to http://gameprogrammer.com/mailinglist.html
>
>
>

Other related posts: