Oppure

Loading
11/02/09 23:03
Thejuster
Chiedo un piccolo aiuto su questo argomento.

avevo pensato per un game rpg di utilizzare degli sprites animati in 4 file da 32x48 pixel

ho creato per l'appunto una funzione
che mi tagliava una porzione da quell'immagine,
me la salvava temporaneamente sul disco e poi la caricavo al backbuffer.

mi chiedevo se conoscete qualche esempio migliore per caricare direttamente le texture in un array in memoria
anzichè caricarle una ad una provocando spreco di memoria.

quindi un immagine di 128 x 192 px
dovrei fare un array di texture e caricare ogni porzione da 32x48

poi in sueguito con un ciclo for recuperare il la giusta texture che serve dall'array,

conclusione
potreste gentilmente illustrarmi come rintagliare una porzione di immagine 32x32 e anzichè salvarla sul disco, inserirla in memoria in un array di texture.

mire.forumfree.it/ - Mire Engine
C# UI Designer
12/02/09 16:27
Il Totem
Uno degli overload di Draw espone anche un parametro Rectangle che indica la porzione di immagine da disegnare. Mi sembra di aver usato proprio questo overload per scrivere la classe GameObject, che trovi nei primi capitoli della sezione A del tutorial XNA sul mio sito.
aaa
13/02/09 8:13
Thejuster
uhm forse ho sbagliato io a spiegarmi oppure non ho capito bene

cmq avevo fatto una funzione
con 2 picturebox
nel 1° caricavo l'img
e poi dal sencondo le le andava a rintagliare 1 ad 1 in e salvando sul disco piccoli spezzoni di file.

ma poi me li dovevo ricaricare tutti

questo però lo sto sviluppando direttamente su Dx senza xna.

chiedevo uhm se era possibile creare un array di texture

tipo hai presente i classici array di stringhe?
man mano.

dim tes as new array
test.add("testo";)

chiedevo se si poteva fare una cosa del genere con le texture cioè un array di texture
anzichè di stringa o di interi


perchè dovremme all'avvio già crearmi tutti gli array di tutte le texture dei pg.
esendo un game in multyplayer e meglio che carichi già tutte le risorse in memoria anzichè in secondo momento.


un esempio veloce di cosa vorrei fare

dim classnovice as array  (Questo array dovrebbe contere Texture anzichè stringhe)


sprite.Begin()

'funzione che va a sapere se il pg si muove
'e assegna la direzione corrente

dim pass as texture = passopg("novice")


sprite.draw(pass)

sprite.end



private function passopg(ByVal Classe as string)

if Classe = "novice"
if pgdirezione = 2 then
return classenovice(2)
end if
end if
end function

'questa funzione dovrebbe far ritornare una texture gia caricata nell'array e stamparla direttamente a schermo




spero di essere stato abbastanza chiaro
forse c'è un altro medoto per farlo non saprei
ma spero che si possa fare.
Ultima modifica effettuata da Thejuster 13/02/09 8:29
mire.forumfree.it/ - Mire Engine
C# UI Designer
13/02/09 14:36
Il Totem
Non esiste l'oggetto Array (è solo una classe statica e sigillata), quindi non puoi scrivere New Array. Non ha neanche senso chiedersi se si può creare un array di texture: perchè non si dovrebbe poterlo fare? C'è forse una regola che vieta di creare array di texture? Non mi sembra.
Dim A As New List(Of Texture2D)
A.Add(...)
'oppure
Dim B As New Dictionary(Of String, Texture2D)
B.Add("nome", ...)
'oppure
Dim C(10) As Texture2D


Certo, poi, che c'è un altro metodo, ossia quello che ti avevo scritto nel post precedente, di cui trovi qui una versione semplificata:
msdn.microsoft.com/en-us/library/…
SourceRectangle designa la parte di immagine da renderizzare.
aaa
13/02/09 16:32
Thejuster
Grazie mille totem per avermi illuminato,
cmq il codice funzionante e questo
per chi si ponesse la mia stessa questione

dim pg1 as texture

Dim arrtex As New Generic.List(Of Texture)
arrtex.Add(pg1)




grazie totem saluti :k:
quando torno da lavoro vedo se riesco ad usare quel medoto di xna.
sarebbe il top, senza che vada a tagliarmi un intero tiles di sprite.
Ultima modifica effettuata da Thejuster 13/02/09 16:33
mire.forumfree.it/ - Mire Engine
C# UI Designer