vgl 1.0.0
Virtual Globe Library: API reference
Loading...
Searching...
No Matches
context.h
Go to the documentation of this file.
1/*
2 * SPDX-License-Identifier: MIT
3 * Copyright (c) 2026 Jeremiah van Oosten
4 *
5 * vgl context: the object that holds all library state (NFR-06), the packs it reads, and
6 * height queries (FR-03, FR-05, FR-06).
7 *
8 * A minimal host creates a context with an I/O interface, adds packs, and calls
9 * vgl_context_update once per frame. Packs load asynchronously; height queries start the loads
10 * they need and report VGL_RESULT_NOT_READY until finer data has arrived.
11 */
12#ifndef VGL_CONTEXT_H
13#define VGL_CONTEXT_H
14
15#include <vgl/base.h>
16#include <vgl/foundation.h>
17#include <vgl/geodesy.h>
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
23typedef struct vgl_context vgl_context;
24
54
75 vgl_context** out_context);
76
91
108 vgl_allocator_interface* out_allocator);
109
127 vgl_log_level level,
128 const char* message);
129
131typedef struct vgl_update_info
132{
133 uint32_t struct_size;
134 uint32_t reserved;
139
140/* ---------------------------------------------------------------------------------------- */
141/* View and update */
142/* ---------------------------------------------------------------------------------------- */
143
165
182
214 const vgl_dvec3* position,
215 vgl_dvec3* out_window);
216
241 const vgl_geodetic* geodetic,
242 vgl_dvec3* out_window);
243
260
278
279/* ---------------------------------------------------------------------------------------- */
280/* Packs */
281/* ---------------------------------------------------------------------------------------- */
282
283typedef struct vgl_pack vgl_pack;
284
287{
288 uint32_t struct_size;
291 int32_t priority;
294 const char* uri;
295 VGL_POINTER_PADDING(uri_padding)
297
306
327 const vgl_pack_create_info* info,
328 vgl_pack** out_pack);
329
342
359 vgl_pack_state* out_state,
360 vgl_result* out_failure);
361
378
391VGL_API vgl_result vgl_pack_priority_get(const vgl_pack* pack, int32_t* out_priority);
392
409
422VGL_API vgl_result vgl_pack_opacity_get(const vgl_pack* pack, float* out_opacity);
423
424/* ---------------------------------------------------------------------------------------- */
425/* Height and ray queries */
426/* ---------------------------------------------------------------------------------------- */
427
434
465 double latitude,
466 double longitude,
467 vgl_height_reference reference,
468 double* out_height);
469
480
510 const vgl_dvec3* origin,
511 const vgl_dvec3* direction,
512 vgl_ray_hit* out_hit);
513
514/* ---------------------------------------------------------------------------------------- */
515/* Attribution */
516/* ---------------------------------------------------------------------------------------- */
517
540 uint32_t* inout_count,
541 const char** out_strings);
542
543/* ---------------------------------------------------------------------------------------- */
544/* Statistics */
545/* ---------------------------------------------------------------------------------------- */
546
597
612 vgl_context_statistics* out_statistics);
613
614#ifdef __cplusplus
615}
616#endif
617
618#endif /* VGL_CONTEXT_H */
vgl_result
Definition base.h:98
#define VGL_API
Definition base.h:28
#define VGL_POINTER_PADDING(name)
Definition base.h:46
struct vgl_pack vgl_pack
Definition context.h:283
vgl_result vgl_pack_opacity_set(vgl_pack *pack, float opacity)
vgl_result vgl_pack_priority_get(const vgl_pack *pack, int32_t *out_priority)
vgl_result vgl_context_log(const vgl_context *context, vgl_log_level level, const char *message)
vgl_result vgl_view_geodetic_project(const vgl_view *view, const vgl_ellipsoid *ellipsoid, const vgl_geodetic *geodetic, vgl_dvec3 *out_window)
vgl_result vgl_context_allocator_get(const vgl_context *context, vgl_allocator_interface *out_allocator)
vgl_height_reference
Definition context.h:429
@ VGL_HEIGHT_REFERENCE_ELLIPSOID
Definition context.h:430
@ VGL_HEIGHT_REFERENCE_MEAN_SEA_LEVEL
Definition context.h:431
@ VGL_HEIGHT_REFERENCE_MAX_ENUM
Definition context.h:432
struct vgl_context vgl_context
Definition context.h:23
vgl_result vgl_context_attribution_get(const vgl_context *context, uint32_t *inout_count, const char **out_strings)
vgl_result vgl_pack_create(vgl_context *context, const vgl_pack_create_info *info, vgl_pack **out_pack)
vgl_result vgl_context_create(const vgl_context_create_info *info, vgl_context **out_context)
vgl_result vgl_context_view_get(const vgl_context *context, vgl_view *out_view)
vgl_result vgl_view_project(const vgl_view *view, const vgl_dvec3 *position, vgl_dvec3 *out_window)
vgl_result vgl_context_destroy(vgl_context *context)
vgl_result vgl_context_height_query(vgl_context *context, double latitude, double longitude, vgl_height_reference reference, double *out_height)
vgl_result vgl_context_statistics_get(const vgl_context *context, vgl_context_statistics *out_statistics)
vgl_result vgl_context_update(vgl_context *context, const vgl_update_info *info)
vgl_result vgl_pack_destroy(vgl_pack *pack)
vgl_result vgl_context_view_set(vgl_context *context, const vgl_view *view)
vgl_result vgl_pack_state_get(const vgl_pack *pack, vgl_pack_state *out_state, vgl_result *out_failure)
vgl_result vgl_pack_priority_set(vgl_pack *pack, int32_t priority)
vgl_result vgl_pack_opacity_get(const vgl_pack *pack, float *out_opacity)
vgl_pack_state
Definition context.h:300
@ VGL_PACK_STATE_MAX_ENUM
Definition context.h:304
@ VGL_PACK_STATE_LOADING
Definition context.h:301
@ VGL_PACK_STATE_READY
Definition context.h:302
@ VGL_PACK_STATE_FAILED
Definition context.h:303
vgl_result vgl_context_ray_query(vgl_context *context, const vgl_dvec3 *origin, const vgl_dvec3 *direction, vgl_ray_hit *out_hit)
vgl_log_level
Definition foundation.h:19
void(* vgl_log_fn)(void *user_data, vgl_log_level level, const char *message)
Definition foundation.h:39
Definition foundation.h:49
Definition context.h:27
const vgl_io_interface * io
Definition context.h:37
vgl_log_fn log
Definition context.h:46
void * log_user_data
Definition context.h:48
uint32_t struct_size
Definition context.h:28
vgl_log_level log_level
Definition context.h:30
const vgl_ellipsoid * ellipsoid
Definition context.h:43
const vgl_task_interface * tasks
Definition context.h:40
const vgl_allocator_interface * allocator
Definition context.h:34
uint64_t cpu_budget
Definition context.h:32
uint64_t gpu_budget
Definition context.h:52
Definition context.h:552
uint32_t meshes_waiting
Definition context.h:571
uint32_t struct_size
Definition context.h:553
uint32_t meshes_building
Definition context.h:570
uint32_t reads_outstanding
Definition context.h:567
uint32_t textures_decoding
Definition context.h:572
uint32_t tiles_decoding
Definition context.h:568
double tile_load_time_mean
Definition context.h:593
uint32_t resources_resident
Definition context.h:574
uint32_t tiles_selected
Definition context.h:577
uint64_t gpu_used
Definition context.h:559
double update_time
Definition context.h:594
uint64_t tiles_loaded_total
Definition context.h:590
uint64_t vertices_drawn
Definition context.h:584
uint64_t bytes_created
Definition context.h:583
uint32_t tiles_drawn
Definition context.h:580
uint32_t packs_failed
Definition context.h:564
uint32_t resources_created
Definition context.h:581
uint64_t triangles_drawn
Definition context.h:585
uint32_t resources_destroyed
Definition context.h:582
uint32_t reserved
Definition context.h:554
uint64_t reads_total
Definition context.h:588
uint32_t packs_loading
Definition context.h:563
uint32_t tiles_decoded
Definition context.h:569
uint64_t cpu_budget
Definition context.h:558
double frame_time
Definition context.h:595
uint64_t gpu_budget
Definition context.h:560
uint64_t cpu_used
Definition context.h:557
uint32_t textures_waiting
Definition context.h:573
uint64_t bytes_read_total
Definition context.h:589
Definition base.h:88
Definition base.h:69
Definition geodesy.h:36
Definition geodesy.h:43
Definition foundation.h:102
Definition context.h:287
uint32_t struct_size
Definition context.h:288
const char * uri
Definition context.h:294
int32_t priority
Definition context.h:291
Definition context.h:473
vgl_geodetic geodetic
Definition context.h:478
vgl_dvec3 position
Definition context.h:477
double distance
Definition context.h:476
uint32_t struct_size
Definition context.h:474
uint32_t reserved
Definition context.h:475
Definition foundation.h:232
Definition context.h:132
double time_budget
Definition context.h:137
uint32_t struct_size
Definition context.h:133
uint32_t reserved
Definition context.h:134
Definition context.h:152
uint32_t viewport_height
Definition context.h:161
uint32_t viewport_width
Definition context.h:160
uint32_t reserved
Definition context.h:154
double max_screen_space_error
Definition context.h:163
uint32_t struct_size
Definition context.h:153
vgl_dmat4 projection_matrix
Definition context.h:158
vgl_dmat4 view_matrix
Definition context.h:156