Games, Gamers und Gamedevelopers

Games, Gamers und Gamedevelopers

Posts 1-10 of 10
  • Max Vollmer
    Max Vollmer
    The company name is only visible to registered members.
    G15 LCD Programmierung
    Hallo,
    hat irgendjemand hier Erfahrung mit der Programmierung des LCDs der G15 von Logitech? Ich wollte mir auf dem LCD aktuelle Variablenwerte, FPS und Zeit pro Frame ausgeben lassen, allerdings fällt die Framerate auf 4.6FPS wenn ich jedes Frame das Display aktualisiere.
    Leider gibt mir Google keine sinnvollen Ergebnisse und dem SDK von Logitech liegen nur primitive Beispielprogramme bei, die nicht gerade hilfreich sind.

    Es scheint mir auch so, dass es nicht möglich ist einzelne Pixel des Displays manuell anzusteuern, sondern dass man gezwungen ist bei einer Aktualisierung alle 160x43Pixel rüberzujagen. In meinen Augen eine extrem unperformante und unschöne Sache.

    Wenn sich jemand mit der Materie auskennt wäre ich dankbar für hilfreiche Tipps und Vorschläge.
  • User photo
    Daniel Ilsemann
    The company name is only visible to registered members.
    Re: G15 LCD Programmierung
    Warum jagst du denn jedes Frame ein Update an das Display? Wenn ich mir die meisten Plugins für das Display anschaue, scheint es als hätte das Display äußerst langsame Reaktionszeiten daher denk ich mal das es für deine Anforderungen nicht ausreicht.

    Aktuelle Variablenwerte - ok
    FPS - Ja, bei 1 Update/sec dürfte das passen
    Zeit pro Frame - *dicke Augen krieg* ... Durchschnittszeit aller Frames der letzten Sekunde wäre eventuell noch in Ordnung

    Klär mich bitte auf, falls ich das mit den "Update jeden Frame" missverstanden habe :)
  • Max Vollmer
    Max Vollmer
    The company name is only visible to registered members.
    Re^2: G15 LCD Programmierung
    Du hast Recht was die Aktualisiserungsrate angeht. Aber das ist nicht das Kernproblem, denn selbst wenn ich nur jede Sekunde update führt das zu einem sekündlichen Stocken ingame. Was mich stört ist, dass ich alle 160x43 Pixel rüberschicken muss, statt einzelne ansprechen zu können. Und selbst wenn es zu teuer gewesen wäre, die einzeln ansteuerbar zu machen, hätte man es ja so einrichten können, dass statt eines Bytes für einen Pixel, ein Byte für 8 Pixel verwendet wird. Schließlich haben die Dinger keine Graustufen und sind daher nur Bits.
    Allerdings scheint es wohl wirklich so zu sein, dass dieses LCD extrem unperformant ist. Das ist doch irgendwie blöd, dass das komplette Game wegen der Trägheit dieses Dings anfängt zu haken. Ich frage mich, wie andere Entwickler das hinbekommen, packen die die Displayfunktionen in einen zweiten Thread und hoffen auf User mit Dualcore? ^^
  • User photo
    Daniel Ilsemann
    The company name is only visible to registered members.
    Re^3: G15 LCD Programmierung
    Ich denke jeder Pixel ist ansprechbar, vllt. aber durch das SDK nicht unterstüzt. Die Menge an Daten bleibt bei 160x43 Pixel (pro Pixel ein Bit, da wie du sagst die G15 keine Graustufen unterstützt --> 6880 Bit / 8 = 860 Byte) noch immer unter einem Kilobyte, was ich verdammt gering finde ... warscheinlich nicht nur ich ;o)

    Thread wäre eine Möglichkeit. Da braucht der Nutzer auch keinen DualCore ... zumindest wäre mir das neu ;o)

    Wie bei der Netzwerkprogrammierung kann es sein, dass die Funktion zum übersenden der Daten anhält, bis das Display aktualisiert wurde und daher die Verzögerung bzw. das Hacken in deiner Anwendung auftritt --> wie war denn nochmal der Fachbegriff verdammt nochmal :o)
  • Max Vollmer
    Max Vollmer
    The company name is only visible to registered members.
    Re^4: G15 LCD Programmierung
    Ja, direkt nach meinem Post ist mir auch aufgefallen, dass ein Dualcore da garnicht von Nöten ist. Ich habe es jetzt so gemacht, die Funktion zum Aktualisieren des LCDs rufe ich in einem eigenen Thread auf. Läuft wunderbar flüssig, keine Probleme mehr ^^
    Danke für deine Hilfe, auch wenn ich mir eigentlich selbst geholfen habe... aber ich glaube ohne dieses Kurzgespräch wäre es nie zum Denkanstoß mit dem Threading gekommen und ich würde noch nächste Woche vor diesem Problem hängen :D
  • User photo
    Daniel Ilsemann
    The company name is only visible to registered members.
    Re^5: G15 LCD Programmierung
    Hauptsache es läuft :)
  • Max Vollmer
    Max Vollmer
    The company name is only visible to registered members.
    Re^6: G15 LCD Programmierung
    Ich weiß, eigentlich ist das hier kein Programmierforum, aber ich habe ein neues Problem und wieder stehe ich wie der Holzfäller vorm Wald und finde keinen Baum. Ich hoffe jemand der hier Anwesenden hat genug Programmiererfahrung um mir hier zu helfen, denn diesmal scheint es sich um etwas wirklich sehr kurioses zu handeln:

    Seit gestern habe ich Fehler bei char arrays. Die Größe und der Inhalt der arrays ist egal, es hängen immer eine unbestimmte Anzahl von chars hinten dran, deren Daten teils zufällig sind oder aber den Inhalt anderer Variablen haben, die kurz vorher im Code deklariert wurden.

    Hier ein Beispiel in dem ich zwei char arrays mit 13 chars deklariere und mit der selben Funktion und den selben Parametern definiere:

    char title[13];
    char title2[13];

    GetWindowText(hWnd,title,13);
    GetWindowText(hWnd,title2,13);

    if (strcmp(title,title2))
    {
    printf("Titles ungleich: \n Title1: %s Title2: %s \n", title, title2);
    return;
    }

    In der Konsole steht folgendes:
    http://monpage.de/userftp/ftp_protector/charbug.jpg

    Das erste array enthält den Titel des Fensters plus irgendwelchen Müll, der zweite array enthält den Titel des Fensters plus irgendwelchen Müller plus den ersten array.

    Für jeden Tipp, Idee, Anregung und so weiter bin ich dankbar.
  • User photo
    Daniel Ilsemann
    The company name is only visible to registered members.
    Re^7: G15 LCD Programmierung
    Mit welcher IDE arbeitest du bzw. welchen Compiler nutzt du?

    Ich hab das ganze mal getestet mit DevC++ 4.9.9.2 in einer Windows Anwendung und hab den Kram über eine MessageBox ausgeben lassen. Nunja ... er kommt nichtmal bis zur MessageBox

    char title[13];
    char title2[13];

    GetWindowText(hwnd,title,13);
    GetWindowText(hwnd,title2,13);
    if(strcmp(title,title2))
    {
    MessageBoxA(hwnd,title,title,MB_OK);
    }
  • Denis Danielyan
    Denis Danielyan
    The company name is only visible to registered members.
    Re^8: G15 LCD Programmierung
    Der Müll kommt daher, dass dein String nicht nullterminiert ist. ein Abschliessendes NULL (0) in einer Zeichenkette zeigt printf (und auch so jeder anderen string funktion) an, wann der String fertig ist.
    Also einfach deine char arrays ein byte grösser machen und von Hand ins letzte Byte ne null schreiben..
    Dann klappts auch mit der Nachbarin
  • Max Vollmer
    Max Vollmer
    The company name is only visible to registered members.
    Re^9: G15 LCD Programmierung
    Danke für die Antworten!

    @Daniel: Ich benutze MS Visual C++ 2005 Express, wahrscheinlich kannst du den Code nicht kompilieren, weil du hWnd nicht definiert hast. hWnd ist in meinem Fall Teil einer Klasse, deswegen steht die Definition nicht dabei, das wäre dann HWND hWnd = GetForgroundWindow();

    @Denis: In der Tat, das war des Rätsels Lösung. Mein größtes Problem ist, dass ich nie die C++-Grundlagen gelernt habe, sondern einfach vor 1.5 Jahren angefangen habe mit dem Half-Life SDK herumzuspielen. Und dort wird alles über die Steamkonsole ausgegeben, welche im Enginecode liegt. Da ich den nie zu Gesicht bekam und der HL-Code char arrays ohne NULL frisst, wusste ich garnicht dass es so etwas gibt. Jetzt rächt sich das natürlich, wenn man eine eigene Applikation entwirft. Man lernt halt nie aus :D

    Falls es euch interessiert, hier ist der komplette Code mitsamt kompiliertem Programm:
    http://monpage.de/userftp/ftp_intern/town_engine_2007_10_25....

    user: mon
    pw: int123