2023-08-16 00:20:26 +10:00
|
|
|
/* SPDX-FileCopyrightText: 2023 Blender Authors
|
2023-05-31 16:19:06 +02:00
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
2018-07-15 10:34:31 +02:00
|
|
|
|
2019-02-18 08:08:12 +11:00
|
|
|
/** \file
|
|
|
|
|
* \ingroup gpu
|
2018-08-30 01:56:08 +10:00
|
|
|
*/
|
|
|
|
|
|
2018-07-15 10:34:31 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "BLI_compiler_attrs.h"
|
|
|
|
|
#include "BLI_sys_types.h"
|
|
|
|
|
|
2020-03-02 15:28:47 +01:00
|
|
|
struct rctf;
|
2024-03-26 03:06:25 +01:00
|
|
|
namespace blender::gpu {
|
|
|
|
|
class Batch;
|
|
|
|
|
}
|
2020-03-02 15:28:47 +01:00
|
|
|
|
2023-07-31 11:50:54 +10:00
|
|
|
/* `gpu_batch_utils.cc` */
|
2021-12-09 20:01:47 +11:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Creates triangles from a byte-array of polygons.
|
|
|
|
|
*
|
|
|
|
|
* See 'make_shape_2d_from_blend.py' utility to create data to pass to this function.
|
|
|
|
|
*
|
|
|
|
|
* \param polys_flat: Pairs of X, Y coordinates (repeating to signify closing the polygon).
|
|
|
|
|
* \param polys_flat_len: Length of the array (must be an even number).
|
|
|
|
|
* \param rect: Optional region to map the byte 0..255 coords to. When not set use -1..1.
|
|
|
|
|
*/
|
2024-03-26 03:06:25 +01:00
|
|
|
blender::gpu::Batch *GPU_batch_tris_from_poly_2d_encoded(const uchar *polys_flat,
|
|
|
|
|
uint polys_flat_len,
|
|
|
|
|
const rctf *rect) ATTR_WARN_UNUSED_RESULT
|
2018-07-15 10:34:31 +02:00
|
|
|
ATTR_NONNULL(1);
|
2024-03-26 03:06:25 +01:00
|
|
|
blender::gpu::Batch *GPU_batch_wire_from_poly_2d_encoded(const uchar *polys_flat,
|
|
|
|
|
uint polys_flat_len,
|
|
|
|
|
const rctf *rect) ATTR_WARN_UNUSED_RESULT
|
2018-07-15 10:34:31 +02:00
|
|
|
ATTR_NONNULL(1);
|
|
|
|
|
|
2025-02-12 18:55:10 +01:00
|
|
|
/**
|
|
|
|
|
* Create a batch of a unit cube (-1..+1).
|
|
|
|
|
* Only has position attribute.
|
|
|
|
|
*/
|
|
|
|
|
blender::gpu::Batch *GPU_batch_unit_cube() ATTR_WARN_UNUSED_RESULT;
|
|
|
|
|
|
2021-12-09 20:01:47 +11:00
|
|
|
/**
|
|
|
|
|
* Replacement for #gluSphere.
|
|
|
|
|
*
|
|
|
|
|
* \note Only use by draw manager. Use the presets function instead for interface.
|
|
|
|
|
*/
|
2024-03-26 03:06:25 +01:00
|
|
|
blender::gpu::Batch *gpu_batch_sphere(int lat_res, int lon_res) ATTR_WARN_UNUSED_RESULT;
|