Behöver assistans här!|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
Behöver assistans här!
Tjoppen
Kommer du hit ofta?
Medlem
Forum Posts: 872
Member Since:
August 29, 2001
sp_UserOfflineSmall Offline
1
October 16, 2001 - 4:41 pm
sp_Permalink sp_Print

Jo, nu ska jag försöka förklara:

I min 3d motor, så har jag gjort en lista(char *texturelist[128]) med alla textures som ska laddas(denna är definerad "utanför" void main( void ) ). Jag har lyckats få opengl att ladda dem efter listan, så det är inte där problemet ligger.

När man ska läsa in banorna(i .map format), så lyckas han läsa exturerna och spara dessa i texturelist. Dock endast temporärt, för när programmet går ur if-satsen(en ganska stor), så sparas endast texturelist[1](teexturelist[0] är fördefinerad till "font"). Då blir ALLTID denna AAATRIGGER, aldrig grass1, grass2 lr ngt annat, även om de är först i map filen...
Om man fördefinerar(vilket sker innan man laddar banan) aaatrigger, grass1 och grass2, så funkar det..

Det är lite svårt att förklara, men kom med lite förslag, så ska jag se om jag kan förklara ytterligarre.

Alltså: en lista med char pekare sparar endast fördefinerade värden(som INTE är definerade i en if-sats och/lr while loop) samt den andra char pekaren i den listan...

Hoppas ni inte blev alltför snurriga i huvudet 😕

Tjoppen
Kommer du hit ofta?
Medlem
Forum Posts: 872
Member Since:
August 29, 2001
sp_UserOfflineSmall Offline
82869
October 16, 2001 - 7:34 pm
sp_Permalink sp_Print

Ska posta pseudo kod imorrn....

_BiG_HeaD_
Kommer du hit ofta?
Medlem
Forum Posts: 379
Member Since:
September 20, 2001
sp_UserOfflineSmall Offline
83474
October 17, 2001 - 5:17 pm
sp_Permalink sp_Print

Shit.. ingen e lika bra som du..

Tjoppen
Kommer du hit ofta?
Medlem
Forum Posts: 872
Member Since:
August 29, 2001
sp_UserOfflineSmall Offline
83481
October 17, 2001 - 5:24 pm
sp_Permalink sp_Print

Suck....Jobbigt...

Här kommer pseudo koden:

blablabla(includes etc.)

char *texurelist[128];
short texturenum = 0;

blablabla

void main( void )
{

blablabla

texturelist[0] = "font";
texturenum = 1;

fopen( map.map );
while( tills filen är slute )
char texture[256];
char *textures[10]; //10 = max antal faces/brush

ladda in en rad tills enter
if( vi har lite koordinater till en brush )
{
sök efter koordinater och textures
sscanf( ch, "( %i %i %i ) ( %i %i %i ) ( %i %i %i ) %s", en massa ints, &texture );

textures[fnum] = texture;

fnum++; //<-- antal faces i brushen if( texture inte är itexturelist )
{
texturelist[texturenum] = texture;
texturenum++;
//här funkar det
}
//här funkar det
}
//här funkar det INTE

_paul_
Mina inlägg skrivs i binär kod
Medlem
Forum Posts: 126
Member Since:
August 2, 2001
sp_UserOfflineSmall Offline
83502
October 17, 2001 - 5:47 pm
sp_Permalink sp_Print

En gissning har inte kollat så noggrannt.

Det verkar ju som char texture [256] ligger i början i while slingan i så fall så lagrar du i texturelist en pekare till en temporär variabel eftersom det skapas en ny texture varje varv i while slingan möjligen med samma address eftersom den föregående förkastas och kan återanvändas. Om du vill kunna använda innehållet i char texture[256] efter varje varv i while slingan så måste du köra malloc i varje varv i slingan på texture typ:
texture = malloc(256);

Tjoppen
Kommer du hit ofta?
Medlem
Forum Posts: 872
Member Since:
August 29, 2001
sp_UserOfflineSmall Offline
83507
October 17, 2001 - 5:53 pm
sp_Permalink sp_Print

char texture[256] är endast en temporär variabel...en rest från ett tidigare staduim...kan tas bort

Men saken är den att texturelist ändras när while satsen avslutats...vilket blir otroligt sykande....

_paul_
Mina inlägg skrivs i binär kod
Medlem
Forum Posts: 126
Member Since:
August 2, 2001
sp_UserOfflineSmall Offline
83544
October 17, 2001 - 6:26 pm
sp_Permalink sp_Print

texture är endast en temporär som kan förkastas säger du men vad är det då som pekarna i texturelist pekar på? för du kör ju
texturelist[texturenum] = texture;

texturelist innehåller ju en mängd pekare är du säker på att du allokerat ut rymme till den pekare som du sparar i texturelist?

För det låter som något problem med pekare. När den har samma innehåll i alla positioner.

Ex vis så skulle följande kod innehålla apa på båda positionerna i array eftersom strcpy skriver över hus med apa, dvs array har samma pekare på båda positionerna.

char hus[4] = {'h','u', 's',''};
char *array[2];

array[0] = hus;
strcpy(hus, "apa"); //kopiera apa dit hus pekar
array[1] = hus;

printf("%s %s", array[0], array[1]);

EDIT: Dåligt exempel ändrade.

[ Detta Inlägg ändrades av: _paul_ den 2001-10-17 20:41 ]

[ Detta Inlägg ändrades av: _paul_ den 2001-10-17 20:43 ]

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 1030
Currently Online:
Guest(s) 446
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL