Gå til innhold

trenger hjelp til eit opengll prosjekt


Anbefalte innlegg

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.

Lenke til kommentar
Videoannonse
Annonse

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
Lenke til kommentar

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.

Lenke til kommentar

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å.

Lenke til kommentar
  • 1 måned senere...

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)

Lenke til kommentar
  • 3 uker senere...

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.

Lenke til kommentar
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
Lenke til kommentar

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...