Je gaat al snel naar directX of openGL... Wat voor lijntjes will je tekenen? Win32 zal er misschien ook wat functies voor hebben, mits je in een formpje zit.quote:Op maandag 9 mei 2011 18:06 schreef netolk het volgende:
Hey Fokkers
Ik heb een vraagje hoe kan ik aparte pixels op het scherm tekenen of kleine lijntjes??
Ik heb al wat gekeken voor openGL maar dat is niet zo heel handig om een paar lijntjes te tekenen
Iemand suggesties om dit te doen?
Hmm... kut k vind die win32 dingen altijd zo'n gedoe om alleen al een window te krijgen...quote:Op woensdag 11 mei 2011 10:28 schreef Ai_KaRaMBa het volgende:
openGL kan zeker niet in een console, aangezien dat text-based is. Ik neem aan dat je wel onder windows werkt? (en niet linux, freebsd, mac, whatever?)
Dan zul je toch met Win32 of Glut aan de slag moeten (glut is een laag tussen win32 en opengl in, die windowing en messaging afhandeld).
Win32 heeft een SetPixel() functie, maar die is niet echt snel. Als het snel(ler) moet, kun je een off-screen buffer alloceren, en die met SetDIBits vrij snel naar het scherm blitten.
Ja, en dan de rest van mn programma helemaal ombouwen zeker Xdquote:Op woensdag 11 mei 2011 12:45 schreef Catbert het volgende:
OpenGL is ook voor 2D werk handig, omdat het gebruik maakt van de hardwareversnelling van je GPU. Het enige nadeel is dat het in eerste instantie wat complexer is.
Je kunt als je perse met OpenGL bezig wil ook prima met C# of Java aan de slag trouwens.
In principe is dit niet mogelijk met standaard C(++). Het opvangen van toetsen is namelijk os-specifiek (invoer kan immers alleen in C(++) gelezen worden nadat de terminal het naar cin stuurt).quote:Op dinsdag 7 juni 2011 13:51 schreef netolk het volgende:
Hey, ik heb een vraagje is het mogelijk om in een console programma de toets-status te onderscheppen??
| 1 2 | while((c = getchar()) != '\n' && c != EOF) /* discard */ ; |
| 1 2 3 4 5 6 7 8 9 10 11 12 | class Key{ void *_HANDLE; bool _KEY_PRESSED[256]; public: Key(); ~Key() throw(); // operators ed moeten nog bool operator[](const unsigned char &n); friend unsigned long WINAPI Threader_Key(void *Data); }; |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | unsigned long WINAPI Threader_Key(void *Data){ Thread::Key *myKey = reinterpret_cast<Thread::Key*>(Data); // declaraties en error checks hier weggelaten //dispatch the events to the appropriate handler. for(unsigned i=0; i < cNumRead;i++){ switch(irInBuf[i].EventType){ case KEY_EVENT: if(irInBuf[i].Event.KeyEvent.bKeyDown) myKey->_KEY_PRESSED[irInBuf[i].Event.KeyEvent.wVirtualKeyCode] = true; else myKey->_KEY_PRESSED[irInBuf[i].Event.KeyEvent.wVirtualKeyCode] = false; break; } } } } |
als ik hem protected maak werkt het btw nog steeds niet maar een friend functie zou gewoon toegang moeten hebben tot alle members (dus ook de private) van een class toch?quote:Op maandag 25 juli 2011 15:17 schreef Ai_KaRaMBa het volgende:
lijkt mij dat je _KEY_PRESSED dan ook als 'friend' moet declareren? Zonder aanduiding is het geloof ik standaard "private", en kan dus een friend functie er niet bij
| 1 | bool _KEY_PRESSED[256]; |
Nee, namespace kan het niet zijn omdat in de class staat welke functie gebruik van de private members mag maken en die functie staat niet in een namespace... Zelf denk ik meer dat het misschien te maken heeft dat de functie in een andere thread draait...quote:Op dinsdag 26 juli 2011 10:21 schreef Ai_KaRaMBa het volgende:
Ik heb in het verleden wel eens met Java () dergelijke problemen gehad, en daar lag het aan dat de member variabelen private waren, en dat protected fucties daar niet bij konden; ik dacht dat dit probleem iets soortgelijks zou zijn
![]()
Ik ben niet echt ervaren met C++, maar na wat googlen lijkt het inderdaad dat wel had moeten werken: in het eerste voorbeeld in http://www.cplusplus.com/doc/tutorial/inheritance/ doen ze precies hetzelfde als jij...
Mogelijk dat je namespace roet in 't eten gooit???
| 1 | friend unsigned long WINAPI ::Threader_Key(void *Data); |
het forceren met :: heb ik geprobeerd maar zegt ie dood leuk dat ik hem in :: moet declareren...quote:Op dinsdag 26 juli 2011 12:46 schreef GS42 het volgende:
Dat de code in verschillende threads draait, zou voor de compiler geen verschil moeten maken. Ik denk dat je probleem toch door de namespaces komt. Je zei dat Threader_Key in de globale namespace staat? Forceer dat dan eens in je code door de friends declaratie zo te schrijven:
[ code verwijderd ]
Hiertoe moet de functie wel eerst gedeclareerd zijn, geen probleem lijkt me. Ik denk dat dit de compiler-melding oplost.
Als het niet werkt, kan je altijd een access functie á la Key::setKeyPressed(unsigned char idx, bool value) inline definieren, dit zou het probleem ook oplossen en misschien zelfs netter zijn.
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |