Gå til innhold

trenger hjelp til eit opengll prosjekt


Anbefalte innlegg

Skrevet

eg har tenkt å lage eit enkelt 2d opengl spill men har 2 problemer.

 

eg treng hjelp for å få spillet til å teste om eg holder nede ein knap. eg har ein løsning men den reagerer veldig seint og starter med eit hak før den blir jevn og gjer det den skal.

 

så trenger eg og vite korleis eg kan få ein class til å finne ut variablene til alle copiene av ein class. uten å liste op navnene til alle copiene.

Videoannonse
Annonse
Skrevet (endret)

det siste er ganske enkelt om du kan litt OOP. personlig har jeg veldig lite erfaring med C++, men i C# ville jeg laget en statisk liste i klassen, og i konstruktøren kjøre Klasse.List.Add(this). Noe tilsvarende kan du garantert gjøre i C++ også, uten at jeg kan C++ godt til å komme med kodeeksempler.

 

For å teste om en knapp holdes nede i windows bruker GetAsyncKeyState.

 

Dette høres ut som enkle problemer, så kanskje du burde starte med noe enklere enn å lage spill inntil videre?

Endret av hockey500
Skrevet

Jeg forstår ikke helt siste problemet ditt, men du bruker std::list for å lage en linked-list over objekter hvor du kan slette elementer på en hvilken som helst plass.

 

For eksempel:

std::list<BaseClass&> world_items;

 

Vær nøye med at objekter som slettes fra listen også slettes fra minnet med delete.

Skrevet

Om han bør slette objektene med delete kommer helt ann på hvordan minnet allokeres. En tommelfingerregel er jo at man aldri skal destruere noe med delete som man ikke har allokert med new.

Skrevet

Dette har forresten ikke noe med OpenGL å gjøre. Men legg meg til på MSN (WLM nå), så hjelper jeg deg gjerne med å skrive et spill eller to.

Skrevet

egentlig hadde eg tenkt meg ein annen løsning en å liste opp alle copiene av classen men sån at eg sjekker alle copiene av classen eg vil uten at eg treng å liste det opp.

 

og så bruker eg glutKeyboardFunc(handleKeypress) til å finne ut om ein knap er trykt men den er ubrukelig når eg skal lage eit spill med den.

 

eg skall ikkje lage noe stort spill det er bare eit lite spill med ein player og noe kloser eg kan hope på.

  • 1 måned senere...
Skrevet

OpenGL er ikke et dårlig valg for å lage 2D, du har mange muligheter til å lagge effekter og slikt (shaders, point sprites, perspektivforvrengninger etc.) som ikke er lett i et normalt 2D API.

Men SDL har jo OpenGL bindinger, i tillegg til lyd, musikk og input, som også kreves av et spill.

 

OpenGL har dog mistet mye av sjarmen etter at jeg begynte med Direct3D... :( (liten sidenotis)

  • 3 uker senere...
Skrevet

murko:

 

jeg slutta med glut fordi jeg hadde noe av det samme problemet som du har (tror jeg) med mus og tastatur, samt variabler som ikke ville oppdateres. jeg husker ikke hva det kom av, men jeg lagde mine egne vindu klasser etterhvert som tiden gikk, og fikk aldri samme problemer mer. jeg tror glut er veldig gammelt og ubrukelig i dag med mindre det har kommet noen nyere versjoner, høres ikke sånn ut etter hva du sier. foreslår da at du enten finner noe annet enn glut eller lærer deg å lage egne vinduer (Nehe har feks en veldig grei codebase du kan låne fra også om du ikke vil lære deg så alt for mye om api og sånt, men dog er greit å vite litt om det hvis du vil gjøre mer enn bare enkle ting), eller du kan bytte til directx med d3d9 sdken hvor det visstnok skal være mange gode eksempler med kildekode.

Skrevet (endret)
eg treng hjelp for å få spillet til å teste om eg holder nede ein knap. eg har ein løsning men den reagerer veldig seint og starter med eit hak før den blir jevn og gjer det den skal.

 

Hvis jeg f.eks trykker på VK_LEFT så setter jeg en bool variabel (ex. movX = true;) som sier at variabelen for x-retning skal økes. Så gjør jeg dette i mainloopen, istedenfor i den callback prosedyren. (Da får du det resultatet som du beskriver). Så må du sette denne bool variabelen til true, når det registreres en KEYDOWN, og som false, når det registreres en KEYUP. Dette er også en måte som gjør at du kan bruke flere taster samtidig.

Endret av Knut_F

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...