Ich habe nur Stereo, aber ich habe das mit Kopfhörern getestet, so daß ich mir ziemlich sicher bin. Dieser seltsame Fehler ist mir generell bei DirectSound aufgefallen und tritt auch bei den Beispielanwendungen im SDK auf. Allerdings habe ich ihn bislang noch in keinem Spiel bemerkt. Ich habe auch nur einen OnBord Soundchip, also nichts besonderes, aber das Board ist von ASUS.
DSBCAPS_LOCSOFTWARE : The buffer is in software memory and uses software mixing
Ich denke da stimmt tatsächlich was an Konfiguration und/oder Treibern nicht (Vermutung: wenn Hardwaremixing eingestellt ist, geht der Soundchip immer von einer 4-Lautsprecherkonfiguration aus - könnte man eventuell durch Umstöpseln der Lautsprecher (Kopfhörer im laufenden Betrieb umzustecken, empfehle ich lieber nicht) herausfinden).
Dein Vorschlag wird wahrscheinlich in den Soundmanager als Option eingebaut (irgendwann gibt es wahrscheinlich ein skinfähiges Konfigurationsmenü, das man aus dem laufenden Programm heraus aufrufen kann)
Vielleicht liegt es auch an der Rechnerkonfiguration, aber bei Spielen scheint wie gesagt alles in Ordnung zu sein, so daß ich das auch ein wenig seltsam finde. Zumal es ja auch bei den SDK Demos auftritt. Ich habe nur einen Stereoausgang am Mainboard und die Lautsprechenkonfiguration in der Systemsteuerung ist auch auf Stereo gestellt. Ein neuerer Treiber ließ sich auch nicht finden.
So, ich habe jetzt mal die Änderungen eingebaut, und wäre froh, wenn sie getestet werden könnten.
@SoS: kannst du bitte die Sound1 Demo laden und Lautstärkeverminderung und <ALT><F4> überprüfen?
@Lars: kanst du überprüfen, ob der Sound jetzt auch bei dir funktioniert - und wenn nicht, ob du mit dem Kommando SoundChangeAudioProperties(Use3D, UseEnviron, UseEAX: boolean) eine Kombination findest, bei dem es klappt?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
@Sound : Funzt jetzt einwandfrei. Der Sound fällt nicht mehr so stark ab, und auch die Positionierung funzt einwandfrei. Wenn ich mich also direkt vor die Soundquelle stelle und mich im Kreis drehe, höre ich schön wie die Musik korrekt durch die Lautsprecher wander.
@ALT+F4 : Das geht jetzt garnicht mehr! Ein Druck auf ALT+F4 im Vollbildmodus bewirkt jetzt irgendwie nichts mehr. Escape geht allerdings wie gehabt.
Was ich noch unschön finde ist die Sache mit FormSetBounds, bei der ich zuerst gedacht hatte das ChangeDisplaySettings nicht gehen würde, da das Fenster immer auf 640x480 blieb, bis ich dort die Parameter auch noch geändert habe. Evtl. solltest du bei ChangeDisplaySettings noch nen Boolean für Vollbild angeben lassen, der dann FormSetBounds ausser Kraft setzt.
Der Sound ist bei mir jetzt auch richtig im Raum zu Hören, aber der Fehler tritt bei allen 8 Kombinationen immer noch auf, wenn sich die Quelle hinter einem befindet. Daher wird es vermutlich eine Ausnahme bei der speziellen HW sein, die vernachlässigt werden kann. Ich habe das CMI8738/C3DX PCI Audio Device auf dem Mainboard integriert. Keine Ahnung wie weit das verbreitet ist.
@Alt-F4
Das ist korrekt - das Formular lässt sich jetzt nicht mehr schließen . Wenn dieses Verhalten nicht gewünscht ist, kann einfach das OnFormCloseQuery Event überschrieben werden.
@ChangeDisplaySettings
Du hast recht - ehrlich gesagt kann ich mir kein Szenario ausmalen, in dem ChangeDisplaySettings aufgerufen wird, und das Formular nicht auf Vollbild gebracht und Rahmen und Menüleiste entfernt werden, weswegen ChangeDisplaySettings diese Änderungen in Zukunft automatisch durchführen wird (wenn's jemand aus irgendeinem Grund nicht so haben will, können FormSetBounds und FormSetBorderStyle ja nachher separat aufgerufen werden).
Den Mauszeiger werde ich standardmäßig eingeschaltet lassen, er kann aber mit FormSetCursor(crNone) jederzeit ausgeschaltet oder auf einen anderen Cursor gesetzt werden.
@Lars
Hmm, das Verhalten sollte ja eigentlich nur bei Stereokonfigurationen auftreten, ich werde einfach die Routine
SoundSetStereoCompatibility(Enable: boolean)
einbauen, die einfach den den z-Wert von Soundpositionen in eine absolute Zahl umwandelt - auf einem Stereosystem sollte das dann keinen Unterschied machen.
Habe die Bounce Eigenschaft mal auf 2 gestellt und der Ball ist das wie erwartet immer höher gesprungen. Dann habe ich mit Sphere.SetAsCamera; den Ball mal als Kamera genommen und die Winkel mit SetCoordAngle geändert, so daß man nun als Ball herungehüpt ist. Interessant.
@Lars: wenn ich dich nochmal bitten dürfte...
Entweder hörst du jetzt gar nichts mehr (dann habe ich das falsche Vorzeichen gewählt), oder es müsste funktionieren.
ChangeDisplaySettings ist auch schon angepasst
@Bounce
im Inspektor kann man sich die Member von TPhysSurface ansehen, wobei mode aus Flags zusammengesetzt sein darf, die in der Konstantensektion mit dContact anfangen. Die anderen Parameter werden je nach Ausprägung von mode genutzt oder nicht (wird in der ODE Dokumentation beschrieben).
priority verwende ich intern, um die Oberflächeneigenschaften von Körpern zu auszuwählen, wenn diese nicht in OnPhysContact überschrieben wurden.
GetMaxPositionDifference liefert den maximalen Unterschied zwischen zwei beliebigen Positionen eines Körpers seit dem letzten Aufruf von ResetPositionDifference zurück, und macht es auf diese Weise einfach, inaktive Körper nicht zu berücksichtigen (was viel besser funktioniert, als DisableStillBodies, das in Delphi ODE implementiert ist)
Das liegt daran, dass die "Kompatibilitätsoption" vorne und hinten genau gleich behandelt. Ich verwende DirectMusic und orientiere mich dabei an den Beispielen im DirectX 9 SDK.
Es gibt die Möglichkeit bei der Erstellung eines DirectMusic Streams einen Soundbuffer anzugeben, was ich eventuell auch machen werde, da man hier mehr Konfigurationsmöglichkeiten hat.
Derweil bin ich aber zufrieden, wenn ich BGP auf allen Systemen zufriedenstellend zum Laufen bringe
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Das Orion-Demo sieht ja wirklich richtig gut aus, und macht auch so schon Spaß den Kugeln bei ihrem physikalisch korrekten Reaktionen zuzusehen. Wenn du da ein komplettes Spiel (SpaceInvaders wäre nett, aber wie wärs denn mit nem Echtzeit-Splitscreen TankWars?) draus machst und noch zeigst wie einfach das in BGP gemacht werden kann, sollte das doch die beste Werbung für dein Projekt sein.
Bei mir ist die Detailltexture nicht gemipmapt.
Ich habe mal das Tal mit 1000 Kugeln gefüllt, allerdings fingen ab einer bestimmten Anzahl die Kugeln an durch die Landschaft durchzufallen.
Dafür geht der Sound jetzt
@SoS
Eigentlich eine gute Idee - wenn ich den Untergrund etwas größer mache, und die "Kanonen" bei jedem Start zufällig positioniere, könnte das ganz witzig werde - das wäre dann in der logischen Weiterführung auch ein nettes Showcase für eine noch zu erstellende Netzwerkunterstützung.
@Lars
Für MipMaps genügt es irgendwo vor dem Start der Hauptschleife folgende Kommandos einzufügen:
wobei die Namen von geladenen Objekten und Texturen auch direkt über das Kontextmenü eingefügt werden können.
Schaut übrigens viel besser aus, und wird in der nächsten "Orion" Version geändert.
Ich wollte absichtlich keine Begrenzung der Kugelanzahl einbauen (oder sie nach einer gewissen Zeit verschwinden lassen), um die Möglichkeit zu haben, die Stabilität des Programms auch unter schwierigen Bedingungen (die in "reellen" Anwendungen so nie auftreten sollten) zu testen.
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.