## Aktivieren Sie JavaScript, um die Website anzuzeigen.

# FALCON/EAGLE-Benutzerhandbuch 4.62

- Hilfe vergrößern
- Text größer | Text kleiner
- Seiten-Header zu
- Aufklapptexte öffnen
- Topic drucken
- E-Mail-Feedback senden
- Topic-URL kopieren

is_DirectRenderer | Blättern Zurück Top Vor Mehr

Syntax

INT is_DirectRenderer (HIDS hCam, UINT nMode, void* pParam, UINT nSize)

Beschreibung:

is_DirectRenderer() fasst erweiterte Darstellungsfunktionen zusammen und bietet die Möglichkeit, Overlay-Daten flackerfrei ins Livebild einzublenden. Unter Windows werden Grafikkarten-Funktionen der Direct3D-Bibliothek unterstützt.

•Um die Direct3D-Funktionen nutzen zu können, muss eine entsprechende Version der Microsoft DirectX 9 Runtime auf dem System installiert sein. Installationspakete sind auf den Microsoft Webseiten verfügbar (Stichwort: "DirectX End-User runtime").

•Die Grafikkarte muss mindestens eine Texturgröße (Overlay-Größe) von 768x576 Pixel bei PAL bzw. 640x480 Pixel bei NTSC unterstützen. Die maximale Texturgröße kann über den Parameter DR_GET_MAX_OVERLAY_SIZE abgefragt werden.

•Aktiviert wird die Direct3D Darstellung wie folgt:
is_SetDisplayMode(h, IS_SET_DM_DIRECT3D)

•Für die Darstellung im Direct3D-Modus können verschiedene Farbmodi verwendet werden. Die höchste Leistung wird jedoch erzielt, wenn der Farbmodus des FALCON identisch zum Farbmodus des Windows Desktops ist. In Verbindung mit modernen leistungsfähigen Grafikkarten kann als Grab-Farbformat meist YUV4:2:2 verwendet werden. Dieses Format ist ein 16-Bit pro Pixel Format und weist eine reduzierte PCI/PCIe Busbelastung gegenüber z.B. dem RGB32 Format auf.

•Es kommt vor, dass interne Direct3D Buffer ungültig werden, wenn der Desktop nach bestimmten Aktionen reaktiviert wird (z.B. ein Bildschirmschoner wird durch eine Eingabe inaktiv; nach einem Strg-Alt-Entf). In diesem Fall sind die gezeichneten Overlay-Daten intern verloren. Die Applikation wird jedoch über eine Message (Overlay-Lost-Message) aus dem FALCON Treiber über diese Situation benachrichtigt, so dass diese die Overlay-Daten neu zeichnen kann (Message-Beispiel siehe unten). Diese Message wird sowohl an das Anzeigefenster, als auch an das Elternfenster des Anzeigefensters gesendet. Damit kann die Nachricht auch empfangen werden, wenn das Control, das zur Anzeige verwendet wird, selbst keine Nachrichten verarbeitet. Ausgewertet muss die Nachricht jedoch nur in einem der beiden Fensterhandler.

•Unter Direct3D kann ein stufenloses Skalieren der Darstellung genutzt werden (siehe DR_ENABLE_SCALING). Allerdings können in Verbindung mit der Interlaced-Aufnahme der Bilddaten beim Herunterskalieren subjektiv schlechtere Skalierungsergebnisse auftreten, im Vergleich zur Bilderfassung direkt in der benötigten skalierten Bildgröße.

•Während der Direct3D Modus aktiv ist sind einige FALCON SDK Funktionen nicht nutzbar (Liste siehe unten).

Übergabeparameter

hf | Handle auf Frame Grabber
nMode | Funktionsmodus der Direct3D-Funktion
DR_GET_OVERLAY_DC | Gibt das Device-Context-Handle (DC) auf den Overlay-Bereich der Grafikkarte zurück.
| Mehr Informationen
Der Modus DR_GET_OVERLAY_DC gibt im Direct3D-Modus das Device Context (DC)-Handle des Overlay-Bereichs zurück. Mit diesem Handle kann über die Windows-GDI Funktionen auf das Overlay zugegriffen werden. Es stehen somit alle Grafikbefehle (z. B. Line, Circle, Rectangle, TextOut) von Windows zur Verfügung. Damit die gezeichneten Elemente ins Overlay übernommen werden, muss das DC-Handle über DR_RELEASE_OVERLAY_DC freigegeben werden.
DR_RELEASE_OVERLAY_DC | Gibt das Device-Context-Handle (DC) wieder frei.
| Mehr Informationen
Mit DR_RELEASE_OVERLAY_DC wird das DC-Handle wieder freigegeben und die Overlay-Daten aktualisiert.
DR_GET_MAX_OVERLAY_SIZE | Gibt die Breite x und Höhe y des maximal von der Grafikkarte unterstützen Overlay-Bereichs zurück.
DR_SET_OVERLAY_SIZE | Setzt die Größe des Overlay-Bereichs (Voreinstellung: aktuelle Größe des Kamerabilds.
DR_SET_OVERLAY_POSITION | Setzt die Position des Overlay-Bereichs.
DR_GET_OVERLAY_KEY_COLOR | Gibt die RGB-Werte der aktuellen Key-Farbe zurück (Voreinstellung: Schwarz)
DR_SET_OVERLAY_KEY_COLOR | Setzt die RGB-Werte der Key-Farbe.
| Mehr Informationen
Die Key-Farbe bestimmt, an welchen Stellen des Overlay-Bereichs das Kamerabild sichtbar ist. Wenn das Overlay z.B. vollständig mit der Key-Farbe gefüllt wird, ist das volle Kamerabild sichtbar. Wird ein Teil des Overlays mit einer anderen Farbe gefüllt, wird an diesen Stellen das Kamerabild vom Overlay verdeckt. Im halbtransparenten Modus hat die Key-Farbe keine Auswirkung!
DR_SHOW_OVERLAY | Aktiviert die Overlay-Darstellung über dem aktuellen Kamerabild.
DR_HIDE_OVERLAY | Deaktiviert die Overlay-Darstellung.
DR_ENABLE_SCALING | Aktiviert die Echtzeitskalierung des Bildes auf die Größe des Anzeigefensters.
DR_DISABLE_SCALING | Deaktiviert die Echtzeitskalierung.
DR_ENABLE_SEMI_TRANSPARENT_OVERLAY | Aktiviert eine halbtransparente Darstellung des Overlay-Bereichs.
| Mehr Informationen
Bei der halbtransparenten Darstellung werden die Werte von Kamerabild und Overlay-Daten für jeden Bildpunkt addiert. Da Schwarz den Wert 0 hat, ist bei schwarzem Overlay das Kamerabild vollständig sichtbar, bei Weiß hingegen nur das Overlay. Bei allen anderen Farben ist eine Überlagerung von Kamerabild und Overlay sichtbar. Im halbtransparenten Modus hat die Key-Farbe keine Auswirkung!
DR_DISABLE_SEMI_TRANSPARENT_OVERLAY | Deaktiviert die halbtransparente Darstellung des Overlay-Bereichs.
DR_SET_VSYNC_AUTO | Aktiviert die Synchronisierung der Bilddarstellung mit dem Bildaufbau des Monitors. Das Bild wird mit dem nächsten VSYNC-Signal des Monitors dargestellt.
DR_SET_VSYNC_OFF | Deaktiviert die Synchronisierung der Bilddarstellung. Das Bild wird sofort dargestellt.
DR_SET_USER_SYNC | Aktiviert die Synchronisierung der Bilddarstellung auf eine vom Anwender vorgegebene Bildzeile.
| Mehr Informationen
Bei der Darstellung kann es vorkommen, dass die Auto-VSYNC-Funktion den Bildaufbau nicht optimal synchronisiert. In diesem Fall kann durch manuelles Einstellen einer geeigneten Position für die Synchronisierung eine flackerfreie Bilddarstellung erreicht werden. Diese Position muss in Abhängigkeit der Grafikkarte ermittelt werden.
DR_GET_USER_SYNC_POSITION_RANGE | Gibt die minimale und maximale mögliche Zeilenposition für DR_SET_USER_SYNC zurück.
DR_LOAD_OVERLAY_FROM_FILE | Lädt ein Bitmap-Bild (*.BMP-Datei) in den Overlay-Bereich. Wenn das Bitmap-Bild größer ist als der Overlay-Bereich, wird das Bitmap-Bild beschnitten.
DR_CLEAR_OVERLAY | Löscht die Daten des Overlay-Bereichs durch Füllen mit der Farbe Schwarz.
DR_STEAL_NEXT_FRAME | Kopiert das nächste Bild in den aktiven Benutzerspeicher, der mit is_SetImageMem()gesetzt wurde (Steal-Funktion).
| Mehr Informationen
Über pParam wird angegeben, wann die Funktion zurückkehrt: •IS_WAIT: Funktion wartet bis Bild im Speicher ist. •IS_DONT_WAIT: Funktion kehrt sofort zurück
DR_SET_STEAL_FORMAT | Setzt das Farbformat für die Steal-Funktion identisch zu is_PrepareStealVideo()
| Mehr Informationen
Eine Übersicht über die möglichen Farbformate kann der Funktionsbeschreibung von is_SetColorMode() entnommen werden. Die Voreinstellung ist IS_CM_RGB32. Ein Wert von 0xFFFFFFFF (-1) deaktiviert den Steal Modus identisch zu is_StealVideo(h, IS_EXIT_STEAL_VIDEO).
DR_GET_STEAL_FORMAT | Gibt das eingestellte Farbformat für die Steal-Funktion zurück.
DR_SET_HWND | Setzt ein neues Fenster-Handle für die Bildausgabe unter Direct3D. Dadurch muss jedoch FALCON-intern das Direct3D Interface neu initialisiert werden, so dass alle Overlay-Daten gelöscht werden und von der Applikation neu gezeichnet werden müssen. Die Applikation wird hierüber jedoch durch die Overlay-Lost-Message informiert (siehe auch Beschreibung oben).
DR_CHECK_COMPATIBILITY | Gibt zurück, ob die Grafikkarte die benötigten Direct3D Funktionen unterstützt.
DR_CHECK_COLOR_MODE_SUPPORT | Überprüft, ob die angegebenen Farbmodi für die Darstellung möglich sind. Es muss der FALCON Farbmodus als Quellmodus und der VGA-Farbmodus als Zielmodus angegeben werden.
| Mehr Informationen
Nicht alle Grafikkarten unterstützen sämtliche möglichen Kombinationen der Farbraumumrechnung vom Quell- in den Zielmodus. Die Verfügbarkeit der Modi ist neben den verfügbaren Hardwareeigenschaften der Grafikkarte auch vom aktuell verwendeten Farbmodus des Windows Desktops abhängig. Der aktuelle Farbmodus des Windows Desktops kann über die Funktion is_GetColorDepth() erfragt werden. Weiterhin sind einige Modi oft mit erhöhter CPU Belastung verbunden, so z.B. oft die Konversion von YUV4:2:2 nach RGB16 bzw. RGB32.
pParam | Zeiger vom Typ void auf ein Datenobjekt oder ein Array von Objekten (abhängig vom mit nMode ausgewählten Modus).
nSize | Größe des Datenobjekts bzw. des Arrays in Byte

Rückgabewerte

In Verbindung mit DR_CHECK_COMPATIBILITY | IS_DR_DEVICE_CAPS_INSUFFICIENT Die Grafikhardware bietet keine vollständige Unterstützung für die benötigten Direct3D-Funktionen
In Verbindung mit DR_CHECK_COLOR_MODE_SUPPORT | IS_DR_DEVICE_CAPS_INSUFFICIENT Die Grafikhardware kann die angegebene Farbraumumrechnung nicht in Hardware durchführen.
IS_SUCCESS | Allgemeine Erfolgsmeldung
IS_NO_SUCCESS | Allgemeine Fehlermeldung
IS_DR_LIBRARY_NOT_FOUND | Die DirectRenderer-Bibliothek konnte nicht gefunden werden.
IS_DR_DEVICE_OUT_OF_MEMORY | Nicht genügend Grafikspeicher verfügbar.
IS_DR_CANNOT_CREATE_SURFACE | Bild- oder Overlay-Surface konnten nicht angelegt werden.
IS_DR_CANNOT_CREATE_VERTEX_BUFFER | Der Vertex-Puffer konnte nicht angelegt werden.
IS_DR_CANNOT_CREATE_TEXTURE | Die Textur konnte nicht angelegt werden.
IS_DR_CANNOT_LOCK_OVERLAY_SURFACE | Das Overlay-Surface konnte nicht gesperrt werden.
IS_DR_CANNOT_UNLOCK_OVERLAY_SURFACE | Das Overlay-Surface konnte nicht entsperrt werden.
IS_DR_CANNOT_GET_OVERLAY_DC | Das Device-Context-Handle für das Overlay konnte nicht freigegeben werden.
IS_DR_CANNOT_RELEASE_OVERLAY_DC | Das Overlay-Surface konnte nicht freigegeben werden.
IS_DR_DEVICE_CAPS_INSUFFICIENT | Die Funktion wird von der Grafikhardware nicht unterstützt.
IS_DR_SURFACE_LOST | Das Overlay-Surface wurde verloren und musste neu erzeugt werden.
IS_DR_CANNOT_LOCK_IMAGE_SURFACE | Das Bild-Surface konnte nicht gesperrt werden.
IS_DR_CANNOT_UNLOCK_IMAGE_SURFACE | Das Bild-Surface konnte nicht entsperrt werden.

Während des Direct3D Modus nicht nutzbare Funktionen

•is_SetVideoMode()

•is_SetColorMode()

•is_SetImageSize()

•is_UpdateDisplay()

•is_EnableDDOverlay()

•is_DisableDDOverlay()

•is_ScaleDDOverlay()

•is_ShowDDOverlay()

•is_HideDDOverlay()

•is_OvlSurfaceOffWhileMove()

•is_GetDC()

•is_ReleaseDC

•is_SetDDUpdateTime

•is_LockDDOverlayMem

•is_UnlockDDOverlayMem

•is_LockDDMem

•is_UnlockDDMem

•is_GetDDOvlSurface

•is_SetKeyColor

•is_SetKeyOffset

•is_AddToSequence

Beispiele

//------------------------------------

// DC-Handle

//------------------------------------

// DC-Handle auf das Overlay holen

HDC hDC;

is_DirectRenderer (h, DR_GET_OVERLAY_DC, (void*)&hDC, sizeof (hDC));

// DC-Handle freigeben

is_DirectRenderer (h, DR_RELEASE_OVERLAY_DC, NULL, NULL);

//------------------------------------

// Overlay-Größe

//------------------------------------

//Maximale Größe des Overlay-Bereichs abfragen

UINT OverlaySize[2];

is_DirectRenderer (h, DR_GET_MAX_OVERLAY_SIZE,

(void*)OverlaySize, sizeof(OverlaySize));

INT nWidth = OverlaySize[0];

INT nHeight = OverlaySize[1];

//Größe des Overlay-Bereichs setzen

UINT Size[2];

Size[0] = 100;

Size[1] = 120;

is_DirectRenderer (h, DR_SET_OVERLAY_SIZE, (void*)Size, sizeof (Size));

//Position des Overlay-Bereichs setzen

UINT Position[2];

Position[0] = 20;

Position[1] = 0;

is_DirectRenderer (h, DR_SET_OVERLAY_POSITION,

(void*)Position, sizeof (Position));

//------------------------------------

// Key-Farbe

//------------------------------------

//Aktuelle Key-Farbe auslesen

UINT OverlayKeyColor[3];

is_DirectRenderer (h, DR_GET_OVERLAY_KEY_COLOR,

(void*)OverlayKeyColor, sizeof(OverlayKeyColor));

INT nRed = OverlayKeyColor[0];

INT nGreen = OverlayKeyColor[1];

INT nBlue = OverlayKeyColor[2];

//Neue Key-Farbe setzen

OverlayKeyColor[0] = GetRValue(m_rgbKeyColor);

OverlayKeyColor[1] = GetGValue(m_rgbKeyColor);

OverlayKeyColor[2] = GetBValue(m_rgbKeyColor);

is_DirectRenderer (h, DR_SET_OVERLAY_KEY_COLOR,

(void*)OverlayKeyColor, sizeof(OverlayKeyColor));

//------------------------------------

// Anzeige

//------------------------------------

//Overlay anzeigen

is_DirectRenderer (h, DR_SHOW_OVERLAY, NULL, NULL);

//Overlay ausblenden

is_DirectRenderer (h, DR_HIDE_OVERLAY, NULL, NULL);

//------------------------------------

// Skalierung

//------------------------------------

//Skalierung aktivieren

is_DirectRenderer (h, DR_ENABLE_SCALING, NULL, NULL);

//Skalierung deaktivieren

is_DirectRenderer (h, DR_DISABLE_SCALING, NULL, NULL);

//------------------------------------

// Transparenz

//------------------------------------

//Halbtransparentes Overlay aktivieren

is_DirectRenderer (h, DR_ENABLE_SEMI_TRANSPARENT_OVERLAY, NULL, NULL);

//Halbtransparentes Overlay deaktivieren

is_DirectRenderer (h, DR_DISABLE_SEMI_TRANSPARENT_OVERLAY, NULL, NULL);

//------------------------------------

// Synchronisation

//------------------------------------

//Auto-Synchronisation aktivieren

is_DirectRenderer (h, DR_SET_VSYNC_AUTO, NULL, NULL);

//Benutzerdefinierte Synchronisation: Bereich abfragen + Sync-Pos. setzen

UINT UserSync[2];

is_DirectRenderer (h, DR_GET_USER_SYNC_POSITION_RANGE,

(void*)UserSync, sizeof (UserSync));

INT Min = UserSync[0];

INT Max = UserSync[1];

INT SyncPosition = 400;

is_DirectRenderer (h, DR_SET_USER_SYNC,

(void*)&SyncPosition, sizeof (SyncPosition));

//Synchronisation deaktivieren

is_DirectRenderer (h, DR_SET_VSYNC_OFF, NULL, NULL);

//------------------------------------

// BMP-Datei

//------------------------------------

//Overlay aus BMP-Datei laden

is_DirectRenderer (h, DR_LOAD_OVERLAY_FROM_FILE,

(void*)”c:\test.bmp”, NULL);

//------------------------------------

// Löschen

//------------------------------------

//Overlay-Bereich löschen

is_DirectRenderer (h, DR_CLEAR_OVERLAY, NULL, NULL);

//------------------------------------

// Steal-Funktion

//------------------------------------

//Farbmodus für kopiertes Bild abfragen und setzen

INT nColorMode;

is_DirectRenderer (h, DR_GET_STEAL_FORMAT,

(void*)&nColorMode, sizeof (nColorMode));

nColorMode = IS_CM_Y8;

is_DirectRenderer (h, DR_SET_STEAL_FORMAT,

(void*)&nColorMode, sizeof (nColorMode));

//Bild kopieren, Funktion wartet

INT nwait = IS_WAIT;

is_DirectRenderer(h, DR_STEAL_NEXT_FRAME,

(void*)&wait, sizeof (wait));

//------------------------------------

// Fenster-Handle

//------------------------------------

//Setzt ein neues Fenster-Handle für die Bildausgabe

is_DirectRenderer (h, DR_SET_HWND, (void*)&hWnd, sizeof (hWnd));

//------------------------------------

// Kompatibilität

//------------------------------------

//Kompatibilität der Grafikkarte prüfen

INT nRet = is_DirectRenderer (h, DR_CHECK_COMPATIBILITY, NULL, NULL);

if (nRet == IS_DR_DEVICE_CAPS_INSUFFICIENT )

//Grafikkarte unterstützt keine uEye Direct3D-Funktionen

//------------------------------------

// Farbmodus prüfen

//------------------------------------

INT nVgaMode;

// Aktuellen Farbmodus des Desktops ermitteln

INT nRet = is_GetColorDepth(h, NULL, &nVgaMode);

INT Modes[2];

Modes[0] = IS_SET_CM_RGB16; // Quellmodus des FALCON (z.B.)

Modes[1] = nVgaMode; // Zielmodus der Grafikkarte

// Quell- und Zielmodus prüfen

nRet = is_DirectRenderer(h, DR_CHECK_COLOR_MODE_SUPPORT, Modes,

2 * sizeof(INT));

if (nRet == IS_DR_DEVICE_CAPS_INSUFFICIENT )

//Grafikkarte unterstützt die angegebene Farbraumkonvertierung nicht

//------------------------------------

// "Overlay Lost" Nachricht

//------------------------------------

// Beispiel für einen Nachrichtenhandler in MFC Applikationen

// in XX_sample.h

afx_msg LRESULT OnFalconMessage(WPARAM wParam, LPARAM lParam);

// in XX_sample.cpp

BEGIN_MESSAGE_MAP(...)

...

ON_MESSAGE(IS_FALCON_MESSAGE, OnFalconMessage)

END_MESSAGE_MAP()

LRESULT CXX_class::OnFalconMessage(WPARAM wParam, LPARAM lParam)

{

switch(wParam)

{

case IS_MSG_OVERLAY_DATA_LOST:

// redraw the overlay data here

...

break;

} // end switch(wParam)

return 0;

} // end LRESULT CXX_class::OnFalconMessage

© 2020 IDS Imaging Development Systems GmbH