Ongelmia IntPtr:n kanssa:
IntPtr sndData; // tähän openal lataa wavin
Haluan jättää äänen alusta dataa soittamatta
IntPtr snd = sndData[alku];
Mutta tuo ei toimi koska IntPtr on struct.
C:ssä
int *snd=&sndData[alku];
Miten C#:ssa?
IntPtr sndData; // tähän openal lataa wavin
Haluan jättää äänen alusta dataa soittamatta
IntPtr snd = sndData[alku];
Mutta tuo ei toimi koska IntPtr on struct.
C:ssä
int *snd=&sndData[alku];
Miten C#:ssa?
Vastaukset 2
Vanhimmat
En nyt muista tarkalleen, mutta katso helpistä Unsafe.
Määrittelet siis unsafe-blockin ja siellä osoitinmuuttujan joka osoittaa tuon sndDatan alkuun tai suoraan haluamaasi positioon. Tuossa unsafe-blockissa indeksointi on sallittua.
Ehkä jotakin näin
unsafe
{
int *iPtr = sndData[alku];
}
unsafella onnistui, kiitoksia vinkistä.
unsafe
{
byte *p=(byte*) snd[ind].data.ToPointer();
byte *pointer=&p[start];
Al.alBufferData(snd[ind].buffer, snd[ind].format, pointer, size, (int)snd[ind].frequency);
}