Seite 108 von 254

Re: Jammer-Thread

Verfasst: 14.04.2013, 14:26
von Krishty
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.

Re: Jammer-Thread

Verfasst: 14.04.2013, 17:56
von Krishty

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);

Re: Jammer-Thread

Verfasst: 14.04.2013, 18:05
von dot

Re: Jammer-Thread

Verfasst: 14.04.2013, 22:04
von Krishty
    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);

Re: Jammer-Thread

Verfasst: 15.04.2013, 01:05
von Krishty
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

Verfasst: 15.04.2013, 11:17
von Schrompf
Aber nur ein halbes 65536stel Problem, oder? :-)

Re: Jammer-Thread

Verfasst: 15.04.2013, 12:22
von dot
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.
wow, wer hat sich das denn bitte ausgedacht!?

Re: Jammer-Thread

Verfasst: 15.04.2013, 14:07
von Niki
dot hat geschrieben:wow, wer hat sich das denn bitte ausgedacht!?
Meine erste Vermutung wäre von Neumann, oder tausend Mathematiker vor ihm, weil ein Bit halt keine ungerade Anzahl von Zuständen hat.

Re: Jammer-Thread

Verfasst: 15.04.2013, 14:11
von CodingCat
Niki hat geschrieben:
dot hat geschrieben:wow, wer hat sich das denn bitte ausgedacht!?
Meine erste Vermutung wäre von Neumann, oder tausend Mathematiker vor ihm, weil ein Bit halt keine ungerade Anzahl von Zuständen hat.
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. ;)

Re: Jammer-Thread

Verfasst: 15.04.2013, 14:13
von dot
Ich meinte natürlich, wer auf die Idee gekommen ist, die Bits so zu verteilen, dass es keinen Wert für die Mittelstellung gibt... ;)

Re: Jammer-Thread

Verfasst: 15.04.2013, 14:14
von Niki
CodingCat hat geschrieben:Du speicherst in einem bool ja auch keine 256 Wahrheitswerte, nur weil es meist ein ganzes Byte belegt. ;)
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.

Re: Jammer-Thread

Verfasst: 15.04.2013, 14:16
von CodingCat
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.
Bitte? :D Habe ich von 1-Bit-Zahlen gesprochen? Siehe dot. ;)

Re: Jammer-Thread

Verfasst: 15.04.2013, 14:18
von Niki
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.

Re: Jammer-Thread

Verfasst: 15.04.2013, 14:19
von CodingCat
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.
Nochmal: Du legst deinen Wertebereich stets selbst fest, die Anzahl möglicher Werte ist dabei immer nur eine Obergrenze.

Re: Jammer-Thread

Verfasst: 15.04.2013, 14:22
von Niki
Klar, du kannst natürlich einen Wertebereich als kleiner definieren. Da würde ich dir auch nicht widersprechen.

Re: Jammer-Thread

Verfasst: 15.04.2013, 14:22
von 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.
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. ;)

Re: Jammer-Thread

Verfasst: 15.04.2013, 14:24
von CodingCat
Niki hat geschrieben:Klar, du kannst natürlich einen Wertebereich als kleiner definieren. Da würde ich dir auch nicht widersprechen.
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.

Re: Jammer-Thread

Verfasst: 15.04.2013, 14:27
von Niki
Oh Mann, ich ziehe ja schon von dannen!

Nur Spaß :) Aber von dannen ziehe ich trotzdem, weil ich einkaufen muss.

Re: Jammer-Thread

Verfasst: 15.04.2013, 18:17
von Krishty
CodingCat hat geschrieben:
Niki hat geschrieben:
dot hat geschrieben:wow, wer hat sich das denn bitte ausgedacht!?
Meine erste Vermutung wäre von Neumann, oder tausend Mathematiker vor ihm, weil ein Bit halt keine ungerade Anzahl von Zuständen hat.
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. ;)
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.
Schrompf hat geschrieben:Aber nur ein halbes 65536stel Problem, oder? :-)
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.

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.

Re: Jammer-Thread

Verfasst: 16.04.2013, 13:12
von Schrompf
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.

Re: Jammer-Thread

Verfasst: 18.04.2013, 07:33
von antisteo
Warum führt der erste Google-Treffer immer zu einem Forum, in dem gefragt wird "kannst du das nicht Googeln?"

Re: Jammer-Thread

Verfasst: 18.04.2013, 13:43
von Niki
antisteo hat geschrieben:Warum führt der erste Google-Treffer immer zu einem Forum, in dem gefragt wird "kannst du das nicht Googeln?"
Um dich zu zwingen auf einem Forum posten, damit man fragen kann ob du das nicht googeln kannst.

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).

Re: Jammer-Thread

Verfasst: 18.04.2013, 18:14
von kaiserludi
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...

Re: Jammer-Thread

Verfasst: 20.04.2013, 17:00
von Krishty
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.

Re: Jammer-Thread

Verfasst: 20.04.2013, 20:45
von antisteo
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.

Re: Jammer-Thread

Verfasst: 21.04.2013, 16:02
von eXile
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.

Re: Jammer-Thread

Verfasst: 21.04.2013, 16:44
von klickverbot
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.
Einer der Unicode-Normalisierungsalgorithmen. ;)

Re: Jammer-Thread

Verfasst: 22.04.2013, 19:59
von Krishty
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.

Re: Jammer-Thread

Verfasst: 22.04.2013, 20:59
von Krishty
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.

Re: Jammer-Thread

Verfasst: 22.04.2013, 21:11
von dot
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.
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... ;)