uEye Kamera-Handbuch Version 4.92
![]() |
![]() |
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
![]() |
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.
![]() |
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. |
![]() |
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
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
}
//------------------------------------
// 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));
//------------------------------------
// 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));
//------------------------------------
// Anzeige
//------------------------------------
//Overlay anzeigen
is_DirectRenderer (hCam, DR_SHOW_OVERLAY, NULL, NULL);
//Overlay verstecken
is_DirectRenderer (hCam, DR_HIDE_OVERLAY, NULL, NULL);
//------------------------------------
// Skalierung
//------------------------------------
//Skalierung aktivieren
is_DirectRenderer (hCam, DR_ENABLE_SCALING, NULL, NULL);
//Skalierung deaktivieren
is_DirectRenderer (hCam, DR_DISABLE_SCALING, NULL, NULL);
//------------------------------------
// 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);
//------------------------------------
// 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);
//------------------------------------
// 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);
//------------------------------------
// 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));
//------------------------------------
// Fenster-Handle
//------------------------------------
//Setzt ein neues Fenster-Handle für die Bildausgabe
is_DirectRenderer (hCam, DR_SET_HWND, (void*)&hWnd, sizeof (hWnd));
//------------------------------------
// 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.