is_DirectRenderer

uEye Kamera-Handbuch Version 4.92


is_DirectRenderer

Windows_Logo
Linux_Logo

USB 2.0

USB 3.0

GigE

USB 2.0

USB 3.0

GigE

Syntax

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

Beschreibung

hint_info

Hinweis zur Verwendung der Funktion unter Linux

Die Funktion is_DirectRenderer() geht unter Linux nur im OpenGL-Modus.

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

Der zweite Übergabeparameter nMode bestimmt, was der Aufruf von is_DirectRenderer() bewirkt.

Der Wert des dritten Parameters pParam hängt von der mit nMode gesetzten Funktionsweise ab: So wird z. B. beim Setzen der Overlay-Größe (d. h. nMode = DR_SET_OVERLAY_SIZE) ein Zeiger auf ein Array mit zwei Werten x und y übergeben (Beispielcode). Beim Laden eines Bitmap-Bildes (d. h. nMode = DR_LOAD_OVERLAY_FROM_FILE) wird in pParam der Pfad auf die Datei übergeben (Beispielcode). Die jeweils erforderlichen Parameter können den Code-Beispielen unten im Kapitel entnommen werden.

hint_attention

Hinweise zu den Systemanforderungen

•Um die Direct3D-Funktionen nutzen zu können, muss eine entsprechende Version der Microsoft DirectX Runtime auf dem System installiert sein.

•Bei der Verwendung hochauflösender Kameras sollte die maximale Texturgröße der Grafikkarte mindestens 4096 x 4096 Pixel betragen. Die maximale Texturgröße kann über den Parameter DR_GET_MAX_OVERLAY_SIZE abgefragt werden.

•Für die Darstellung im Direct3D-Modus wird automatisch die eingestellte Farbtiefe des Windows-Desktops verwendet.

Bitte beachten Sie auch die Hinweise zu Grafikkarten im Kapitel Systemanforderungen.

hint_info

Hinweis zur Darstellung von Mono-/Rohdatenformaten

Um unter Direct3D monochrome oder Bayer-Rohbilder anzuzeigen, setzen Sie in der Funktion is_SetDisplayMode() die entsprechenden Konstanten.

Über den Übergabeparameter nCommand wird dabei der Funktionsmodus gewählt. Der Übergabeparameter pParam ist abhängig vom Funktionsmodus unterschiedlich belegt; bei Funktionen zum Setzen oder Rücklesen eines Wertes enthält pParam einen Zeiger auf eine Variable vom Typ UINT. Die Größe des Speicherbereichs, auf den pParam verweist, wird im Übergabeparameter nSizeOfParam angegeben.

Übergabeparameter

hCam

Handle auf Kamera

pParam

Zeiger auf Funktionsparameter, der abhängig von nCommand unterschiedlich belegt ist.

nSize

Größe des Datenobjekts bzw. des Arrays in Byte

Rückgabewert

In Verbindung mit

DR_CHECK_COMPATIBILITY

IS_DR_DEVICE_CAPS_INSUFFICIENT

Die Grafikhardware bietet keine vollständige Unterstützung für die uEye Direct3D-Funktionen

IS_DR_CANNOT_CREATE_SURFACE

Bild- oder Overlay-Surface konnten nicht angelegt werden.

IS_DR_CANNOT_CREATE_TEXTURE

Die Textur konnte nicht angelegt werden.

IS_DR_CANNOT_CREATE_VERTEX_BUFFER

Der Vertex-Puffer konnte nicht angelegt werden.

IS_DR_CANNOT_GET_OVERLAY_DC

Das Device-Context-Handle für das Overlay konnte nicht geholt werden.

IS_DR_CANNOT_LOCK_OVERLAY_SURFACE

Das Overlay-Surface konnte nicht gesperrt werden.

IS_DR_CANNOT_RELEASE_OVERLAY_DC

Das Device-Context-Handle für das Overlay konnte nicht freigegeben werden.

IS_DR_CANNOT_UNLOCK_OVERLAY_SURFACE

Das Overlay-Surface konnte nicht freigegeben werden.

IS_DR_DEVICE_CAPS_INSUFFICIENT

Die Funktion wird von der Grafikhardware nicht unterstützt.

IS_DR_DEVICE_OUT_OF_MEMORY

Nicht genügend Grafikspeicher verfügbar.

IS_DR_NOT_ALLOWED_WHILE_DC_IS_ACTIVE

Die Anwendung hat noch ein Device-Context-Handle offen.

IS_INVALID_CAMERA_HANDLE

Ungültiges Kamera-Handle

IS_INVALID_PARAMETER

Einer der übergebenen Parameter ist außerhalb des gültigen Bereichs, oder für diesen Sensor nicht unterstützt, bzw. in diesem Modus nicht zugänglich.

IS_NO_SUCCESS

Allgemeine Fehlermeldung

IS_NOT_SUPPORTED

Das verwendete Kameramodell unterstützt diese Funktion oder Einstellung nicht.

IS_SUCCESS

Funktion erfolgreich

IS_TIMED_OUT

Ein Timeout trat auf. Eine Bildaufnahme konnte nicht in der vorgeschriebenen Zeit beendet werden.

Verwandte Funktionen

•is_SetDisplayMode()

•is_SetColorMode()

•is_SetImageMem()

•is_RenderBitmap()

Beispiel Supported-Funktion

UINT nType = IS_SET_DM_DIRECT3D;

if (is_DirectRenderer(m_pMainView->GetCameraHandle(), DR_GET_SUPPORTED, (void*)&nType, sizeof(nType)) == IS_SUCCESS)

{

// Direct3D wird unterstützt

}

nType = IS_SET_DM_OPENGL;

if (is_DirectRenderer(m_pMainView->GetCameraHandle(), DR_GET_SUPPORTED, (void*)&nType, sizeof(nType)) == IS_SUCCESS)

{

// OpenGL wird unterstützt

}

Beispiel DC-Handle

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

//          DC-Handle              

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

 

// DC-Handle auf das Overlay holen

HDC hDC;

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

 

// DC-Handle freigeben

is_DirectRenderer (hCam, DR_RELEASE_OVERLAY_DC, NULL, NULL);

Beispiel Overlay-Größe und -Position

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

//          Overlay-Größe              

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

 

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

UINT OverlaySize[2];

is_DirectRenderer (hCam, 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 (hCam, DR_SET_OVERLAY_SIZE, (void*)Size, sizeof (Size));

 

//Position des Overlay-Bereichs setzen

UINT Position[2];

Position[0] = 20;

Position[1] = 0;

is_DirectRenderer (hCam, DR_SET_OVERLAY_POSITION, (void*)Position, sizeof (Position));

Beispiel Schlüsselfarbe

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

//          Key-Farbe                

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

 

//Aktuelle Key-Farbe auslesen

UINT OverlayKeyColor[3];

is_DirectRenderer (hCam, 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 (hCam, DR_SET_OVERLAY_KEY_COLOR, (void*)OverlayKeyColor, sizeof(OverlayKeyColor));

Beispiel Anzeige

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

//          Anzeige                

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

 

//Overlay anzeigen

is_DirectRenderer (hCam, DR_SHOW_OVERLAY, NULL, NULL);

 

//Overlay verstecken

is_DirectRenderer (hCam, DR_HIDE_OVERLAY, NULL, NULL);

Beispiel Skalierung

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

//          Skalierung                

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

 

//Skalierung aktivieren

is_DirectRenderer (hCam, DR_ENABLE_SCALING, NULL, NULL);

 

//Skalierung deaktivieren

is_DirectRenderer (hCam, DR_DISABLE_SCALING, NULL, NULL);

Beispiel Transparenz

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

//          Transparenz                

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

 

//Halbtransparentes Overlay aktivieren

is_DirectRenderer (hCam, DR_ENABLE_SEMI_TRANSPARENT_OVERLAY, NULL, NULL);

 

//Halbtransparentes Overlay deaktivieren

is_DirectRenderer (hCam, DR_DISABLE_SEMI_TRANSPARENT_OVERLAY, NULL, NULL);

Beispiel Synchronisation

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

//          Synchronisation                

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

 

//Auto-Synchronisation aktivieren

is_DirectRenderer (hCam, DR_SET_VSYNC_AUTO, NULL, NULL);

 

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

UINT UserSync[2];

is_DirectRenderer (hCam, DR_GET_USER_SYNC_POSITION_RANGE, (void*)UserSync, sizeof (UserSync));

INT Min = UserSync[0];

INT Max = UserSync[1];

INT SyncPosition = 400;

is_DirectRenderer (hCam, DR_SET_USER_SYNC, (void*)&SyncPosition, sizeof (SyncPosition));

 

//Synchronisation deaktivieren

is_DirectRenderer (hCam, DR_SET_VSYNC_OFF, NULL, NULL);

Beispiel Overlay mit BMP

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

//          BMP-Datei                

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

 

//Overlay aus BMP-Datei laden

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

 

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

//          Löschen            

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

 

//Overlay-Bereich löschen

is_DirectRenderer (hCam, DR_CLEAR_OVERLAY, NULL, NULL);

Beispiel Steal-Funktion

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

//          Steal-Funktion                

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

 

//Farbmodus für kopiertes Bild abfragen und setzen

INT nColorMode;

is_DirectRenderer (hCam, DR_GET_STEAL_FORMAT, (void*)&nColorMode, sizeof (nColorMode));

 

nColorMode = IS_CM_MONO8;

is_DirectRenderer (hCam, DR_SET_STEAL_FORMAT, (void*)&nColorMode, sizeof (nColorMode));

 

//Bild kopieren, Funktion kehrt sofort zurück

INT nwait = IS_DONT_WAIT;

is_DirectRenderer(hCam, DR_STEAL_NEXT_FRAME, (void*)&wait, sizeof (wait));

Beispiel Fenster-Handle

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

//          Fenster-Handle                

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

 

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

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

Beispiel Kompatibilität

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

//          Kompatibilität                

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

 

//Kompatibilität der Grafikkarte prüfen

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

 

if (nRet == IS_DR_DEVICE_CAPS_INSUFFICIENT )

//Grafikkarte unterstützt keine uEye Direct3D-Funktionen

Beispiel OpenGL unter Linux

//OpenGL initialisieren

OPENGL_DISPLAY display;

display.pDisplay = NULL;

display.nWindowID = 0 /* fenster id */

 

is_InitCamera(&hCam, (void*)&display);

Beispiel unter Linux (unter Verwendung der Cairo-Bibliothek)

UINT Size[2] = { 480, 480 };

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

 

char *pOverlayBuffer;

is_DirectRenderer(hCam, DR_GET_OVERLAY_DATA, (void*)&pOverlayBuffer, sizeof(pOverlayBuffer));

 

cairo_surface_t *surface = 0;

cairo_t *cr = 0;

int w, h;

w = Size[0];

h = Size[1];

surface = cairo_image_surface_create_for_data(buffer, CAIRO_FORMAT_ARGB32, w, h, w * 4);

cr = cairo_create(surface);

cairo_set_line_width (cr, 6);

cairo_rectangle (cr, 12, 12, 232, 70);

cairo_new_sub_path (cr); cairo_arc (cr, 64, 64, 40, 0, 2* 3.14);

cairo_new_sub_path (cr); cairo_arc_negative (cr, 192, 64, 40, 0, -2*3.14);

cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);

cairo_set_source_rgb (cr, 0, 0.7, 0); cairo_fill_preserve (cr);

cairo_set_source_rgb (cr, 0, 0, 0); cairo_stroke (cr);

cairo_translate (cr, 0, 128);

cairo_rectangle (cr, 12, 12, 232, 70);

cairo_new_sub_path (cr); cairo_arc (cr, 64, 64, 40, 0, 2*3.14);

cairo_new_sub_path (cr); cairo_arc_negative (cr, 192, 64, 40, 0, -2*3.14);

cairo_set_fill_rule (cr, CAIRO_FILL_RULE_WINDING);

cairo_set_source_rgb (cr, 0, 0, 0.9); cairo_fill_preserve (cr);

cairo_set_source_rgb (cr, 0, 0, 0); cairo_stroke (cr);

cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL,

                      CAIRO_FONT_WEIGHT_BOLD );

cairo_set_font_size (cr, 90.0);

cairo_move_to (cr, 10.0, 135.0);

cairo_show_text (cr, "Hello");

cairo_move_to (cr, 70.0, 165.0);

cairo_set_font_size (cr, 150.0);

cairo_text_path (cr, "uEye");

cairo_set_source_rgb (cr, 0.5, 0.5, 1);

cairo_fill_preserve (cr);

cairo_set_source_rgb (cr, 0, 0, 0);

cairo_set_line_width (cr, 2.56);

cairo_stroke (cr);

/* draw helping lines */

cairo_set_source_rgba (cr, 1, 0.2, 0.2, 0.6);

cairo_arc (cr, 10.0, 135.0, 5.12, 0, 2*3.14);

cairo_close_path (cr);

cairo_arc (cr, 70.0, 165.0, 5.12, 0, 2*3.14);

cairo_fill (cr);

cairo_destroy (cr);

cairo_surface_destroy (surface);

 

// update overlay

is_DirectRenderer(hCam, DR_UPDATE_OVERLAY_DATA, NULL, 0);

Beispielprogramme

•uEye Direct Renderer

•uEye Steal

Haben Sie Verbesserungshinweise? Senden Sie ein kurzes Feedback zu diesem Kapitel. Vielen Dank!
Bei technischen Fragen wenden Sie sich bitte an Ihren lokalen Händler oder nutzen Sie das Support-Formular auf unserer Internetseite.


© 2019 IDS Imaging Development Systems GmbH
https://de.ids-imaging.com