Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <campbell@blender.org>2022-01-31 05:01:29 +0300
committerCampbell Barton <campbell@blender.org>2022-01-31 06:10:08 +0300
commit8815f2f11632ea84d706bacd18e60639cb13d6eb (patch)
treea1f479191ee6388c023e99ad8780ada8d6d0562e /source/blender/editors/include/ED_view3d.h
parent9ccdad8a2173e14848fbfa5401210d8ffb074352 (diff)
Cleanup: use struct for GPU the select buffer
GPU_select originally used GL_SELECT which defined the format for storing the selection result. Now this is no longer the case, define our own struct - making the code easier to follow: - Avoid having to deal with arrays in both `uint*` and `uint(*)[4]` multiplying offsets by 4 in some cases & not others. - No magic numbers for the offsets of depth & selection-ID. - No need to allocate unused members to match GL_SELECT (halving the buffer size).
Diffstat (limited to 'source/blender/editors/include/ED_view3d.h')
-rw-r--r--source/blender/editors/include/ED_view3d.h14
1 files changed, 7 insertions, 7 deletions
diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h
index 0398c209c68..4e2eec3ffdd 100644
--- a/source/blender/editors/include/ED_view3d.h
+++ b/source/blender/editors/include/ED_view3d.h
@@ -41,6 +41,7 @@ struct Camera;
struct CustomData_MeshMasks;
struct Depsgraph;
struct EditBone;
+struct GPUSelectResult;
struct ID;
struct MVert;
struct Main;
@@ -873,7 +874,6 @@ bool ED_view3d_depth_read_cached_seg(
/* select */
#define MAXPICKELEMS 2500
-#define MAXPICKBUF (4 * MAXPICKELEMS)
typedef enum {
/* all elements in the region, ignore depth */
@@ -912,21 +912,21 @@ void view3d_opengl_select_cache_end(void);
* \note (vc->obedit == NULL) can be set to explicitly skip edit-object selection.
*/
int view3d_opengl_select_ex(struct ViewContext *vc,
- unsigned int *buffer,
- unsigned int bufsize,
+ struct GPUSelectResult *buffer,
+ unsigned int buffer_len,
const struct rcti *input,
eV3DSelectMode select_mode,
eV3DSelectObjectFilter select_filter,
bool do_material_slot_selection);
int view3d_opengl_select(struct ViewContext *vc,
- unsigned int *buffer,
- unsigned int bufsize,
+ struct GPUSelectResult *buffer,
+ unsigned int buffer_len,
const struct rcti *input,
eV3DSelectMode select_mode,
eV3DSelectObjectFilter select_filter);
int view3d_opengl_select_with_id_filter(struct ViewContext *vc,
- unsigned int *buffer,
- unsigned int bufsize,
+ struct GPUSelectResult *buffer,
+ unsigned int buffer_len,
const struct rcti *input,
eV3DSelectMode select_mode,
eV3DSelectObjectFilter select_filter,