X-Plane 12.4.4 · Beta 3
October 1, 2026
General
Fixed the broken installation for Steam users on macOS
Graphics Core Engine
Fixed numerous errors to improve stability
Graphics
Fixed trees behind the camera being drawn at full detail in the shadow pass, which cost GPU time for shadows the user couldn’t see
VR
Fixed lights appearing in a different spot in each eye in VR. This affected the built-in flashlight and plugin lights placed with xplm_CoordSpace_Camera (XPD-18465)
SDK
Breaking change: XPLMDrawCalls no longer applies a hidden window origin. Vertices and scissors are now plain panel coordinates under the current transform, like every other Panel Graphics primitive. Plugins must apply translate(left, top) and scale(1, -1) before drawing, the inverse of what their mouse handling already does. This also fixes retained ImGui drawings staying where the window was when they were recorded. XLua applies the transform itself in EndFrame, so XLua scripts need no changes. The SDK sample plugins have been updated
Panel Graphics and ImGui
Nested scissors now work: an ImGui draw call’s scissor combines with any clip already in force, such as an enclosing XPLMScissorSet, instead of replacing it
ImGui textures can now be created and destroyed at any time, including during a draw callback, and retained drawings can be recorded outside a draw callback
Fixed a crash when drawing a retained drawing and destroying it with XPLMDestroyRetainedDrawing in the same callback
Fixed ImGui windows ignoring all clicks after a click on empty space. ImGui windows now claim every click. This affected the SDK sample plugins and XLua ImGui windows, including avionics screens
Browser functions
Fixed a crash when a browser callback returned its result other than through XPLMReturnString, for example as a string literal or NULL. The error is now reported to the plugin’s error callback and Log.txt, and the JavaScript Promise resolves to null
Fixed valid results being rejected when a plugin reused a pointer from an earlier XPLMReturnString call. The result must now be returned during the current call
Invalid JSON from a browser function is now reported to the plugin instead of silently becoming null. Parsing is stricter: trailing content, comments and trailing commas are rejected, while bare strings, numbers and booleans still work. Very deeply nested JSON resolves to null rather than failing the Promise
Lua browser callbacks that raise an error now resolve to null instead of crashing. The error appears only in the Lua error log
Corrected the docs: browser callback results must go through XPLMReturnString and must not be NULL. Registering an AddBrowserFunction name a second time is rejected and reported; the old docs said it replaced the earlier callback, which it never did
Und die Übersetzung:
X-Plane 12.4.4 · Beta 3
1. Oktober 2026
Allgemeines
Fehlerhafte Installation für Steam-Nutzer unter macOS behoben
Grafik-Kern-Engine
Zahlreiche Fehler behoben, um die Stabilität zu verbessern
Grafik
Fehler behoben, bei dem Bäume hinter der Kamera im Schatten-Durchlauf (Shadow Pass) mit vollem Detailgrad gerendert wurden; dies verbrauchte GPU-Zeit für Schatten, die für den Benutzer nicht sichtbar waren
VR
Fehler behoben, bei dem Lichtquellen in VR für jedes Auge an unterschiedlichen Positionen erschienen. Dies betraf die integrierte Taschenlampe sowie Plugin-Lichtquellen, die mittels xplm_CoordSpace_Camera platziert wurden (XPD-18465)
SDK
Breaking Change (Änderung mit Auswirkung auf bestehenden Code): XPLMDrawCalls wendet keinen versteckten Fensterursprung mehr an. Vertices und Scissor-Bereiche (Beschneidungsbereiche) verwenden nun einfache Panel-Koordinaten basierend auf der aktuellen Transformation, genau wie jedes andere Panel-Grafik-Primitive. Plugins müssen vor dem Zeichnen translate(left, top) und scale(1, -1) anwenden – also die Umkehrung dessen, was ihre Mausverarbeitung bereits tut. Dies behebt auch das Problem, dass „Retained ImGui Drawings“ (dauerhaft gespeicherte Zeichnungen) an der Position verblieben, an der sich das Fenster zum Zeitpunkt ihrer Aufzeichnung befand. XLua wendet die Transformation selbst in EndFrame an, daher sind für XLua-Skripte keine Änderungen erforderlich. Die SDK-Beispiel-Plugins wurden aktualisiert
Panel-Grafik und ImGui
Verschachtelte Scissor-Bereiche funktionieren nun: Der Scissor-Bereich eines ImGui-Draw-Calls kombiniert sich mit einer bereits aktiven Beschneidung (z. B. einem umschließenden XPLMScissorSet), anstatt diese zu ersetzen
ImGui-Texturen können nun jederzeit erstellt und gelöscht werden, auch während eines Draw-Callbacks; zudem können „Retained Drawings“ auch außerhalb eines Draw-Callbacks aufgezeichnet werden
Absturz behoben, der auftrat, wenn ein „Retained Drawing“ gezeichnet und im selben Callback mittels XPLMDestroyRetainedDrawing gelöscht wurde
Fehler behoben, bei dem ImGui-Fenster nach einem Klick auf einen leeren Bereich keine weiteren Klicks mehr annahmen. ImGui-Fenster erfassen nun jeden Klick. Dies betraf SDK-Beispiel-Plugins und XLua-ImGui-Fenster, einschließlich Avionik-Bildschirmen
Browser-Funktionen
Absturz behoben, der auftrat, wenn ein Browser-Callback sein Ergebnis nicht über XPLMReturnString zurückgab, sondern beispielsweise als String-Literal oder NULL Der Fehler wird nun an den Error-Callback des Plugins sowie in die Log.txt gemeldet, und das JavaScript-Promise liefert null zurück.
Es wurde behoben, dass gültige Ergebnisse verworfen wurden, wenn ein Plugin einen Zeiger aus einem früheren XPLMReturnString-Aufruf wiederverwendete; das Ergebnis muss nun während des aktuellen Aufrufs zurückgegeben werden.
Ungültiges JSON aus einer Browser-Funktion wird nun an das Plugin gemeldet, anstatt stillschweigend zu null zu werden. Die Validierung ist strenger: Nachgestellte Inhalte, Kommentare und abschließende Kommas führen zur Ablehnung, während reine Strings, Zahlen und boolesche Werte weiterhin funktionieren. Sehr tief verschachteltes JSON liefert null zurück, anstatt das Promise fehlschlagen zu lassen.
Lua-Browser-Callbacks, die einen Fehler auslösen, liefern nun null zurück, anstatt zum Absturz zu führen; der Fehler erscheint nur im Lua-Fehlerprotokoll.
Korrektur der Dokumentation: Ergebnisse von Browser-Callbacks müssen über XPLMReturnString übermittelt werden und dürfen nicht NULL sein. Die erneute Registrierung eines Namens für AddBrowserFunction wird abgelehnt und gemeldet; die ursprüngliche Dokumentation besagte fälschlicherweise, dass der frühere Callback ersetzt würde.
By
Flightrookie ·