DriveWorks SDK Reference

| 0.6.67 Release

Renderer.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 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 
45 #ifndef DW_RENDERER_RENDERER_H__
46 #define DW_RENDERER_RENDERER_H__
47 
48 #include <dw/core/Config.h>
49 #include <dw/core/Exports.h>
50 #include <dw/core/Status.h>
51 #include <dw/core/Types.h>
52 #include <dw/core/Context.h>
53 
54 #include <dw/gl/GL.h>
55 
56 #ifdef __cplusplus
57 extern "C" {
58 #endif
59 
60 //#######################################################################################
61 const float32_t DW_RENDERER_COLOR_RED[4] = { 230.0f/255.0f, 72.0f/255.0f, 32.0f/255.0f, 1.0f};
62 const float32_t DW_RENDERER_COLOR_DARKRED[4] = { 180.0f/255.0f, 5.0f/255.0f, 0.0f/255.0f, 1.0f};
63 const float32_t DW_RENDERER_COLOR_BLUE[4] = { 32.0f/255.0f, 72.0f/255.0f, 230.0f/255.0f, 1.0f};
64 const float32_t DW_RENDERER_COLOR_GREEN[4] = { 32.0f/255.0f, 230.0f/255.0f, 32.0f/255.0f, 1.0f};
65 const float32_t DW_RENDERER_COLOR_WHITE[4] = { 230.0f/255.0f, 230.0f/255.0f, 230.0f/255.0f, 1.0f};
66 const float32_t DW_RENDERER_COLOR_DARKGREEN[4] = { 45.0f/255.0f, 100.0f/255.0f, 44.0f/255.0f, 1.0f};
67 const float32_t DW_RENDERER_COLOR_LIGHTGREEN[4] = { 118.0f/255.0f, 185.0f/255.0f, 0.0f/255.0f, 1.0f};
68 const float32_t DW_RENDERER_COLOR_DARKGREY[4] = { 72.0f/255.0f, 72.0f/255.0f, 72.0f/255.0f, 1.0f};
69 const float32_t DW_RENDERER_COLOR_DARKBLUE[4] = { 45.0f/255.0f, 44.0f/255.0f, 100.0f/255.0f, 0.6f};
70 const float32_t DW_RENDERER_COLOR_YELLOW[4] = { 230.0f/255.0f, 230.0f/255.0f, 10.0f/255.0f, 1.0f};
71 const float32_t DW_RENDERER_COLOR_ORANGE[4] = { 230.0f/255.0f, 100.0f/255.0f, 10.0f/255.0f, 1.0f};
72 const float32_t DW_RENDERER_COLOR_LIGHTBLUE[4] = { 51.0f/255.0f, 153.0f/255.0f, 255.0f/255.0f, 0.6f};
73 const float32_t DW_RENDERER_COLOR_BLACK[4] = { 0.0f/255.0f, 0.0f/255.0f, 0.0f/255.0f, 1.0f};
74 
76 static const uint32_t DW_RENDERBUFFER_MAX_VIEWS = 10;
77 
78 //#######################################################################################
80 const float32_t DW_RENDER_COLORMAPSCALE_75M[3] = { 75.0f, 75.0f, 75.0f};
81 const float32_t DW_RENDER_COLORMAPSCALE_100M[3] = { 100.0f, 100.0f, 100.0f};
82 const float32_t DW_RENDER_COLORMAPSCALE_130M[3] = { 130.0f, 130.0f, 130.0f};
83 const float32_t DW_RENDER_COLORMAPSCALE_150M[3] = { 150.0f, 150.0f, 150.0f};
84 
85 //#######################################################################################
87 typedef enum dwRendererFonts {
98 
99 //#######################################################################################
101 typedef enum dwRenderBufferFormat {
108 
118 
121 {
130 
137 
147 
156 
158 static const uint32_t DW_RENDERER_DEFAULT_BUFFER_SIZE = 10000;
159 
161 typedef struct dwRenderBufferObject* dwRenderBufferHandle_t;
162 
164 typedef const struct dwRenderBufferObject* dwConstRenderBufferHandle_t;
165 
167 typedef struct dwRendererObject* dwRendererHandle_t;
168 
170 typedef const struct dwRendererObject* dwConstRendererHandle_t;
171 
172 
173 //#######################################################################################
174 // RenderBuffer
175 //#######################################################################################
176 
191 dwStatus dwRenderBuffer_initialize(dwRenderBufferHandle_t *renderbuffer,
192  const dwRenderBufferVertexLayout layout,
193  const dwRenderBufferPrimitiveType primType,
194  const uint32_t primCount,
195  dwContextHandle_t context);
212 dwStatus dwRenderBuffer_createView (uint32_t *slot,
213  dwRenderBufferHandle_t renderbuffer,
214  const dwRenderBufferVertexLayout newLayout,
215  const dwRenderBufferPrimitiveType newPrimType,
216  dwContextHandle_t context);
233  uint32_t *maxVertices,
234  uint32_t *vertexStride,
235  dwRenderBufferHandle_t renderbuffer);
236 
253  uint32_t *maxVertices,
254  uint32_t *vertexStride,
255  const uint32_t startVertex,
256  dwRenderBufferHandle_t renderbuffer);
271 dwStatus dwRenderBuffer_unmap (uint32_t nVerts, dwRenderBufferHandle_t renderbuffer);
272 
282 dwStatus dwRenderBuffer_release (dwRenderBufferHandle_t *renderbuffer);
283 
296  dwRenderBufferHandle_t renderbuffer);
297 
298 //#######################################################################################
299 // Renderer
300 //#######################################################################################
312 DW_API_PUBLIC dwStatus dwRenderer_initialize(dwRendererHandle_t *renderer, dwContextHandle_t context);
313 
321 DW_API_PUBLIC dwStatus dwRenderer_reset(dwRendererHandle_t renderer);
322 
331 DW_API_PUBLIC dwStatus dwRenderer_release(dwRendererHandle_t *renderer);
332 
333 //#######################################################################################
334 // Get state
335 //#######################################################################################
344 DW_API_PUBLIC dwStatus dwRenderer_getRect(dwRect *rect, dwConstRendererHandle_t obj);
345 
354 DW_API_PUBLIC dwStatus dwRenderer_getColor(float32_t color[4], dwConstRendererHandle_t obj);
355 
367 DW_API_PUBLIC dwStatus dwRenderer_getColorMapScale(float32_t colorMapScale[3], dwConstRendererHandle_t obj);
368 
380 DW_API_PUBLIC dwStatus dwRenderer_getColorMapScale(float32_t colorMapScale[3], dwConstRendererHandle_t obj);
381 
390 DW_API_PUBLIC dwStatus dwRenderer_getModelView(float32_t matrix[16], dwConstRendererHandle_t obj);
391 
400 DW_API_PUBLIC dwStatus dwRenderer_getProjection(float32_t matrix[16], dwConstRendererHandle_t obj);
401 
410 DW_API_PUBLIC dwStatus dwRenderer_getPointSize(float32_t *value, dwConstRendererHandle_t obj);
411 
420 DW_API_PUBLIC dwStatus dwRenderer_getLineWidth(float32_t *value, dwConstRendererHandle_t obj);
421 
430 DW_API_PUBLIC dwStatus dwRenderer_getFont(dwRendererFonts *value, dwConstRendererHandle_t obj);
431 
441 DW_API_PUBLIC dwStatus dwRenderer_get2DTransform(float32_t matrix[9], dwConstRendererHandle_t obj);
442 
443 //#######################################################################################
444 // Set state
445 //#######################################################################################
446 
456 DW_API_PUBLIC dwStatus dwRenderer_setRect(const dwRect rect, dwRendererHandle_t obj);
457 
466 DW_API_PUBLIC dwStatus dwRenderer_setColor(const float32_t color[4], dwRendererHandle_t obj) ;
467 
479 DW_API_PUBLIC dwStatus dwRenderer_setColorMapScale(const float32_t colorMapScale[3], dwRendererHandle_t obj) ;
480 
487 DW_API_PUBLIC dwStatus dwRenderer_setModelView(const float32_t matrix[16], dwRendererHandle_t obj);
488 
497 DW_API_PUBLIC dwStatus dwRenderer_setProjection(const float32_t matrix[16], dwRendererHandle_t obj);
498 
507 DW_API_PUBLIC dwStatus dwRenderer_setPointSize(const float32_t value, dwRendererHandle_t obj);
508 
517 DW_API_PUBLIC dwStatus dwRenderer_setLineWidth(const float32_t value, dwRendererHandle_t obj);
518 
527 DW_API_PUBLIC dwStatus dwRenderer_setFont(const dwRendererFonts value, dwRendererHandle_t obj);
528 
537 DW_API_PUBLIC dwStatus dwRenderer_set2DTransform(const float32_t matrix[9], dwRendererHandle_t obj);
538 
539 
540 //#######################################################################################
541 // Render calls
542 //#######################################################################################
543 
552 DW_API_PUBLIC dwStatus dwRenderer_renderBuffer(dwConstRenderBufferHandle_t buffer, dwRendererHandle_t obj);
553 
564 DW_API_PUBLIC dwStatus dwRenderer_renderData2D(const dwVector2f *buffer, size_t count, dwRenderBufferPrimitiveType primitiveType, dwRendererHandle_t obj);
565 
576 DW_API_PUBLIC dwStatus dwRenderer_renderData3D(const dwVector3f *buffer, size_t count, dwRenderBufferPrimitiveType primitiveType, dwRendererHandle_t obj);
577 
587 DW_API_PUBLIC dwStatus dwRenderer_renderCircle(dwVector2f center, float32_t radius, dwRendererHandle_t obj);
588 
599 DW_API_PUBLIC dwStatus dwRenderer_renderTexture(const GLuint inputTexture, const GLenum textureTarget,
600  dwRendererHandle_t obj);
601 
617 DW_API_PUBLIC dwStatus dwRenderer_renderSubTexture(const GLuint inputTexture, const GLenum textureTarget,
618  const float32_t minx, const float32_t miny,
619  const float32_t maxx, const float32_t maxy,
620  dwRendererHandle_t obj);
631 DW_API_PUBLIC dwStatus dwRenderer_renderText(const int32_t x, const int32_t y, const char *text,
632  dwRendererHandle_t obj);
633 
645  const char *text,
646  dwRendererHandle_t obj);
647 
649 #ifdef __cplusplus
650 }
651 #endif
652 
653 #endif // DW_RENDERER_RENDERER_H__
dwRenderBufferFormat
Vertex component channel count and format.
Definition: Renderer.h:101
const struct dwRendererObject * dwConstRendererHandle_t
Const handle for the renderer.
Definition: Renderer.h:170
DW_API_PUBLIC dwStatus dwRenderer_reset(dwRendererHandle_t renderer)
Resets renderer state.
NVIDIA DriveWorks API: Core Types
float float32_t
Specifies POD types.
Definition: Types.h:77
DW_API_PUBLIC dwStatus dwRenderer_renderCircle(dwVector2f center, float32_t radius, dwRendererHandle_t obj)
Renders a 2D circle.
Defines a rectangle.
Definition: Types.h:151
const float32_t DW_RENDERER_COLOR_LIGHTBLUE[4]
Definition: Renderer.h:72
const float32_t DW_RENDER_COLORMAPSCALE_75M[3]
Color map scales - determine the bandwidth of the color spectum.
Definition: Renderer.h:80
Defines a three-element floating-point vector.
Definition: Types.h:225
Defines a two-element floating-point vector.
Definition: Types.h:207
DW_API_PUBLIC dwStatus dwRenderer_getLineWidth(float32_t *value, dwConstRendererHandle_t obj)
Gets current line width, in pixels.
const float32_t DW_RENDERER_COLOR_ORANGE[4]
Definition: Renderer.h:71
DW_API_PUBLIC dwStatus dwRenderer_renderSubTexture(const GLuint inputTexture, const GLenum textureTarget, const float32_t minx, const float32_t miny, const float32_t maxx, const float32_t maxy, dwRendererHandle_t obj)
Renders a subrect of a textured quad on the screen.
dwRenderBufferPositionSemantic posSemantic
Definition: Renderer.h:141
uint32_t GLuint
Definition: Image.h:59
DW_API_PUBLIC dwStatus dwRenderer_setLineWidth(const float32_t value, dwRendererHandle_t obj)
Sets current line width, in pixels.
uint32_t GLenum
Definition: Image.h:58
const float32_t DW_RENDERER_COLOR_RED[4]
Definition: Renderer.h:61
dwRenderBufferPositionSemantic
Vertex component semantics.
Definition: Renderer.h:113
const float32_t DW_RENDERER_COLOR_DARKRED[4]
Definition: Renderer.h:62
DW_API_PUBLIC dwStatus dwRenderBuffer_createView(uint32_t *slot, dwRenderBufferHandle_t renderbuffer, const dwRenderBufferVertexLayout newLayout, const dwRenderBufferPrimitiveType newPrimType, dwContextHandle_t context)
Creates an additional view for a render buffer, allowing you to change layout and primitive type...
const float32_t DW_RENDER_COLORMAPSCALE_150M[3]
Definition: Renderer.h:83
NVIDIA DriveWorks API: Core Methods
DW_API_PUBLIC dwStatus dwRenderer_getColorMapScale(float32_t colorMapScale[3], dwConstRendererHandle_t obj)
Gets current rendering color map scale.
DW_API_PUBLIC dwStatus dwRenderer_setRect(const dwRect rect, dwRendererHandle_t obj)
Sets current rendering screen area expressed in pixel values.
DW_API_PUBLIC dwStatus dwRenderBuffer_set2DCoordNormalizationFactors(const float32_t width, const float32_t height, dwRenderBufferHandle_t renderbuffer)
Sets 2D normalization values when 2D coordinates are specified in pixel values and not in 0...
DW_API_PUBLIC dwStatus dwRenderer_set2DTransform(const float32_t matrix[9], dwRendererHandle_t obj)
Sets current 2D transformation applied when rendering to the screen.
NVIDIA DriveWorks API: Core Exports
DW_API_PUBLIC dwStatus dwRenderer_release(dwRendererHandle_t *renderer)
Released the renderer.
const float32_t DW_RENDERER_COLOR_DARKBLUE[4]
Definition: Renderer.h:69
DW_API_PUBLIC dwStatus dwRenderBuffer_unmap(uint32_t nVerts, dwRenderBufferHandle_t renderbuffer)
After a map/mapRange, returns the updated buffer to the RenderBuffer structure and updates the GPU po...
DW_API_PUBLIC dwStatus dwRenderer_setPointSize(const float32_t value, dwRendererHandle_t obj)
Sets current point size.
const float32_t DW_RENDERER_COLOR_GREEN[4]
Definition: Renderer.h:64
dwRenderBufferColorSemantic
Vertex component semantics.
Definition: Renderer.h:120
dwRenderBufferFormat posFormat
Definition: Renderer.h:140
static const uint32_t DW_RENDERER_DEFAULT_BUFFER_SIZE
The maximum number of vertices that can be passed to a call dwRenderer_renderData3D() or dwRenderer_r...
Definition: Renderer.h:158
struct dwRenderBufferObject * dwRenderBufferHandle_t
Handle representing vertex data for rendering.
Definition: Renderer.h:161
dwRenderBufferFormat colFormat
Definition: Renderer.h:142
dwStatus
Status definition.
Definition: Status.h:167
const float32_t DW_RENDERER_COLOR_WHITE[4]
Definition: Renderer.h:65
const float32_t DW_RENDERER_COLOR_YELLOW[4]
Definition: Renderer.h:70
const float32_t DW_RENDERER_COLOR_DARKGREY[4]
Definition: Renderer.h:68
DW_API_PUBLIC dwStatus dwRenderer_renderText(const int32_t x, const int32_t y, const char *text, dwRendererHandle_t obj)
Renders a text line on the screen.
DW_API_PUBLIC dwStatus dwRenderer_renderData2D(const dwVector2f *buffer, size_t count, dwRenderBufferPrimitiveType primitiveType, dwRendererHandle_t obj)
Renders a set of 2D vertices.
const float32_t DW_RENDER_COLORMAPSCALE_130M[3]
Definition: Renderer.h:82
DW_API_PUBLIC dwStatus dwRenderer_setProjection(const float32_t matrix[16], dwRendererHandle_t obj)
Sets current projection matrix.
dwRenderBufferFormat texFormat
Definition: Renderer.h:144
DW_API_PUBLIC dwStatus dwRenderer_renderTexture(const GLuint inputTexture, const GLenum textureTarget, dwRendererHandle_t obj)
Renders a textured quad on the screen.
DW_API_PUBLIC dwStatus dwRenderer_renderBuffer(dwConstRenderBufferHandle_t buffer, dwRendererHandle_t obj)
Renders a RenderBuffer.
DW_API_PUBLIC dwStatus dwRenderer_getRect(dwRect *rect, dwConstRendererHandle_t obj)
Gets current rendering screen area expressed in pixel values.
const struct dwRenderBufferObject * dwConstRenderBufferHandle_t
Const handle representing vertex data for rendering.
Definition: Renderer.h:164
DW_API_PUBLIC dwStatus dwRenderer_setFont(const dwRendererFonts value, dwRendererHandle_t obj)
Sets current font.
const float32_t DW_RENDERER_COLOR_LIGHTGREEN[4]
Definition: Renderer.h:67
DW_API_PUBLIC dwStatus dwRenderer_setModelView(const float32_t matrix[16], dwRendererHandle_t obj)
Sets current ModelView matrix.
struct dwRendererObject * dwRendererHandle_t
Handle for the renderer.
Definition: Renderer.h:167
DW_API_PUBLIC dwStatus dwRenderer_getPointSize(float32_t *value, dwConstRendererHandle_t obj)
Gets current point size.
DW_API_PUBLIC dwStatus dwRenderer_getProjection(float32_t matrix[16], dwConstRendererHandle_t obj)
Gets current projection matrix.
static const uint32_t DW_RENDERBUFFER_MAX_VIEWS
The maximal number of views that can be created in with.
Definition: Renderer.h:76
const float32_t DW_RENDER_COLORMAPSCALE_100M[3]
Definition: Renderer.h:81
const float32_t DW_RENDERER_COLOR_BLUE[4]
Definition: Renderer.h:63
DW_API_PUBLIC dwStatus dwRenderer_initialize(dwRendererHandle_t *renderer, dwContextHandle_t context)
Initializes a Renderer.
dwRenderBufferPrimitiveType
Render primitives supported by the renderer.
Definition: Renderer.h:149
struct dwContextObject * dwContextHandle_t
Context handle.
Definition: Context.h:78
DW_API_PUBLIC dwStatus dwRenderer_getModelView(float32_t matrix[16], dwConstRendererHandle_t obj)
Gets current ModelView matrix.
DW_API_PUBLIC dwStatus dwRenderer_renderData3D(const dwVector3f *buffer, size_t count, dwRenderBufferPrimitiveType primitiveType, dwRendererHandle_t obj)
Renders a set of 3D vertices.
Vertex layout describing format and semantics for position, color, and texture.
Definition: Renderer.h:139
dwRendererFonts
Font types and sizes supported by the renderer.
Definition: Renderer.h:87
const float32_t DW_RENDERER_COLOR_BLACK[4]
Definition: Renderer.h:73
const float32_t DW_RENDERER_COLOR_DARKGREEN[4]
Definition: Renderer.h:66
dwRenderBufferColorSemantic colSemantic
Definition: Renderer.h:143
DW_API_PUBLIC dwStatus dwRenderer_setColor(const float32_t color[4], dwRendererHandle_t obj)
Sets current rendering color.
DW_API_PUBLIC dwStatus dwRenderer_setColorMapScale(const float32_t colorMapScale[3], dwRendererHandle_t obj)
Sets current rendering color mapping scale.
DW_API_PUBLIC dwStatus dwRenderer_renderTextNorm(const float32_t normX, const float32_t normY, const char *text, dwRendererHandle_t obj)
Renders a text line on the screen.
dwRenderBufferTexSemantic
Vertex component semantics.
Definition: Renderer.h:132
DW_API_PUBLIC dwStatus dwRenderer_get2DTransform(float32_t matrix[9], dwConstRendererHandle_t obj)
Gets current 2D transformation applied when rendering to the screen.
DW_API_PUBLIC dwStatus dwRenderBuffer_initialize(dwRenderBufferHandle_t *renderbuffer, const dwRenderBufferVertexLayout layout, const dwRenderBufferPrimitiveType primType, const uint32_t primCount, dwContextHandle_t context)
Initializes a RenderBuffer structure for rendering.
DW_API_PUBLIC dwStatus dwRenderer_getFont(dwRendererFonts *value, dwConstRendererHandle_t obj)
Gets current font.
#define DW_API_PUBLIC
Definition: Exports.h:76
DW_API_PUBLIC dwStatus dwRenderBuffer_release(dwRenderBufferHandle_t *renderbuffer)
Releases the RenderBuffer data structure.
NVIDIA DriveWorks API: Core Status Methods
DW_API_PUBLIC dwStatus dwRenderer_getColor(float32_t color[4], dwConstRendererHandle_t obj)
Gets current rendering color.
DW_API_PUBLIC dwStatus dwRenderBuffer_mapRange(float32_t **map, uint32_t *maxVertices, uint32_t *vertexStride, const uint32_t startVertex, dwRenderBufferHandle_t renderbuffer)
Maps a contiguous range of the CPU copy of a RenderBuffer to the application for updating.
DW_API_PUBLIC dwStatus dwRenderBuffer_map(float32_t **map, uint32_t *maxVertices, uint32_t *vertexStride, dwRenderBufferHandle_t renderbuffer)
Maps the CPU copy of a RenderBuffer to the application for updating.
dwRenderBufferTexSemantic texSemantic
Definition: Renderer.h:145