Aktivieren Sie JavaScript, um die Website anzuzeigen.

IDS Software Suite 4.95.1

Windows_Logo
Linux_Logo

USB 2.0

USB 3.x

GigE

USB 2.0

USB 3.x

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