Gawain: remove GL enum from primitive API
[blender.git] / intern / gawain / gawain / primitive.h
1
2 // Gawain geometric primitives
3 //
4 // This code is part of the Gawain library, with modifications
5 // specific to integration with Blender.
6 //
7 // Copyright 2017 Mike Erwin
8 //
9 // This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of
10 // the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
11
12 #pragma once
13
14 #include "common.h"
15
16 typedef enum {
17         PRIM_POINTS,
18         PRIM_LINES,
19         PRIM_TRIANGLES,
20         PRIM_LINE_STRIP,
21         PRIM_LINE_LOOP, // GL has this, Vulkan does not
22         PRIM_TRIANGLE_STRIP,
23         PRIM_TRIANGLE_FAN,
24
25         PRIM_LINE_STRIP_ADJACENCY,
26
27 #ifdef WITH_GL_PROFILE_COMPAT
28         PRIM_QUADS_XXX, // legacy GL has this, modern GL & Vulkan do not
29 #endif
30
31         PRIM_NONE
32 } PrimitiveType;
33
34 // what types of primitives does each shader expect?
35 typedef enum {
36         PRIM_CLASS_NONE    = 0,
37         PRIM_CLASS_POINT   = (1 << 0),
38         PRIM_CLASS_LINE    = (1 << 1),
39         PRIM_CLASS_SURFACE = (1 << 2),
40         PRIM_CLASS_ANY     = PRIM_CLASS_POINT | PRIM_CLASS_LINE | PRIM_CLASS_SURFACE
41 } PrimitiveClass;
42
43 PrimitiveClass prim_class_of_type(PrimitiveType);
44 bool prim_type_belongs_to_class(PrimitiveType, PrimitiveClass);
45
46 GLenum convert_prim_type_to_gl(PrimitiveType);