Estoy trabajando con Direct3D y quiero poner algunos Sprites encima de la escena 3D. Como indicadores de vida y tal. Intente usar D3DXSprite.draw() pero no consigo que me pinte nada. ¿TEngo que desactivar el zbuffer? ¿Tengo que cambiar la camara?
has usado el ID3DXSprite.Begin antes de empeazar a dibujar?
jeje....... :I . Que despistados que estamos. poz si que va a ser eso. Ahora me da un error en tiempo de ejecucion haber si lo arreglo.
GRacias
Nada sigue sin pintarmelo.
El problema ahora creo que es el siguiente.
Estoy programando en c# con una libreria dxvbliba.dll que se consigue al exportar dx8vb.dll utilizando una herramienta pa exportar librerias que viene con el FrameWork SDK. En la documentacion de DirectX pone que el metodo draw() recibe un parametro color (long) que tiene que estar 0xFFFFFFFF pa que te pinte el sprite tal cual. Pero si le meto ese valor casca al compilar porque me dice que espera un int. Es como si se hubiera exportado mal la libreria. Le pongo 0xFFFFFF (con dos ff menos) y tira pero no me lo pinta. Creo que las dos FF que le faltan son el valor del alpha y por eso no me lo pinta. Estoy diciendo tonterias???
0xffffffff es un int (4 bytes), me extraña que te dé ese error. Prueba a poner: (int)0xffffffff
Sino te chuta eso, prueba con (usigned int) ;)
Citar
...me dice que espera un int.
Citar
...prueba con (usigned int)
:o
Prueba metiendole al int el valor -1. Si sigue sin funcionar otra idea sería cambiar tu código para que en vez de int sea un unsigned int (DWORD) y poder asignarle 0xffffffff (¿te referias a eso sync?).
Sipe, una cosa que he visto q cambia de compilador a compilador (y tiro porque me toca) es que los ints a veces los toman como signed y otras veces como unsigned por defecto. Si en su caso lo toma como signed (no tengo ni idea de eso) entonces 0xFFFFFFFF es mucho mayor de 0x7FFFFFFF que sería el valor máximo positivo... lo del -1 también puede funcionar si no te chuta el cast a unsigned int
Sync
Pos no recuerdo que a mí 0xFFFFFFFF me lo ha tomado nunca como negativo (ni como positivo).
Es hexadecimal y "no tiene" signo, los warnings me los da si lo pongo en decimal (o asignando una variable de diferente tipo, claro).
A ver, se me acaba de ocurrir viendo una cosilla que viene con DX:
inline int DWtoI ( DWORD dw ) { return *((int*)&dw); }
int TuPropioEIntransferibleInt = DWtoI (0xffffffff);
Joer, que enrevesao. A mí siempre me ha funcionado con un simple (int)variable
No es exactamente lo mismo.
Pos no veo la diferencia, ¿alguien melosplica?
Si no ves la diferencia es porque no hay diferencia. Estoy dormido y aburrido, y estaba pensando de donde saque la funcion (que es para "pasar" de float a dword).
sés 1 - 0 jpastor
igual la has sacado del ejemplo de los pointsprites que viene con el D3D.
a uno de los renderstates neceasarios para usar pointsprites tienes que pasarle un float, pero la funcionar claro solo acapta dword...
no entiendo lo que le puede estar pasando mal, un dword siempre es unsigned. puede ser algun problema como dice al exportar la libreria...
has probado con un dynamic_cast<...> ???