Jammer-Thread
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Ich habe sieben Monate gebraucht, um meine Eingaben kalibriert zu kriegen. Dir muss nichts peinlich sein.
Ich fange übrigens schonmal mit dem Raw Input-Tutorial an; aber es wird noch Wochen dauern, bis es vollständig ist.
Ich fange übrigens schonmal mit dem Raw Input-Tutorial an; aber es wird noch Wochen dauern, bis es vollständig ist.
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Code: Alles auswählen
return;
} else {
err = "axis classes invalid";
}
} else {
err = "button classes invalid";
}
} else {
err = "capabilities invalid";
}
} else {
err = "input report protocol too large";
}
} else {
err = "no input report protocol";
}
CloseHandle(myHandle);
} else {
err = "handle not available";
}
} else {
err = "path not found";
}
throw Exception(err);
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
do {
(*toDestination) = (*toSource);
++toDestination;
++toSource;
} while(L'\0' != toSource);
*Absturz*
Ach ja – ich vergaß, dass das hier C++ ist und was ich eben geschrieben habe wird propagiert zu:
} while(nullptr != toSource);
(*toDestination) = (*toSource);
++toDestination;
++toSource;
} while(L'\0' != toSource);
*Absturz*
Ach ja – ich vergaß, dass das hier C++ ist und was ich eben geschrieben habe wird propagiert zu:
} while(nullptr != toSource);
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Egal, wie viele Bits man hat: Es gibt nie einen Wert, der genau in der Mitte des Wertebereichs liegt. Aber ein Joystick hat eine Mittelstellung. Und die Welt deshalb ein Problem.
- Schrompf
- Moderator
- Beiträge: 5045
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: Jammer-Thread
Aber nur ein halbes 65536stel Problem, oder? :-)
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
- dot
- Establishment
- Beiträge: 1745
- Registriert: 06.03.2004, 18:10
- Echter Name: Michael Kenzel
- Kontaktdaten:
Re: Jammer-Thread
wow, wer hat sich das denn bitte ausgedacht!?Krishty hat geschrieben:Egal, wie viele Bits man hat: Es gibt nie einen Wert, der genau in der Mitte des Wertebereichs liegt. Aber ein Joystick hat eine Mittelstellung. Und die Welt deshalb ein Problem.
Re: Jammer-Thread
Meine erste Vermutung wäre von Neumann, oder tausend Mathematiker vor ihm, weil ein Bit halt keine ungerade Anzahl von Zuständen hat.dot hat geschrieben:wow, wer hat sich das denn bitte ausgedacht!?
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: Jammer-Thread
Die Anzahl verfügbarer Zustände schreibt aber nicht deren Nutzung vor. Du speicherst in einem bool ja auch keine 256 Wahrheitswerte, nur weil es meist ein ganzes Byte belegt. ;)Niki hat geschrieben:Meine erste Vermutung wäre von Neumann, oder tausend Mathematiker vor ihm, weil ein Bit halt keine ungerade Anzahl von Zuständen hat.dot hat geschrieben:wow, wer hat sich das denn bitte ausgedacht!?
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
- dot
- Establishment
- Beiträge: 1745
- Registriert: 06.03.2004, 18:10
- Echter Name: Michael Kenzel
- Kontaktdaten:
Re: Jammer-Thread
Ich meinte natürlich, wer auf die Idee gekommen ist, die Bits so zu verteilen, dass es keinen Wert für die Mittelstellung gibt... ;)
Zuletzt geändert von dot am 15.04.2013, 14:16, insgesamt 1-mal geändert.
Re: Jammer-Thread
Wie du selbst weißt, hat eine 1 Bit Boole'sche Zahl hat einen Wertebereich von 0 bis 1. Die goldene Mitte ist 0.5.CodingCat hat geschrieben:Du speicherst in einem bool ja auch keine 256 Wahrheitswerte, nur weil es meist ein ganzes Byte belegt. ;)
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: Jammer-Thread
Bitte? :D Habe ich von 1-Bit-Zahlen gesprochen? Siehe dot. ;)Niki hat geschrieben:Wie du selbst weißt, hat eine 1 Bit Boole'sche Zahl hat einen Wertebereich von 0 bis 1. Die goldene Mitte ist 0.5.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Re: Jammer-Thread
Du kannst auch N>0 Bits nehmen. Die goldene Mitte des resultierenden Wertebereichs ist nie darstellbar. Vielleicht mit floats, aber selbst da wäre ich mir nicht sicher.
Zuletzt geändert von Niki am 15.04.2013, 14:19, insgesamt 1-mal geändert.
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: Jammer-Thread
Nochmal: Du legst deinen Wertebereich stets selbst fest, die Anzahl möglicher Werte ist dabei immer nur eine Obergrenze.Niki hat geschrieben:Du kannst auch N>0 Bits nehmen. Die goldene Mitte des resultierenden Wertebereichs ist nie darstellbar. Vielleicht mit floats, aber selbst da w#re ich mir nicht sicher.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Re: Jammer-Thread
Klar, du kannst natürlich einen Wertebereich als kleiner definieren. Da würde ich dir auch nicht widersprechen.
- dot
- Establishment
- Beiträge: 1745
- Registriert: 06.03.2004, 18:10
- Echter Name: Michael Kenzel
- Kontaktdaten:
Re: Jammer-Thread
Da liegt dein Denkfehler. Ein Bit kann zwei verschiedene Zustände unterscheiden. Ob du diesen Zuständen nun Zahlenwerte zuordnest und welche das genau sind, ist völlig dir überlassen. ;)Niki hat geschrieben:Wie du selbst weißt, hat eine 1 Bit Boole'sche Zahl hat einen Wertebereich von 0 bis 1. Die goldene Mitte ist 0.5.
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: Jammer-Thread
Ganz genau, und wenn du bei 8 Bit einen Wertebereich von 0 bis 254 wählst, hast du auch eine schöne Mitte. :) Ich bin mir nicht sicher, was Krishty hier eigentlich anmosert; dass er einen Wert nicht ausnutzen kann oder dass die Geräte tatsächlich einen derart unsinnigen Wertebereich vorgeben.Niki hat geschrieben:Klar, du kannst natürlich einen Wertebereich als kleiner definieren. Da würde ich dir auch nicht widersprechen.
Zuletzt geändert von CodingCat am 15.04.2013, 14:27, insgesamt 1-mal geändert.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Re: Jammer-Thread
Oh Mann, ich ziehe ja schon von dannen!
Nur Spaß :) Aber von dannen ziehe ich trotzdem, weil ich einkaufen muss.
Nur Spaß :) Aber von dannen ziehe ich trotzdem, weil ich einkaufen muss.
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Ja; das ist absolut richtig. Die Hardware kann sich sogar selber aussuchen, wie groß der Wertebereich ist, den sie meldet – trotzdem nutzt jedes meiner sieben Testgeräte eine gerade Anzahl Zustände für alle seine Achsen.CodingCat hat geschrieben:Die Anzahl verfügbarer Zustände schreibt aber nicht deren Nutzung vor. Du speicherst in einem bool ja auch keine 256 Wahrheitswerte, nur weil es meist ein ganzes Byte belegt. ;)Niki hat geschrieben:Meine erste Vermutung wäre von Neumann, oder tausend Mathematiker vor ihm, weil ein Bit halt keine ungerade Anzahl von Zuständen hat.dot hat geschrieben:wow, wer hat sich das denn bitte ausgedacht!?
Nein. Fast alle Joysticks und Gamepads, die ich bisher benutzt habe, liefern 8-Bit-Werte (und da kann man die Abweichung als Kurvenbewegung spüren). Mein 300-€-Logitech-Lenkrad liefert als einzige Ausnahme 15-Bit-Werte, und das auch nur auf der Lenkradachse.Schrompf hat geschrieben:Aber nur ein halbes 65536stel Problem, oder? :-)
Dummerweise geht es auch in die andere Richtung. Kennt ihr die Rundblickschalter (Hat Switches) an Joysticks? Die sind ebenfalls als Achsen implementiert; allerdings mit nur vier oder acht Zuständen: 1 für 0°; 2 für 90°; 3 für 180°; 4 für 270°.
Jetzt möchte ein cleverer Mensch vielleicht auf die Idee kommen, das halbe 256tel Abweichung bei den Controllern auszugleichen, indem die ersten 128 Werte auf 0 bis 0,5 und die nächsten 128 auf 0,50588… bis 1,0 gemappt werden. Und wenn man noch klüger ist, unterteilt man nicht in 128-128 sondern nutzt den Mittelpunkt der Kalibrierung.
Aber auf den Rundblickschalter angewendet bedeutet das, das 1 zu 0° wird; 2 zu 180°; 3 zu 225°; und 4 zu 270°. Ihr bewegt das Ding nach rechts und interpretiert wird es als nach-unten. Scheiße.
Ich muss also zwischen Achsen unterscheiden, die einen Mittelpunkt haben, der dann aber niemals in der Mitte des Wertebereichs liegt; und Achsen, die keinen Mittelpunkt haben. Und weil die von der HID-API immer identisch ankommen, bleiben mir dafür einzig und allein die DInput-Kalibrierungsinformationen aus der Registry.
DAS mosere ich an.
- Schrompf
- Moderator
- Beiträge: 5045
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: Jammer-Thread
Hab mein Headset einmal zu oft umgesteckt. Jetzt sind zwei der vier Kontakte des USB-Steckers abgerieben. Und ich stehe just in dem Moment ohne Headset da, in dem ich die Platzhalter-Sounds für den neuen Gegner einsingen wollte.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Re: Jammer-Thread
Warum führt der erste Google-Treffer immer zu einem Forum, in dem gefragt wird "kannst du das nicht Googeln?"
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
Re: Jammer-Thread
Um dich zu zwingen auf einem Forum posten, damit man fragen kann ob du das nicht googeln kannst.antisteo hat geschrieben:Warum führt der erste Google-Treffer immer zu einem Forum, in dem gefragt wird "kannst du das nicht Googeln?"
Einer der vielen Gründe warum ich dieses Forum mag ist übrigens, dass ich bisher noch keine "Google gefälligst" Antwort gesehen habe. Links zu einer erklärenden Seite sind aber natürlich okay, auch wenn dadurch der Forums-eigene Content geringer wird (was wiederum etwas schade ist).
-
- Establishment
- Beiträge: 467
- Registriert: 18.04.2002, 15:31
Re: Jammer-Thread
https://bugzilla.gnome.org/buglist.cgi? ... ch=doxygen
"1658 bugs found. This list is too long for Bugzilla's little mind"
und das sind tatsächlich nur die offenen...
"1658 bugs found. This list is too long for Bugzilla's little mind"
und das sind tatsächlich nur die offenen...
"Mir ist auch klar, dass der Tag, an dem ZFX und Developia zusammengehen werden der selbe Tag sein wird, an dem DirectGL rauskommt."
DirectGL, endlich ist es da :)
"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
DirectGL, endlich ist es da :)
"According to the C++ standard, it's "undefined". That's a technical term that means, in theory, anything can happen: the program can crash, or keep running but generate garbage results, or send Bjarne Stroustrup an e-mail saying how ugly you are and how funny your mother dresses you." :shock:[/size]
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Sooo. Ich habe dann mal einen Prototypen für statische Reservierung und nebenläufige statische Initialisierung geschrieben, der zum Grundgerüst meines nächstes Projekts werden könnte.
Die Erfahrung mit Visual C++ war ein wenig ernüchternd. Sagen wir, ich reserviere global Speicher für alle Foos, die jemals in meinem Programm vorkommen:
Foo foos[16384]; // habe dafür gesorgt, dass die nicht konstruiert werden; nicht einmal committed
size_t numberOfFoos; // implizit 0
Jetzt werden alle Foos von dort allokiert:
void * Foo::operator new (size_t) {
return foos + numberOfFoos;
++numberOfFoos;
}
Zu erwarten wäre jetzt, dass – zumindest am Anfang des Programms, bevor es zu kompliziert wird – alle Foos, die man anlegt, schon bei Kompilierung eine Adresse bekämen:
void main(int, char[]) {
auto f0 = new Foo(); // Adresse: foos + 0
auto f1 = new Foo(); // Adresse: foos + 1
}
Aber Pustekuchen – Visual C++ behandelt numberOfFoos, als wäre es völlig unberechenbar. Die Adressen werden weiterhin zur Laufzeit ausgerechnet. Es werden sogar implizite nullptr-Tests hinter jede Allokierung gepflanzt.
Naja; zumindest entfallen die globalen Wirkungen. Eine Allokation hat mit diesem Allokator kosten von einigen Takten; nimmt man einen tatsächlich brauchbaren Allokator, kann man Speicher pseudo-dynamisch ohne Nebenwirkungen und völlig inline in ungefähr 30 Takten allokieren und freigeben. Für den Anfang ist das eine brauchbare Verbesserung.
Die Erfahrung mit Visual C++ war ein wenig ernüchternd. Sagen wir, ich reserviere global Speicher für alle Foos, die jemals in meinem Programm vorkommen:
Foo foos[16384]; // habe dafür gesorgt, dass die nicht konstruiert werden; nicht einmal committed
size_t numberOfFoos; // implizit 0
Jetzt werden alle Foos von dort allokiert:
void * Foo::operator new (size_t) {
return foos + numberOfFoos;
++numberOfFoos;
}
Zu erwarten wäre jetzt, dass – zumindest am Anfang des Programms, bevor es zu kompliziert wird – alle Foos, die man anlegt, schon bei Kompilierung eine Adresse bekämen:
void main(int, char[]) {
auto f0 = new Foo(); // Adresse: foos + 0
auto f1 = new Foo(); // Adresse: foos + 1
}
Aber Pustekuchen – Visual C++ behandelt numberOfFoos, als wäre es völlig unberechenbar. Die Adressen werden weiterhin zur Laufzeit ausgerechnet. Es werden sogar implizite nullptr-Tests hinter jede Allokierung gepflanzt.
Naja; zumindest entfallen die globalen Wirkungen. Eine Allokation hat mit diesem Allokator kosten von einigen Takten; nimmt man einen tatsächlich brauchbaren Allokator, kann man Speicher pseudo-dynamisch ohne Nebenwirkungen und völlig inline in ungefähr 30 Takten allokieren und freigeben. Für den Anfang ist das eine brauchbare Verbesserung.
Re: Jammer-Thread
Warum benötigt Clover den Mesa-Treiber, wenn ich es doch eh bloß für CPU-basiertes OpenCL nutzen will?
Naja, kompilier' ich halt den kompletten Treiberstack inklusive LLVM neu. Hab' ja sonst nix zu tun den ganzen Abend.
Und CMakefiles können die Pfeifen auch alle nicht schreiben. Zumindest passt das nicht in mein Prefix-System, bei dem ich mit User-Rechten in einem abgekapselten Verzeichnis die experimentellen Treiber liegen habe und nur bei entsprechend gesetzten envvars dieser Treiber auch genutzt wird.
Naja, kompilier' ich halt den kompletten Treiberstack inklusive LLVM neu. Hab' ja sonst nix zu tun den ganzen Abend.
Und CMakefiles können die Pfeifen auch alle nicht schreiben. Zumindest passt das nicht in mein Prefix-System, bei dem ich mit User-Rechten in einem abgekapselten Verzeichnis die experimentellen Treiber liegen habe und nur bei entsprechend gesetzten envvars dieser Treiber auch genutzt wird.
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
Re: Jammer-Thread
Ich habe hier ein US-englisches Windows, öffne Notepad, schreibe dort „ss“ rein, suche nach „ß“, und der findet das als Übereinstimmung.
Was ist das denn.
Was ist das denn.
-
- Establishment
- Beiträge: 191
- Registriert: 01.03.2009, 19:22
- Echter Name: David N.
Re: Jammer-Thread
Einer der Unicode-Normalisierungsalgorithmen. ;)eXile hat geschrieben:Ich habe hier ein US-englisches Windows, öffne Notepad, schreibe dort „ss“ rein, suche nach „ß“, und der findet das als Übereinstimmung.
Was ist das denn.
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Ich jeden Tag derweil zumindest Post die Feedback-Feld auf MSDN, in ficken Übersetzung maschinell auf Kreuz.
Wenn sie in zwei Jahren nur noch Englisch anzeigen spart mir das wahrscheinlich mehr Zeit als für den Rest meines Lebens die englischen Originale suchen zu müssen. Und ich kann meine wüsten Beschimpfungen da loswerden, wo sie auch jemand verdient hat.
Wenn sie in zwei Jahren nur noch Englisch anzeigen spart mir das wahrscheinlich mehr Zeit als für den Rest meines Lebens die englischen Originale suchen zu müssen. Und ich kann meine wüsten Beschimpfungen da loswerden, wo sie auch jemand verdient hat.
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: Jammer-Thread
Wieder Schluderei in Visual C++’ Code Generation:
switch(x) {
case 0:
foo(0);
case 1:
foo(1);
default:
foo(x);
}
Visual C++ rafft hier nicht, dass alle drei foo()-Aufrufe zu einem einzigen foo(x) vereinigt werden können. Man muss es entsprechend anpassen damit das passiert.
Es geht hier um die DefWindowProc() und für mich bedeutet das, dass ich 30, 40 Funktionen einen zusätzlichen Parameter übergeben muss, damit korrekt propagiert wird.
switch(x) {
case 0:
foo(0);
case 1:
foo(1);
default:
foo(x);
}
Visual C++ rafft hier nicht, dass alle drei foo()-Aufrufe zu einem einzigen foo(x) vereinigt werden können. Man muss es entsprechend anpassen damit das passiert.
Es geht hier um die DefWindowProc() und für mich bedeutet das, dass ich 30, 40 Funktionen einen zusätzlichen Parameter übergeben muss, damit korrekt propagiert wird.
- dot
- Establishment
- Beiträge: 1745
- Registriert: 06.03.2004, 18:10
- Echter Name: Michael Kenzel
- Kontaktdaten:
Re: Jammer-Thread
Also ich bin mir net sicher ob das dein Problem ist, aber ich hab bei meinem Browser Englisch als preferred Language eingestellt und komm immer auf die englische Seite. Ansonsten kannst du dir zumindest die englische MSDN als Search Provider einrichten... ;)Krishty hat geschrieben:Ich jeden Tag derweil zumindest Post die Feedback-Feld auf MSDN, in ficken Übersetzung maschinell auf Kreuz.
Wenn sie in zwei Jahren nur noch Englisch anzeigen spart mir das wahrscheinlich mehr Zeit als für den Rest meines Lebens die englischen Originale suchen zu müssen. Und ich kann meine wüsten Beschimpfungen da loswerden, wo sie auch jemand verdient hat.