abonnement Unibet Coolblue Bitvavo
  maandag 9 mei 2011 @ 22:42:46 #151
85514 ralfie
!Yvan eht nioj
pi_96574865
quote:
0s.gif 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?
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.
  maandag 9 mei 2011 @ 23:52:05 #152
189216 netolk
maar dan andersom
pi_96579164
Het liefst wil ik niet in Win32 werken... ik heb een paar tuts gevonden met openGL maar die gebruiken allemaal glut ofzo en dat is dan dus weer niet puur openGL
Beware of the Raping Zebra's
  dinsdag 10 mei 2011 @ 23:29:26 #153
189216 netolk
maar dan andersom
pi_96629387
@ ralfie, in mijn vorige post was ik vergeten wat ik voor lijntjes wil tekenen

ik wel horizontale,verticale en diagonale (45 graden) lijnen tekenen van 1 pixel breed en 3 pixels lang. En daar wil ik er heel veel van

Moet openGL in een win32 omgeving of kan het ook draaien in console mode?
Beware of the Raping Zebra's
  woensdag 11 mei 2011 @ 10:28:30 #154
314941 Ai_KaRaMBa
Eat my shorts!
pi_96639236
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.
  woensdag 11 mei 2011 @ 12:25:10 #155
189216 netolk
maar dan andersom
pi_96643858
quote:
0s.gif 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.
Hmm... kut k vind die win32 dingen altijd zo'n gedoe om alleen al een window te krijgen...

nouja het moet dan maar en k heb ondertussen de juiste code voor een lijn in openGL gevonden dus dat is opgelost

bedankt
Beware of the Raping Zebra's
  woensdag 11 mei 2011 @ 12:45:56 #156
58834 Catbert
The evil HR Director.
pi_96644621
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.
"[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
  woensdag 11 mei 2011 @ 16:40:06 #157
189216 netolk
maar dan andersom
pi_96654822
quote:
0s.gif 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.
Ja, en dan de rest van mn programma helemaal ombouwen zeker Xd

Nee, ik maak er wel gewoon een win32 app van en dan gewoon openGL voor het tekenwerk
Beware of the Raping Zebra's
  dinsdag 7 juni 2011 @ 13:51:06 #158
189216 netolk
maar dan andersom
pi_97836871
Hey, ik heb een vraagje is het mogelijk om in een console programma de toets-status te onderscheppen??

ik gebruik nu GetAsyncKeyState(VK_UP) programma registreert het wel maar na het afsluiten kom ik er achter dat cmd het ook nog registreert en dan dus allemaal andere commando's (die daar voor gebruikt zijn) gaat uitvoeren, weet iemand hoe ik dit kan voorkomen in een console programma?
Beware of the Raping Zebra's
  dinsdag 7 juni 2011 @ 19:28:49 #159
85514 ralfie
!Yvan eht nioj
pi_97851738
- knip -

verkeerd gelezen
pi_97853624
quote:
0s.gif 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??
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).

Er zijn wel os-specifieke libraries die omgang met de terminal versoepelen, waarbij curses de grootste is in Unix-omgevingen. Ik heb curses voor iets dergelijks gebruikt, dus ik weet dat het hiermee kan. Ik lees ook net op de wiki-site dat het blijkbaar naar Windows geport is, dus wellicht dat je hier iets mee kan.
"Slechts diegene mag slopen die iets beters kan bouwen."
  woensdag 8 juni 2011 @ 09:52:21 #161
189216 netolk
maar dan andersom
pi_97877034
Maar, krijg ik dan niet het zelfde als GetKey() ect. wat windows zelf heeft? (en dan dus ook dat de console nog steeds doet alsof de key's voor de console bestemt waren)
Beware of the Raping Zebra's
  woensdag 8 juni 2011 @ 12:51:04 #162
314941 Ai_KaRaMBa
Eat my shorts!
pi_97882958
Waarschijnlijk zal je de input buffer moeten flushen. Ik heb echter niet direct een idee hoe je dat doet in een console applicatie...

Iets als:
1
2
while((c = getchar()) != '\n' && c != EOF)
    /* discard */ ;
wellicht?
  woensdag 8 juni 2011 @ 14:01:02 #163
189216 netolk
maar dan andersom
pi_97885611
tja, voor iets als cin oid zal het wel werken ja maar, niet als je key states wil kunnen bekijken zonder dat je programma gaat wachten op een key input
Beware of the Raping Zebra's
  woensdag 8 juni 2011 @ 17:52:01 #164
314941 Ai_KaRaMBa
Eat my shorts!
pi_97895430
Nee, ik bedoel dat je voordat je je programma exit, even de input buffer flushed met zo'n loopje
  woensdag 8 juni 2011 @ 19:39:19 #165
85514 ralfie
!Yvan eht nioj
pi_97900641
Voor key inputs kun je gewoon een messagehandler aan je console app toevoegen. Geen idee hoe of wat dat met je "na het afsluiten kom ik er achter dat cmd het ook nog registreert en dan dus allemaal andere commando'"-probleem doet.

http://msdn.microsoft.com/en-us/library/ms686016

(werkt alleen op Ramen)

@hierboven: cin.flush() ? - Nee, wacht, schijnt niet te kunnen. cin.sync() dan of cin.ignore()?
  donderdag 9 juni 2011 @ 10:26:42 #166
314941 Ai_KaRaMBa
Eat my shorts!
pi_97928125
Die SetConsoleCtrlHandler functie waaraan je refereerd is voor het afvangen van system events (Ctrl-C, Uitloggen, etc), niet voor alle toetsen.

Dit voorbeeld van MSDN doet echter wel precies wat je zou willen:
http://msdn.microsoft.com/en-us/library/ms685035(v=VS.85).aspx. Die laat zien hoe je input events van de console leest (toetsen indrukken, toetsen loslaten, mouse events, etc) en afhandled. Doordat je dus key-presses en key-releases krijgt, kun je dus zelf bijhouden welke toetsen ingedrukt zijn.

Volgens mij is die ReadConsoleInput trouwens wel blocking, dus lijkt het me zinvol om dat in een apparte thread te doen.

Maar als je toch Win32 gebaseerde eventhandlers gaat schrijven, waarom maak je dan nog een console applicatie?
  donderdag 9 juni 2011 @ 12:32:20 #167
189216 netolk
maar dan andersom
pi_97932435
oe, txs Ai_KaRaMBa, dr zit ook een muis dinges bij, dat is wel handig eigenlijk :)
Ik ga daar even mee klooien
Beware of the Raping Zebra's
  zondag 12 juni 2011 @ 00:26:43 #168
189216 netolk
maar dan andersom
pi_98048826
Het is gelukt hoor :) met de link van Ai_KaRaMBa heb ik een thread gemaakt die de key-status bekijkt dus dan heeft mijn programma gewoon draaien en kan ik de key's uitlezen wanneer ik wil
Beware of the Raping Zebra's
  zondag 24 juli 2011 @ 17:20:40 #169
189216 netolk
maar dan andersom
pi_99883612
Ik heb een probleem met class members en 'friend' in een 'friend' functie blijft de compiler zeggen dat de member private is...

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);
        };
en de functie:
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;
            }
        }
    }
}

Het gaat om het deel myKey->_KEY_PRESSED[...] = true/false

Weet iemand waarom dit niet werkt? de functie draait overigens wel in een aparte thread ik weet niet of dat uit maakt, maar als ik _KEY_PRESSED 'public' maak werkt het wel...
Beware of the Raping Zebra's
  maandag 25 juli 2011 @ 15:17:22 #170
314941 Ai_KaRaMBa
Eat my shorts!
pi_99922882
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
  maandag 25 juli 2011 @ 16:21:40 #171
189216 netolk
maar dan andersom
pi_99925394
quote:
0s.gif 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
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?

Ja, maar _KEY_PRESSED is een member
1bool _KEY_PRESSED[256];
Beware of the Raping Zebra's
  dinsdag 26 juli 2011 @ 10:21:25 #172
314941 Ai_KaRaMBa
Eat my shorts!
pi_99952275
Ik heb in het verleden wel eens met Java ( :r ) 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???
  dinsdag 26 juli 2011 @ 10:50:32 #173
189216 netolk
maar dan andersom
pi_99953182
quote:
0s.gif Op dinsdag 26 juli 2011 10:21 schreef Ai_KaRaMBa het volgende:
Ik heb in het verleden wel eens met Java ( :r ) 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???
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...
Beware of the Raping Zebra's
pi_99956786
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:

1friend unsigned long WINAPI ::Threader_Key(void *Data);

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.
"Slechts diegene mag slopen die iets beters kan bouwen."
  dinsdag 26 juli 2011 @ 12:55:57 #175
189216 netolk
maar dan andersom
pi_99957121
quote:
0s.gif 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.
het forceren met :: heb ik geprobeerd maar zegt ie dood leuk dat ik hem in :: moet declareren...
Wat dus niet kan omdat ie in een apart .cpp bestand staat. Maar die oplossing van jou is idd wel netter (had ik nog niet aan gedacht) dus dan pas ik dat gewoon toe en is het probleem ook opgelost.
Bedankt, jij ook Ai_KaRaMBa voor het mee denken
Beware of the Raping Zebra's
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')