DRW: Convert DRW_cache_circle_get to use GWN_PRIM_LINE_LOOP
authorClément Foucault <foucault.clem@gmail.com>
Fri, 27 Apr 2018 14:28:49 +0000 (16:28 +0200)
committerClément Foucault <foucault.clem@gmail.com>
Wed, 2 May 2018 18:49:38 +0000 (20:49 +0200)
source/blender/draw/intern/draw_cache.c

index 587bcac1029bf40258b053a7984a3c3fda2eb7ae..1dd588afc9f0af7e807caacb1e4808669c9d8e11 100644 (file)
@@ -130,6 +130,7 @@ const float n1[3], const float n2[3])
        GWN_vertbuf_attr_set(vbo, pos_id, (*v_idx)++, co2);
 }
 
+#if 0 /* UNUSED */
 static void add_lat_lon_vert(
         Gwn_VertBuf *vbo, unsigned int pos_id, unsigned int nor_id,
         unsigned int *v_idx, const float rad, const float lat, const float lon)
@@ -143,6 +144,7 @@ static void add_lat_lon_vert(
        GWN_vertbuf_attr_set(vbo, nor_id, *v_idx, nor);
        GWN_vertbuf_attr_set(vbo, pos_id, (*v_idx)++, pos);
 }
+#endif
 
 static Gwn_VertBuf *fill_arrows_vbo(const float scale)
 {
@@ -347,7 +349,7 @@ Gwn_Batch *DRW_cache_cube_get(void)
 
 Gwn_Batch *DRW_cache_circle_get(void)
 {
-#define CIRCLE_RESOL 32
+#define CIRCLE_RESOL 64
        if (!SHC.drw_circle) {
                float v[3] = {0.0f, 0.0f, 0.0f};
 
@@ -359,21 +361,16 @@ Gwn_Batch *DRW_cache_circle_get(void)
                }
 
                Gwn_VertBuf *vbo = GWN_vertbuf_create_with_format(&format);
-               GWN_vertbuf_data_alloc(vbo, CIRCLE_RESOL * 2);
+               GWN_vertbuf_data_alloc(vbo, CIRCLE_RESOL);
 
                for (int a = 0; a < CIRCLE_RESOL; a++) {
                        v[0] = sinf((2.0f * M_PI * a) / ((float)CIRCLE_RESOL));
                        v[2] = cosf((2.0f * M_PI * a) / ((float)CIRCLE_RESOL));
                        v[1] = 0.0f;
-                       GWN_vertbuf_attr_set(vbo, attr_id.pos, a * 2, v);
-
-                       v[0] = sinf((2.0f * M_PI * (a + 1)) / ((float)CIRCLE_RESOL));
-                       v[2] = cosf((2.0f * M_PI * (a + 1)) / ((float)CIRCLE_RESOL));
-                       v[1] = 0.0f;
-                       GWN_vertbuf_attr_set(vbo, attr_id.pos, a * 2 + 1, v);
+                       GWN_vertbuf_attr_set(vbo, attr_id.pos, a, v);
                }
 
-               SHC.drw_circle = GWN_batch_create_ex(GWN_PRIM_LINES, vbo, NULL, GWN_BATCH_OWNS_VBO);
+               SHC.drw_circle = GWN_batch_create_ex(GWN_PRIM_LINE_LOOP, vbo, NULL, GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_circle;
 #undef CIRCLE_RESOL