sprite_add() e sprite_get_texture() non vanno d'accordo?

Argomenti riguardanti il D3D di GameMaker e librerie esterne.
Rispondi
Avatar utente
PeggioSoft
Newbie
Messaggi: 22
Iscritto il: 01/05/2007, 15:21
Uso: GM:Studio 2
Contatta:

sprite_add() e sprite_get_texture() non vanno d'accordo?

Messaggio da PeggioSoft »

Scenario:

ho una cartella con tanti sprites stile Rpgmaker (se esiste ancora...), insomma delle vere e proprie strip.
dato che non ho voglia di importarne una ad una tramite Game Maker ho deciso di aggiungerle a run-time, il che mi garantisce anche una gestione più dinamica (salvo tutte le strip nella suddetta cartella senza aggiungere una linea di codice o perdere tempo ad importarle ritagliandole, ecc.)

dopo una lunga serie di draw_sprite() e sprite_create_from_screen() mi salvo tutti i miei bellissimi sprite, già divisi per tutte e 4 le direzioni all'intero di un array in un oggetto addetto.
gli sprite, insomma, sono salvati in memoria, e fin qua tutto bellissimo.
testo in un ambiente 2d e tutto fila liscio. assegnare come sprite_index una variabile di quell'array è un gioco da ragazzi.

le rogne avvengono quando ho cercato di fare qualcosa in 3d.

Problema:

Codice: Seleziona tutto

tex = sprite_get_texture(spr, 0); 
(dove spr è uno sprite random del famoso array)
ritorna IL NULLA.
quindi non posso disegnare in alcun modo (pensavo ad un semplice draw_wall()...) i miei sprites.

secondo voi è possibile che sprite_get_texture() funzioni solo con gli sprite precaricati da GM all'avvio del gioco e non aggiunti con sprite_add()?
soluzioni, workaround?

grazie.
Peggio è meglio.

Avatar utente
PeggioSoft
Newbie
Messaggi: 22
Iscritto il: 01/05/2007, 15:21
Uso: GM:Studio 2
Contatta:

Re: sprite_add() e sprite_get_texture() non vanno d'accordo?

Messaggio da PeggioSoft »

errata corrige:

sprite_get_texture ora mi torna un valore (non so cos'ho cambiato, francamente...) ma continua a non disegnarmi nulla. se provo con sprite diversi da "spr" funziona...

il problema persiste.
Peggio è meglio.

Avatar utente
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: sprite_add() e sprite_get_texture() non vanno d'accordo?

Messaggio da BaronVsCorsar »

io lo faccio e funziona.
creo uno sprite caricandolo dall'esterno, ne estraggo la texture e la disegno in d3d e funziona.
forse il problema sta da altre parti... (magari un errore stupido su spr, a cui non assegni il valore giusto, o in d3d_draw_wall,
o lo sprite che importi è trasparente....)

quale è il valore numerico di spr? e il valore di tex?
ImmagineSchiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?

Avatar utente
PeggioSoft
Newbie
Messaggi: 22
Iscritto il: 01/05/2007, 15:21
Uso: GM:Studio 2
Contatta:

Re: sprite_add() e sprite_get_texture() non vanno d'accordo?

Messaggio da PeggioSoft »

mea culpa, mi sono espresso un po' male nel titolo.

diciamo che sprite_add() lo uso solamente per importare i file da cartella, POI segue un lavoro di taglia e cuci della strip importata, che viene spezzettata tramite sprite_create_from_screen() e sprite_add_from_screen().
dalla strip intera ricavo 4 sprite animati (1 per direzione, insomma) i quali vengono memorizzati, come detto, in un array (della strip originale importata non me ne importa nulla).

"spr" e "tex" mi danno valori variabili (dato che "spr" lo assegno random) ma esistenti.
in memoria c'è tutto, pare.

dimmi tu se riesci ad usare come texture uno sprite ottenuto da sprite_create_from_screen(), magari sbaglio veramente un dettaglio io senza rendermene conto.

in ogni caso, ti ringrazio per la collaborazione.
Peggio è meglio.

Avatar utente
PeggioSoft
Newbie
Messaggi: 22
Iscritto il: 01/05/2007, 15:21
Uso: GM:Studio 2
Contatta:

Re: sprite_add() e sprite_get_texture() non vanno d'accordo?

Messaggio da PeggioSoft »

ah e il draw wall con altri sprite (già importati in GM) funziona.
Peggio è meglio.

Avatar utente
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: sprite_add() e sprite_get_texture() non vanno d'accordo?

Messaggio da BaronVsCorsar »

non so che dire...
ho riguardato, in effetti uso uno srpite_create_from_surface
e non un d3d_wall, ma un d3d_vertex_normal_texture
(solo per definire un rettangolo con due punti intermedi, in quanto con le luci l'effetto illuminazione
è migliore)...

ma a parte queste due piccole differenze non riscontro altri problemi.

hai verificato con il debug il valore di tutte le variabili coinvolte? a volte l'errore si nasconde in parti molti più semplici del codice.
ImmagineSchiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?

Avatar utente
PeggioSoft
Newbie
Messaggi: 22
Iscritto il: 01/05/2007, 15:21
Uso: GM:Studio 2
Contatta:

Re: sprite_add() e sprite_get_texture() non vanno d'accordo?

Messaggio da PeggioSoft »

usando le surface funziona...

spiegazione logica?
Peggio è meglio.

Avatar utente
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: sprite_add() e sprite_get_texture() non vanno d'accordo?

Messaggio da BaronVsCorsar »

mi viene in mente solo che tu possa non aver resettato la proiezione, tenendo una adatta al 3D, poi disegnato il tuo sprite come se fosse 2D (quindi magari non visualizzato dalla tua specifica proiezione) e quando crei lo sprite dallo schermo si trova tutto nero.

Però è una speculazione, dovresti magari fare qualche prova. Magari aggiungendo un ritorno alla proiezione ortogonale forzato prima di creare il tuo sprite :fapensare:
In effetti, da quando esistono le surface, non ho più usato create from screen, trovando molto più comodo dedicare alla procedura una surface per distruggerla dopo aver generato gli sprite... quindi anche creando spesso sprite runtime da svariate versioni non testo più il create_from_screen
ImmagineSchiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?

Avatar utente
PeggioSoft
Newbie
Messaggi: 22
Iscritto il: 01/05/2007, 15:21
Uso: GM:Studio 2
Contatta:

Re: sprite_add() e sprite_get_texture() non vanno d'accordo?

Messaggio da PeggioSoft »

hai anche ragione te riguardo al from screen. sono troppo vecchia scuola :)
ti ringrazio infinitamente.
alla prossima... ;)
Peggio è meglio.

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 38 ospiti