DriveWorks SDK Reference
3.5.78 Release
For Test and Development only

MapsRenderer.h
Go to the documentation of this file.
1 // This code contains NVIDIA Confidential Information and is disclosed
3 // under the Mutual Non-Disclosure Agreement.
4 //
5 // Notice
6 // ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
7 // NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
8 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
9 // MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
10 //
11 // NVIDIA Corporation assumes no responsibility for the consequences of use of such
12 // information or for any infringement of patents or other rights of third parties that may
13 // result from its use. No license is granted by implication or otherwise under any patent
14 // or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
15 // expressly authorized by NVIDIA. Details are subject to change without notice.
16 // This code supersedes and replaces all information previously supplied.
17 // NVIDIA Corporation products are not authorized for use as critical
18 // components in life support devices or systems without express written approval of
19 // NVIDIA Corporation.
20 //
21 // Copyright (c) 2016-2020 NVIDIA Corporation. All rights reserved.
22 //
23 // NVIDIA Corporation and its licensors retain all intellectual property and proprietary
24 // rights in and to this software and related documentation and any modifications thereto.
25 // Any use, reproduction, disclosure or distribution of this software and related
26 // documentation without an express license agreement from NVIDIA Corporation is
27 // strictly prohibited.
28 //
30 
49 #ifndef DWVISUALIZATION_MAPSRENDERER_H_
50 #define DWVISUALIZATION_MAPSRENDERER_H_
51 
52 #include <dw/maps/Maps.h>
55 
56 #ifdef __cplusplus
57 extern "C" {
58 #endif
59 
60 /*
61  * This lane channel follows World Model dwLaneChunk semantics:
62  * Left, center, and right polylines have the same number of points
63  * Each left and right point has its associated type stored in
64  * leftDividerTypes and rightDividerTypes
65  */
67 {
68  const dwVector3f* left;
70  const dwVector3f* right;
71  uint32_t pointsCount;
72 };
73 
75 {
79 };
80 
82 typedef struct dwMapsRendererObject* dwMapsRendererHandle_t;
84 typedef const struct dwMapsRendererObject* dwConstMapsRendererHandle_t;
85 
107 dwStatus dwMapsRenderer_initialize(dwMapsRendererHandle_t* mapsRenderer,
108  uint32_t maxRenderBufferLineCount,
109  uint32_t maxRenderBufferPointCount,
110  uint32_t maxRenderBufferTriangleCount,
111  bool showMapLineDirections,
112  dwRenderEngineHandle_t renderEngine,
113  dwConstMapHandle_t map);
114 
125 dwStatus dwMapsRenderer_release(dwMapsRendererHandle_t mapsRenderer);
126 
142  dwConstMapsRendererHandle_t mapsRenderer);
143 
158  dwConstMapsRendererHandle_t mapsRenderer);
159 
178 dwStatus dwMapsRenderer_getWGS84Coord(dwMapsGeoPoint* p, uint32_t screenCoordX, uint32_t screenCoordY,
179  uint32_t tileId,
180  dwRenderEngineHandle_t renderEngine,
181  dwConstMapsRendererHandle_t mapsRenderer);
182 
202  float32_t x,
203  float32_t y,
204  dwConstRenderEngineHandle_t renderEngine,
205  dwConstMapsRendererHandle_t mapsRenderer);
206 
229  uint32_t screenCoordX, uint32_t screenCoordY,
230  const dwMapsGeoPoint* boxCenter,
231  float32_t bearingRadian,
232  float32_t lengthMeters, float32_t widthMeters,
233  uint32_t tileId,
234  dwRenderEngineHandle_t renderEngine,
235  dwConstMapsRendererHandle_t mapsRenderer);
236 
257  uint32_t screenCoordX, uint32_t screenCoordY,
258  const dwMapsGeoPoint* boxCenter,
259  float32_t sizeMeters,
260  uint32_t tileId,
261  dwRenderEngineHandle_t renderEngine,
262  dwConstMapsRendererHandle_t mapsRenderer);
263 
278  dwRenderEngineHandle_t renderEngine,
279  dwMapsRendererHandle_t mapsRenderer);
280 
293  dwRenderEngineHandle_t renderEngine,
294  dwMapsRendererHandle_t mapsRenderer);
295 
309  dwRenderEngineHandle_t renderEngine,
310  dwMapsRendererHandle_t mapsRenderer);
311 
325  const dwMapsGeoPoint* lookAtPoint,
326  dwRenderEngineHandle_t renderEngine,
327  dwMapsRendererHandle_t mapsRenderer);
328 
348  bool showLineDirections,
349  dwRenderEngineHandle_t renderEngine,
350  dwMapsRendererHandle_t mapsRenderer);
351 
375  uint32_t polylineCount,
376  const dwRenderEngineColorRGBA* colors,
377  uint32_t colorCount,
378  bool showLineDirection,
379  dwRenderEngineHandle_t renderEngine,
380  dwMapsRendererHandle_t mapsRenderer);
381 
409  uint32_t polylineCount,
410  const dwMapsGeoPoint* origins,
411  uint32_t originsCount,
412  const dwVector4f* colors,
413  uint32_t colorCount,
414  bool showLineDirection,
415  dwRenderEngineHandle_t renderEngine,
416  dwMapsRendererHandle_t mapsRenderer);
417 
443  uint32_t polylineCount,
444  const dwVector4f* colors,
445  uint32_t colorCount,
446  const dwMapsRoadSegmentId* roadSegmentIds,
447  uint32_t segmentIdCount,
448  bool showLineDirection,
449  dwRenderEngineHandle_t renderEngine,
450  dwMapsRendererHandle_t mapsRenderer,
451  dwConstMapsLocalLayoutHandle_t localLayout);
452 
474  uint32_t geoPointCount,
475  const dwVector4f* colors,
476  uint32_t colorCount,
477  dwRenderEngineHandle_t renderEngine,
478  dwMapsRendererHandle_t mapsRenderer);
479 
501  uint32_t pointsCount,
502  const dwMapsGeoPoint* origins,
503  uint32_t originsCount,
504  const dwVector4f* color,
505  dwRenderEngineHandle_t renderEngine,
506  dwMapsRendererHandle_t mapsRenderer);
507 
529  uint32_t pointsCount,
530  const dwMapsRoadSegmentId* roadSegmentIds,
531  uint32_t segmentIdCount,
532  const dwVector4f* color,
533  dwRenderEngineHandle_t renderEngine,
534  dwMapsRendererHandle_t mapsRenderer,
535  dwConstMapsLocalLayoutHandle_t localLayout);
536 
560  float32_t bearingRadian,
561  float32_t length,
562  float32_t width,
563  bool withCenterCross,
564  bool withOrientation,
565  dwRenderEngineHandle_t renderEngine,
566  dwMapsRendererHandle_t mapsRenderer);
567 
591  const dwMapsGeoPoint* origin,
592  float32_t bearingRadian,
593  float32_t length,
594  float32_t width,
595  bool withCenterCross,
596  bool withOrientation,
597  dwRenderEngineHandle_t renderEngine,
598  dwMapsRendererHandle_t mapsRenderer);
599 
625  const dwMapsRoadSegmentId roadSegmentId,
626  float32_t bearingRadian,
627  float32_t length,
628  float32_t width,
629  bool withCenterCross,
630  bool withOrientation,
631  dwRenderEngineHandle_t renderEngine,
632  dwMapsRendererHandle_t mapsRenderer,
633  dwConstMapsLocalLayoutHandle_t localLayout);
634 
651  float32_t sizeMeters,
652  bool withCenterCross,
653  dwRenderEngineHandle_t renderEngine,
654  dwMapsRendererHandle_t mapsRenderer);
655 
673  const dwMapsGeoPoint* origin,
674  float32_t sizeMeters,
675  bool withCenterCross,
676  dwRenderEngineHandle_t renderEngine,
677  dwMapsRendererHandle_t mapsRenderer);
678 
696  const dwMapsRoadSegmentId roadSegmentId,
697  float32_t sizeMeters,
698  bool withCenterCross,
699  dwRenderEngineHandle_t renderEngine,
700  dwMapsRendererHandle_t mapsRenderer,
701  dwConstMapsLocalLayoutHandle_t localLayout);
702 
716 dwStatus dwMapsRenderer_renderMap(dwRenderEngineHandle_t renderEngine, bool renderInLocalLayout,
717  dwMapsRendererHandle_t mapsRenderer);
718 
735 dwStatus dwMapsRenderer_setLocalLayout(const dwMapsRoadSegmentBuffer* roadSegmentBuffer, bool showMapLineDirections,
736  dwConstMapsLocalLayoutHandle_t localLayout,
737  dwMapsRendererHandle_t mapsRenderer);
738 
758  const dwVector4f* channelColor,
759  const bool fillChannel,
760  const bool renderDirection,
761  const bool renderDividerPolylines,
762  const dwMapsRoadSegmentId* roadSegmentId,
763  dwConstMapsLocalLayoutHandle_t localLayoutHandle,
764  dwRenderEngineHandle_t renderEngineHandle,
765  dwMapsRendererHandle_t mapsRendererHandle);
766 
785  const uint32_t channelCount,
786  const dwVector4f* channelColor,
787  const bool renderDirection,
788  const dwMapsRoadSegmentId* roadSegmentId,
789  dwConstMapsLocalLayoutHandle_t localLayoutHandle,
790  dwMapsRendererHandle_t mapsRendererHandle);
791 
803  dwMapsRendererHandle_t mapsRendererHandle);
804 
805 #ifdef __cplusplus
806 }
807 #endif
808 
811 #endif // DW_VISUALIZATION_MAPSRENDERER_H_
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_renderOrientedGeoBox(const dwMapsGeoPoint *position, float32_t bearingRadian, float32_t length, float32_t width, bool withCenterCross, bool withOrientation, dwRenderEngineHandle_t renderEngine, dwMapsRendererHandle_t mapsRenderer)
Add an oriented box.
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_renderBox(const dwVector3f *position, const dwMapsGeoPoint *origin, float32_t sizeMeters, bool withCenterCross, dwRenderEngineHandle_t renderEngine, dwMapsRendererHandle_t mapsRenderer)
Render a square box for local [x,y,z] point in the absolute coordinate system.
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_renderPoints(const dwVector3f *points, uint32_t pointsCount, const dwMapsGeoPoint *origins, uint32_t originsCount, const dwVector4f *color, dwRenderEngineHandle_t renderEngine, dwMapsRendererHandle_t mapsRenderer)
Add local [x,y,z] points in the absolute coordinate system to a render buffer.
float float32_t
Specifies POD types.
Definition: Types.h:70
Defines a single-precision 3D polyline.
Definition: Types.h:404
Polyline defined by a dwMapsGeoPoint list.
Definition: Maps.h:417
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_renderPolylinesInLocalLayout(const dwPolyline3f *polylines, uint32_t polylineCount, const dwVector4f *colors, uint32_t colorCount, const dwMapsRoadSegmentId *roadSegmentIds, uint32_t segmentIdCount, bool showLineDirection, dwRenderEngineHandle_t renderEngine, dwMapsRendererHandle_t mapsRenderer, dwConstMapsLocalLayoutHandle_t localLayout)
Add a local [x,y,z] polyline in a local coordinate system to a render buffer.
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_renderLaneChannel(const dwMapsRendererLaneChannel *laneChannel, const dwVector4f *channelColor, const bool fillChannel, const bool renderDirection, const bool renderDividerPolylines, const dwMapsRoadSegmentId *roadSegmentId, dwConstMapsLocalLayoutHandle_t localLayoutHandle, dwRenderEngineHandle_t renderEngineHandle, dwMapsRendererHandle_t mapsRendererHandle)
Render a lane channel in LocalLayout.
Defines a four-element single-precision floating point vector.
Definition: Types.h:335
Defines a three-element floating-point vector.
Definition: Types.h:319
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_renderPolylines(const dwPolyline3f *polylines, uint32_t polylineCount, const dwMapsGeoPoint *origins, uint32_t originsCount, const dwVector4f *colors, uint32_t colorCount, bool showLineDirection, dwRenderEngineHandle_t renderEngine, dwMapsRendererHandle_t mapsRenderer)
Add a local [x,y,z] polyline in the absolute coordinate system to a render buffer.
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_renderBoxInLocalLayout(const dwVector3f *position, const dwMapsRoadSegmentId roadSegmentId, float32_t sizeMeters, bool withCenterCross, dwRenderEngineHandle_t renderEngine, dwMapsRendererHandle_t mapsRenderer, dwConstMapsLocalLayoutHandle_t localLayout)
Render a square box for local [x,y,z] point in local coordinate system.
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_setTopDownModelView(const dwMapsGeoPoint *cameraPos, dwRenderEngineHandle_t renderEngine, dwMapsRendererHandle_t mapsRenderer)
Set the position of an orthographic top-down camera.
struct dwRenderEngineObject * dwRenderEngineHandle_t
Handle for the render engine.
Definition: RenderEngine.h:66
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_isPixelCoordInBox(bool *isInBox, uint32_t screenCoordX, uint32_t screenCoordY, const dwMapsGeoPoint *boxCenter, float32_t sizeMeters, uint32_t tileId, dwRenderEngineHandle_t renderEngine, dwConstMapsRendererHandle_t mapsRenderer)
Check if a window pixel is within a box.
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_updateLaneChannels(const dwMapsRendererLaneChannel *laneChannels, const uint32_t channelCount, const dwVector4f *channelColor, const bool renderDirection, const dwMapsRoadSegmentId *roadSegmentId, dwConstMapsLocalLayoutHandle_t localLayoutHandle, dwMapsRendererHandle_t mapsRendererHandle)
Update lane channel render buffer.
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_setTopDownProjection(float32_t windowHeightInMeters, dwRenderEngineHandle_t renderEngine, dwMapsRendererHandle_t mapsRenderer)
Set the zoom of an orthographic top-down camera.
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_setLocalLayout(const dwMapsRoadSegmentBuffer *roadSegmentBuffer, bool showMapLineDirections, dwConstMapsLocalLayoutHandle_t localLayout, dwMapsRendererHandle_t mapsRenderer)
computes transformations for road segments relative to the reference road segment and apply them to t...
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_getRenderCoord(dwVector3f *out, const dwMapsGeoPoint *in, dwConstMapsRendererHandle_t mapsRenderer)
Get the render coordinates of an query Wgs84 point.
NVIDIA DriveWorks API: Maps
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_getWGS84Coord(dwMapsGeoPoint *p, uint32_t screenCoordX, uint32_t screenCoordY, uint32_t tileId, dwRenderEngineHandle_t renderEngine, dwConstMapsRendererHandle_t mapsRenderer)
Get the WGS84 coordinates of a screen pixel.
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_setLookAt(const dwMapsGeoPoint *cameraPos, const dwMapsGeoPoint *lookAtPoint, dwRenderEngineHandle_t renderEngine, dwMapsRendererHandle_t mapsRenderer)
Set camera position and orientation of the current tile in the render engine.
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_renderGeoPoints(const dwMapsGeoPoint *geoPoints, uint32_t geoPointCount, const dwVector4f *colors, uint32_t colorCount, dwRenderEngineHandle_t renderEngine, dwMapsRendererHandle_t mapsRenderer)
Add wgs84 points to a render buffer.
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_initialize(dwMapsRendererHandle_t *mapsRenderer, uint32_t maxRenderBufferLineCount, uint32_t maxRenderBufferPointCount, uint32_t maxRenderBufferTriangleCount, bool showMapLineDirections, dwRenderEngineHandle_t renderEngine, dwConstMapHandle_t map)
Initialize maps renderer.
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_renderOrientedBox(const dwVector3f *position, const dwMapsGeoPoint *origin, float32_t bearingRadian, float32_t length, float32_t width, bool withCenterCross, bool withOrientation, dwRenderEngineHandle_t renderEngine, dwMapsRendererHandle_t mapsRenderer)
Add an oriented box for local [x,y,z] point in absolute coordinate system.
dwStatus
Status definition.
Definition: Status.h:178
User provided buffer of dwMapsRoadSegments.
Definition: Maps.h:739
Location point defined by WGS84 coordinates.
Definition: Types.h:575
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_renderLanePlan(dwConstLanePlanHandle_t lanePlan, bool showLineDirections, dwRenderEngineHandle_t renderEngine, dwMapsRendererHandle_t mapsRenderer)
Add a lane plan to the static render buffer.
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_isPixelCoordInOrientedBox(bool *isInBox, uint32_t screenCoordX, uint32_t screenCoordY, const dwMapsGeoPoint *boxCenter, float32_t bearingRadian, float32_t lengthMeters, float32_t widthMeters, uint32_t tileId, dwRenderEngineHandle_t renderEngine, dwConstMapsRendererHandle_t mapsRenderer)
Check if a window pixel is within an oriented box.
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_renderGeoPolylines(const dwMapsGeoPolyline *polylines, uint32_t polylineCount, const dwRenderEngineColorRGBA *colors, uint32_t colorCount, bool showLineDirection, dwRenderEngineHandle_t renderEngine, dwMapsRendererHandle_t mapsRenderer)
Add a wgs84 polyline to a render buffer.
const struct dwRenderEngineObject * dwConstRenderEngineHandle_t
Const handle for the render engine.
Definition: RenderEngine.h:68
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_renderOrientedBoxInLocalLayout(const dwVector3f *position, const dwMapsRoadSegmentId roadSegmentId, float32_t bearingRadian, float32_t length, float32_t width, bool withCenterCross, bool withOrientation, dwRenderEngineHandle_t renderEngine, dwMapsRendererHandle_t mapsRenderer, dwConstMapsLocalLayoutHandle_t localLayout)
Add an oriented box for local [x,y,z] point in a local coordinate system .
struct dwLanePlanObject const * dwConstLanePlanHandle_t
Definition: LanePlanner.h:74
const struct dwMapsRendererObject * dwConstMapsRendererHandle_t
Const handle representing vertex data for rendering.
Definition: MapsRenderer.h:84
Globally unique identifier for road segments.
Definition: Maps.h:344
dwMapsRendererLaneChannelGeometry geometry
Definition: MapsRenderer.h:76
#define DW_VIZ_API_PUBLIC
Definition: Exports.h:51
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_getWGS84CoordNDC(dwMapsGeoPoint *p, float32_t x, float32_t y, dwConstRenderEngineHandle_t renderEngine, dwConstMapsRendererHandle_t mapsRenderer)
Get the WGS84 coordinates of a screen position.
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_moveTopDownModelView(float32_t dx, float32_t dy, dwRenderEngineHandle_t renderEngine, dwMapsRendererHandle_t mapsRenderer)
Shift the position of an orthographic top-down camera horizonally and vertically by meters...
const dwMapsLaneDividerType * leftDividerTypes
Definition: MapsRenderer.h:77
struct dwMapsRendererObject * dwMapsRendererHandle_t
Handle representing vertex data for rendering.
Definition: MapsRenderer.h:82
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_release(dwMapsRendererHandle_t mapsRenderer)
Release maps renderer and its resources.
dwMapsLaneDividerType
Lane divider type and filter values.
Definition: Maps.h:133
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_renderGeoBox(const dwMapsGeoPoint *position, float32_t sizeMeters, bool withCenterCross, dwRenderEngineHandle_t renderEngine, dwMapsRendererHandle_t mapsRenderer)
Render a square box.
NVIDIA DriveWorks API: Render Engine
struct dwMapObject const * dwConstMapHandle_t
Definition: Maps.h:69
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_getWGS84CoordFromRenderCoord(dwMapsGeoPoint *p, const dwVector3f *in, dwConstMapsRendererHandle_t mapsRenderer)
Get the WGS84 coordinates of a render coord.
const dwMapsLaneDividerType * rightDividerTypes
Definition: MapsRenderer.h:78
struct dwMapsLocalLayoutObject const * dwConstMapsLocalLayoutHandle_t
Definition: Maps.h:72
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_renderPointsInLocalLayout(const dwVector3f *points, uint32_t pointsCount, const dwMapsRoadSegmentId *roadSegmentIds, uint32_t segmentIdCount, const dwVector4f *color, dwRenderEngineHandle_t renderEngine, dwMapsRendererHandle_t mapsRenderer, dwConstMapsLocalLayoutHandle_t localLayout)
Add local [x,y,z] points in a local coordinate system to a render buffer.
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_renderLaneChannels(dwRenderEngineHandle_t renderEngineHandle, dwMapsRendererHandle_t mapsRendererHandle)
Render lane channels populated by the dwMapsRenderer_updateLaneChannels(...) API. ...
DW_VIZ_API_PUBLIC dwStatus dwMapsRenderer_renderMap(dwRenderEngineHandle_t renderEngine, bool renderInLocalLayout, dwMapsRendererHandle_t mapsRenderer)
Render the complete map.
NVIDIA DriveWorks API: Lane Planner