tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
NEIN
ANTWORTEN
25
ZUGRIFFE
1264
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Also wenn du nur eine Update und Render Funkion willst mache es doch so:
    Code cpp:
    1
    2
    3
    4
    5
    
    while( !bEndGame )
    {
      Update();
      Render();
    }
    Ich verstehe irgendwie dein Problem nicht richtig...
    In der Update Methode würde ich dann die Nachrichten von deinem Fenster handeln. Und wenn sich im Spiel was bewegen soll musst halt noch 'ne Move() Funktion einbauen
    Und ich glaube du weißt wie du die Nachrichten abfängst, oder?
    MfG
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  2. #17
    CodeCrafterCpp CodeCrafterCpp ist offline Mitglied Gold
    Registriert seit
    Nov 2011
    Beiträge
    148
    Ja das verstehe ich auch aber ich verstehe nicht aber wie die Render Funktion auszusehen hat mit OpenGL...
    Geändert von CodeCrafterCpp (24.11.11 um 21:01 Uhr)
     

  3. #18
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Also jetzt verstehe ich das nicht.
    Hast du denn überhaupt schon eine renderfunktion geschrieben?
    Also wenn nicht dann beschäftige dich nochmal mit den Grundlagen.
    Und ich bin ja directx ler aber ich denke mal scene beginnen rendern Scene beenden und bildpuffer sichtbar machen. Aber wenn du wirklich nicht weißt wie man das macht dann lass das erstmal mit der spieleprogrammiereung
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  4. #19
    CodeCrafterCpp CodeCrafterCpp ist offline Mitglied Gold
    Registriert seit
    Nov 2011
    Beiträge
    148
    Also ich versteh nicht den Unterschied oder was es macht ist Update() einfach auslesen welche Taste ist gedrückt und Pos in einer Variable reinschreiben und Render() einfach DrawGLScene also Zeichnen oder wie?
     

  5. #20
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Kommt drauf an wie du es möchtest
    Mach doch in Update erstmal ein Message Handler rein. in Render machst du nichts anderes außer den Bildschirm zu leeren. Dann vll noch Tastaturabfrage das wenn ESC gedrückt-> Beenden. Move lass erstmal weg. Was hast du denn eigentlich bis jezt schon? Denn wenn du noch nichtmal was anzeigst nützt dir ne Variable auch nicht viel
    MfG
    CodeCrafterCpp bedankt sich. 
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  6. #21
    CodeCrafterCpp CodeCrafterCpp ist offline Mitglied Gold
    Registriert seit
    Nov 2011
    Beiträge
    148
    Wofür eigendlich Message Handler ist es nicht einfach mit Variablem zu Arbieten?
     

  7. #22
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Also das muss ich nicht verstehen. Hast du denn überhaupt ein Fenster!? Hast du das Fenster als Render-target?
    Du brauchst eine Nachrichtenfunktion damit du dein Fenster benutzen kannst
    Und wie auch immer du das mit Variablen machen willst->weiß ich nicht.
    MfG
    CodeCrafterCpp bedankt sich. 
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  8. #23
    CodeCrafterCpp CodeCrafterCpp ist offline Mitglied Gold
    Registriert seit
    Nov 2011
    Beiträge
    148
    Ja ok wusste nicht so was ein Message Handler ist hab mir mal Win-Api ein bisschen gelernt wusste nicht das ich das brauch soll das in der Update Funktion? Ich hab auf MSDN geschaut ist der Handler jetzt die Callback oder wie?
     

  9. #24
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Also in welche Funktion du das schreibst ist dir überlassen. Von mir aus kannst du die Funktion auch Wurst nennen, wäre aber übersichtshalber nicht empfehlenswert Also meine Spiele sind eigentlich immer mit der GameLoop ausgestattet. Diese ruft dann erst Update, Move und schließlich noch Render auf In Update behandle ich die Fenster nachrichten, obwohl ich damit nichts mache(ich arbeite nur mit DirectInput). In Move werde dann alle möglichen Bewegungen ausgeführt, sowie die Physik geupdatet, und in Render wird halt alles gerendert. Daher das ich mir eine Engine schreibe, ist die GameLoop in der Engine und die vergangene Zeit rechnet mein Engine auch noch aus und übergibt sie dann der Move und Render Methode.
    Wie genau das funnktioniert möchte ich nicht unbedingt erklären, aber gucke dir mal QueryPerformanceCounter an um die Zeiten zu messen
    MfG
    CodeCrafterCpp bedankt sich. 
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  10. #25
    CodeCrafterCpp CodeCrafterCpp ist offline Mitglied Gold
    Registriert seit
    Nov 2011
    Beiträge
    148
    Ok Danke...
    Also mach die Update so WM und so ein kram die Move halt welche taste gedrückt ist und Render macht dann das Bild...Mein Problem war ja eigendlich nur das mit den Springen also das mit den Zählen aber wie Mess ich das mach ich vor den aufrufen von Update die erste Messung und unter Rendern die Zweite? Und wie rechne ich das denn?
     

  11. #26
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Also wie du das misst: Anfang bis Ende Du ließt die Zeit aus mit der Funktion die ich schon geschrieben habe. Dann machst du Meesage Handler, Move, Render und nimmst wieder die Zeit. Dann hast du 2 Zeiten. Anschließend rechnest du so:
    Code cpp:
    1
    
    Zeit = Zeit2 - Zeit1;
    Das war nicht schwer oder
    Und in move werde Tasten abgefangen ja aber auch Objekte gedreht bewegt usw...
    PS In welcher reihfolge die GameLoop alles abfrag ist dir überlassen. Es währe aber ratsam den Message Handler am Anfang aufzurufen.
    Also:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    // Startzeitpunkt messen
    QueryPerformanceCounter(...);
     
    // Nachrichten verarbeiten
    while( PeekMessage( &Message, NULL, 0, 0, PM_REMOVE ) )
    {
        TranslateMessage( &Message );
        DispatchMessage( &Message );
     
            if( Message.message == WM_QUIT )
        {
            // Game Loop verlassen
            bEndGame = true;
        }   
    }
     
    // Render
    // Move
    // und was du sonst noch brauchst
    QueryPerformanceCounter(...);
    MfG
    EDIT: Wenn du es ganz genau haben willst mit Frame Limiter dann musst du noch geteilt durch die Frequenz nehemen
    CodeCrafterCpp bedankt sich. 
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

Ähnliche Themen

  1. Hot Jump
    Von Dicrivity im Forum Hall of Fame
    Antworten: 4
    Letzter Beitrag: 22.06.09, 22:45
  2. World Jump Day!
    Von Ultraflip im Forum Smalltalk
    Antworten: 33
    Letzter Beitrag: 20.07.06, 23:52
  3. Unable to jump to row 0?
    Von Muffinmampfer im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 22.08.02, 05:49
  4. [jump to] links
    Von :: c0rt0na :: im Forum HTML-Editoren
    Antworten: 4
    Letzter Beitrag: 03.10.01, 14:13
  5. jump and run game
    Von guigui im Forum Flash Plattform
    Antworten: 1
    Letzter Beitrag: 11.09.01, 12:24

Stichworte