Skip to content
XTextureExtractor for X-Plane 11 extracts the textures for the HSI, ND, EICAS, and CDU displays, and renders them in separate windows that you can place anywhere within X-Plane, on external unused monitors, and on separate computers via a network protocol.
Pascal C++ C Kotlin Java TeX Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Plugin-XTextureExtractor-x64-Release Beta release of version 2.0, which includes an automatic texture find… Aug 5, 2019
SDK Initial import of plugins Feb 11, 2018
Screenshots Compiled 64-bit Windows plugin for XTextureExtractor, and include scr… Feb 11, 2018
Uploads Beta release of version 2.0, which includes an automatic texture find… Aug 5, 2019
XTextureExtractor-Data Added IXEG B733 configuration file from MajorChris@forums.x-plane.org Aug 5, 2019
app Allow unprocessed DPAD events to continue being processed elsewhere, … Nov 14, 2018
artwork Implement round and adaptive launcher icons, and center the HSI image Mar 6, 2018
gradle/wrapper Initial implementation of an Android app that is forked from the XPla… Feb 20, 2018
java-client Fix up error handling bugs in the run-xte.bat script Jun 4, 2019
lodepng Remove parts of lodepng code that I do not need Feb 20, 2018
.gitignore Initial implementation of an Android app that is forked from the XPla… Feb 20, 2018
COPYING Initial import of plugins Feb 11, 2018
COPYRIGHT Initial implementation of an Android app that is forked from the XPla… Feb 20, 2018
LICENSE Initial import of plugins Feb 11, 2018
README Add more documentation about customizing the run-xte scripts, and mor… Jun 4, 2019
XTextureExtractor.cpp Add internal commands to support moving through the textures for debu… Aug 5, 2019
XTextureExtractor.h Change logging label to include v2 since this includes the new automa… Aug 5, 2019
XTextureExtractor.sln Initial import of plugins Feb 11, 2018
XTextureExtractor.vcxproj Implement a single TCP listener on a thread that streams out compress… Feb 20, 2018
XTextureExtractorNetwork.cpp Set SO_REUSEADDR on the listen socket so that it won't fail if X-Plan… Oct 15, 2018
build.gradle
gradle.properties Initial implementation of an Android app that is forked from the XPla… Feb 20, 2018
gradlew Initial implementation of an Android app that is forked from the XPla… Feb 20, 2018
gradlew.bat Initial implementation of an Android app that is forked from the XPla… Feb 20, 2018
make-release.sh New archive with XTextureExtractor v0.6, with Java client for Linux, … Feb 24, 2018
settings.gradle Initial implementation of an Android app that is forked from the XPla… Feb 20, 2018
texture-bell429.png Add support for the Bell 429 helicopter Jun 17, 2018
texture-crj200.png Add support for the CRJ-200 Nov 26, 2018
texture-ff767.jpg Initial import of plugins Feb 11, 2018
texture-ff777.jpg Add support for all the Flight Factor 777 variants Nov 14, 2018
texture-ffA320.jpg Texture image from the Flight Factor A320 with matching configuration… Feb 20, 2018
texture-lancair-legacy.png Add support for the Laminar 747 and the Lancair Legacy aircraft Jun 7, 2018
texture-mg787.png Update support for Magknight 787 Aviator edition, which changes to 4K… Jul 1, 2019
texture-rmd80.jpg Add support for the Rotate MD-80 Nov 14, 2018
texture-tu154.jpg Implement configuration files for the Felis Tu-154 Feb 22, 2018
texture-typhoon.jpg Added support for the Dmax3D Eurofighter Typhoon Aug 5, 2019
texture-xp737.jpg Initial import of plugins Feb 11, 2018
texture-xp747.png Add support for the Laminar 747 and the Lancair Legacy aircraft Jun 7, 2018
texture-zb738.jpg Add support for the Zibo 737 v3.29 tablet display Aug 21, 2018
texture_ssg748.png Add support for the SSG 747-8 aircraft Jul 30, 2018
update-license.sh Remove parts of lodepng code that I do not need Feb 20, 2018

README

// ---------------------------------------------------------------------
//
// XTextureExtractor
//
// Copyright (C) 2018 Wayne Piekarski
// wayne@tinmith.net http://tinmith.net/wayne
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
//
// ---------------------------------------------------------------------

XTextureExtractor extracts the textures for the HSI, ND, EICAS, and CDU displays, and renders them in separate windows that you can place anywhere within X-Plane, on external unused monitors, and on separate computers via a network protocol. Rendering the textures within X-Plane is basically free, but using the network protocol requires a read from the GPU which will reduce the frame rate.

The Android app allows you to view 2 panels on multiple phones or tablets, in either landscape or portait mode, and you can cycle through the available panels by tapping on them. Each device will save the configuration between sessions. The Android app can be downloaded from https://play.google.com/store/apps/details?id=net.waynepiekarski.xtextureextractor&hl=en and works on any device back to Android 4.0 (API 14).

There is also a java-client included in the download archive, which can run on most Windows, Linux, OSX, and Raspberry Pi hardware. It requires the Java JDK with the javac compiler and java runtime available in your system PATH. You need to then use the run-xte.bat (Windows) or run-xte.sh (Linux/OSX/RPi3) to start up the display client. You need to call this script with the IP address of your X-Plane machine, so that it can establish the network connection. You can do this by either editing the script and putting the IP address in, or calling the script with arguments. There are a number of command-line options such as --geometry=XxYxWxH that allow you to hard code the placement of each window, and --window# where you select the window you want to render.

For the network protocol, it uses TCP port 52500. You will need to ensure that your firewall and virus scanner do not block this port so that the remote clients can connect.

Most X-Plane 11 aircraft only allow you to view these displays within the virtual cockpit. These displays can also be quite small and hard to read. However, if you have a home cockpit set up with multiple monitors, it would be ideal to see each of these displays shown full screen and without having to move the view around to see it clearly. Some aircraft support a pop-up CDU, but rarely any of the other displays. There are external apps that can provide some of these displays, but they reimplement everything from scratch and will never be an exact match for your aircraft.

XTextureExtractor analyzes all the OpenGL textures and works out where these displays are rendered to. This same texture is then rendered into separate windows that you can move around and place wherever you want. They can be rendered as windows within X-Plane, or popped out and moved around within the OS itself. You can drag popped-out windows to external monitors and arrange them however you like, and these configurations can be saved.

X-Plane 11 doesn't natively support this functionality via the SDK, so the plugin uses OpenGL calls to try and guess the correct texture id. The coordinates of all the displays are hard coded for each supported aircraft. It has only been tested with an NVidia GTX 1080 and Windows 10, and the texture finding algorithm may not work on other video cards. You will need to press the << button to scan through the texture list to find the correct one, this is not automatic.

The plugin requires the cockpit to be rendered, so only works with internal and not external views. If you need an external view, start from within a cockpit view, and move the camera outside the aircraft. This will cause X-Plane to render the cockpit panels, and allow the plugin to work.

Almost every aircraft in X-Plane with digital displays (not steam gauges) is supported, such as: the standard X-Plane 737 and 747, the Zibo 738 and Ultimate 739, Flight Factor 757, 767, and 777, Felis Tu-154, SSG 748, Magknight 787, CRJ-200, and many more! It is also easy to add a new aircraft by creating a new .tex file matching the name of the aircraft .acf file, and then changing the coordinates. The only aircraft which requires special handling is the Flight Factor A320, since it uses more than one texture, but otherwise every aircraft tested works when a config file is generated. The complete list of supported aircraft is here: https://github.com/waynepiekarski/XTextureExtractor/tree/master/XTextureExtractor-Data

When running, the plugin presents a number of buttons to click on:

- Pop-Out/Pop-In: switch between window within X-Plane or native OS window
- GL: shows the texture id and aircraft name. Click this to rescan for the texture again.
- <<: Continue scanning for texture, use this if the default scan doesn't work.
- Ld: Load the window placement config file.
- Sv: Save the window placement config file, digit after acknowledges that the save happened correctly.
- Clr: Delete the window placement config file.
- Dbg: Debug to the console and Log.txt texture information, and save the texture to disk.

You should extract the ZIP file and copy the Plugin-XTextureExtractor-x64-Release directory into your X-Plane 11\Resources\plugins directory.

XTextureExtractor is open source, licensed under the GNU Public License v3, and available from https://github.com/waynepiekarski/XTextureExtractor

This plugin is very experimental and may have bugs. I look forward to your feedback on this plugin, and hope you all find it useful.
You can’t perform that action at this time.