From dc33a58225e740137e5c2e13d37a0cc9ea5b06a3 Mon Sep 17 00:00:00 2001 From: Kp Date: Sat, 8 Jul 2017 18:17:49 +0000 Subject: [PATCH] Use array<> in more places --- common/include/u_mem.h | 4 +- similar/arch/ogl/gr.cpp | 28 +++++++------- similar/arch/ogl/ogl.cpp | 82 ++++++++++++++++------------------------ 3 files changed, 49 insertions(+), 65 deletions(-) diff --git a/common/include/u_mem.h b/common/include/u_mem.h index 865376838..4f449461d 100644 --- a/common/include/u_mem.h +++ b/common/include/u_mem.h @@ -137,9 +137,7 @@ class RAIIdmem : public std::unique_ptr> { typedef std::unique_ptr> base_ptr; public: - typedef typename base_ptr::element_type element_type; - typedef typename base_ptr::pointer pointer; - static_assert(std::is_pod::value, "RAIIdmem cannot manage non-POD"); + static_assert(std::is_pod::value, "RAIIdmem cannot manage non-POD"); DXX_INHERIT_CONSTRUCTORS(RAIIdmem, base_ptr); }; diff --git a/similar/arch/ogl/gr.cpp b/similar/arch/ogl/gr.cpp index 92a38efba..3b6ed5d3a 100644 --- a/similar/arch/ogl/gr.cpp +++ b/similar/arch/ogl/gr.cpp @@ -820,10 +820,10 @@ namespace dcx { void ogl_upixelc(const grs_bitmap &cv_bitmap, unsigned x, unsigned y, unsigned c) { - GLfloat vertices[] = { + array vertices = {{ (x + cv_bitmap.bm_x) / static_cast(last_width), static_cast(1.0 - (y + cv_bitmap.bm_y) / static_cast(last_height)) - }; + }}; const auto cr = static_cast(CPAL2Tr(c)); const auto cg = static_cast(CPAL2Tg(c)); const auto cb = static_cast(CPAL2Tb(c)); @@ -838,7 +838,7 @@ void ogl_upixelc(const grs_bitmap &cv_bitmap, unsigned x, unsigned y, unsigned c glPointSize(linedotscale); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); - glVertexPointer(2, GL_FLOAT, 0, vertices); + glVertexPointer(2, GL_FLOAT, 0, vertices.data()); glColorPointer(4, GL_FLOAT, 0, color_array); glDrawArrays(GL_POINTS, 0, 1); glDisableClientState(GL_VERTEX_ARRAY); @@ -898,7 +898,6 @@ void ogl_urect(grs_canvas &canvas, const int left, const int top, const int righ vertices[5] = yf; vertices[6] = xf; vertices[7] = yo; - glVertexPointer(2, GL_FLOAT, 0, vertices.data()); glColorPointer(4, GL_FLOAT, 0, color_array.data()); glDrawArrays(GL_TRIANGLE_FAN, 0, 4);//replaced GL_QUADS @@ -917,7 +916,6 @@ void ogl_ulinec(grs_canvas &canvas, const int left, const int top, const int rig static_cast(CPAL2Tr(c)), static_cast(CPAL2Tg(c)), static_cast(CPAL2Tb(c)), 1.0, static_cast(CPAL2Tr(c)), static_cast(CPAL2Tg(c)), static_cast(CPAL2Tb(c)), fade_alpha }; - GLfloat vertices[] = { 0.0, 0.0, 0.0, 0.0 }; glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); @@ -929,12 +927,14 @@ void ogl_ulinec(grs_canvas &canvas, const int left, const int top, const int rig OGL_DISABLE(TEXTURE_2D); - vertices[0] = xo; - vertices[1] = yo; - vertices[2] = xf; - vertices[3] = yf; + array vertices = {{ + xo, + yo, + xf, + yf, + }}; - glVertexPointer(2, GL_FLOAT, 0, vertices); + glVertexPointer(2, GL_FLOAT, 0, vertices.data()); glColorPointer(4, GL_FLOAT, 0, color_array); glDrawArrays(GL_LINES, 0, 2); glDisableClientState(GL_VERTEX_ARRAY); @@ -947,7 +947,6 @@ static int do_pal_step; void ogl_do_palfx(void) { GLfloat color_array[] = { last_r, last_g, last_b, 1.0, last_r, last_g, last_b, 1.0, last_r, last_g, last_b, 1.0, last_r, last_g, last_b, 1.0 }; - GLfloat vertices[] = { 0,0,0,1,1,1,1,0 }; OGL_DISABLE(TEXTURE_2D); @@ -961,8 +960,11 @@ void ogl_do_palfx(void) } else return; - - glVertexPointer(2, GL_FLOAT, 0, vertices); + + array vertices = {{ + 0, 0, 0, 1, 1, 1, 1, 0 + }}; + glVertexPointer(2, GL_FLOAT, 0, vertices.data()); glColorPointer(4, GL_FLOAT, 0, color_array); glDrawArrays(GL_TRIANGLE_FAN, 0, 4);//replaced GL_QUADS glDisableClientState(GL_VERTEX_ARRAY); diff --git a/similar/arch/ogl/ogl.cpp b/similar/arch/ogl/ogl.cpp index 2b86fa298..325d5f296 100644 --- a/similar/arch/ogl/ogl.cpp +++ b/similar/arch/ogl/ogl.cpp @@ -535,10 +535,6 @@ void g3_draw_line(grs_canvas &canvas, const g3s_point &p0, const g3s_point &p1, { GLfloat color_r, color_g, color_b; GLfloat color_array[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; - GLfloat vertices[] = { - f2glf(p0.p3_vec.x), f2glf(p0.p3_vec.y), -f2glf(p0.p3_vec.z), - f2glf(p1.p3_vec.x), f2glf(p1.p3_vec.y), -f2glf(p1.p3_vec.z) - }; ogl_client_states cs; OGL_DISABLE(TEXTURE_2D); @@ -549,14 +545,16 @@ void g3_draw_line(grs_canvas &canvas, const g3s_point &p0, const g3s_point &p1, color_array[1] = color_array[5] = color_g; color_array[2] = color_array[6] = color_b; color_array[3] = color_array[7] = 1.0; - glVertexPointer(3, GL_FLOAT, 0, vertices); + array vertices = {{ + f2glf(p0.p3_vec.x), f2glf(p0.p3_vec.y), -f2glf(p0.p3_vec.z), + f2glf(p1.p3_vec.x), f2glf(p1.p3_vec.y), -f2glf(p1.p3_vec.z) + }}; + glVertexPointer(3, GL_FLOAT, 0, vertices.data()); glColorPointer(4, GL_FLOAT, 0, color_array); glDrawArrays(GL_LINES, 0, 2); } -} - -static void ogl_drawcircle(int nsides, int type, GLfloat *vertices) +static void ogl_drawcircle(const unsigned nsides, const unsigned type, GLfloat *const vertices) { glEnableClientState(GL_VERTEX_ARRAY); glVertexPointer(2, GL_FLOAT, 0, vertices); @@ -564,34 +562,32 @@ static void ogl_drawcircle(int nsides, int type, GLfloat *vertices) glDisableClientState(GL_VERTEX_ARRAY); } -static std::unique_ptr circle_array_init(int nsides) +static std::unique_ptr circle_array_init(const unsigned nsides) { - int i; - float ang; auto vertices = make_unique(nsides * 2); - for(i = 0; i < nsides; i++) { - ang = 2.0 * M_PI * i / nsides; + for (unsigned i = 0; i < nsides; i++) + { + const float ang = 2.0 * M_PI * i / nsides; vertices[i * 2] = cosf(ang); - vertices[i * 2 + 1] = sinf(ang); + vertices[i * 2 + 1] = sinf(ang); } - return vertices; } -static std::unique_ptr circle_array_init_2(int nsides, float xsc, float xo, float ysc, float yo) +static std::unique_ptr circle_array_init_2(const unsigned nsides, const float xsc, const float xo, const float ysc, const float yo) { - int i; - float ang; auto vertices = make_unique(nsides * 2); - for(i = 0; i < nsides; i++) { - ang = 2.0 * M_PI * i / nsides; + for (unsigned i = 0; i < nsides; i++) + { + const float ang = 2.0 * M_PI * i / nsides; vertices[i * 2] = cosf(ang) * xsc + xo; vertices[i * 2 + 1] = sinf(ang) * ysc + yo; } - return vertices; } +} + void ogl_draw_vertex_reticle(int cross,int primary,int secondary,int color,int alpha,int size_offs) { int size=270+(size_offs*20); @@ -775,8 +771,7 @@ void g3_draw_sphere(grs_canvas &canvas, g3s_point &pnt, fix rad, const uint8_t c { int i; const float scale = (static_cast(canvas.cv_bitmap.bm_w) / canvas.cv_bitmap.bm_h); - GLfloat color_array[20*4]; - + array color_array; for (i = 0; i < 20*4; i += 4) { color_array[i] = CPAL2Tr(c); @@ -805,7 +800,7 @@ void g3_draw_sphere(grs_canvas &canvas, g3s_point &pnt, fix rad, const uint8_t c if(!sphere_va) sphere_va = circle_array_init(20); glEnableClientState(GL_COLOR_ARRAY); - glColorPointer(4, GL_FLOAT, 0, color_array); + glColorPointer(4, GL_FLOAT, 0, color_array.data()); ogl_drawcircle(20, GL_TRIANGLE_FAN, sphere_va.get()); glDisableClientState(GL_COLOR_ARRAY); glPopMatrix(); @@ -862,9 +857,9 @@ void _g3_draw_poly(grs_canvas &canvas, const uint_fast32_t nv, cg3s_point *const GLfloat r, g, b, a; }; static_assert(sizeof(cfloat) == sizeof(GLfloat) * 4, "cfloat size wrong"); - RAIIdmem vertices, color_array; + RAIIdmem color_array; - MALLOC(vertices, GLfloat[], nv*3); + auto &&vertices = make_unique(nv * 3); MALLOC(color_array, GLfloat[], nv*4); r_polyc++; @@ -890,7 +885,7 @@ void _g3_draw_poly(grs_canvas &canvas, const uint_fast32_t nv, cg3s_point *const varray[c].z = -f2glf(p.z); } - glVertexPointer(3, GL_FLOAT, 0, vertices.get()); + glVertexPointer(3, GL_FLOAT, 0, varray); glColorPointer(4, GL_FLOAT, 0, color_array.get()); glDrawArrays(GL_TRIANGLE_FAN, 0, nv); } @@ -939,14 +934,12 @@ void _g3_draw_tmap(grs_canvas &canvas, const unsigned nv, cg3s_point *const *con color_array[index4] = 0; color_array[index4+1] = color_array[index4]; color_array[index4+2] = color_array[index4]; - color_array[index4+3] = color_alpha; - } else { color_array[index4] = bm.get_flag_mask(BM_FLAG_NO_LIGHTING) ? 1.0 : f2glf(light_rgb[c].r); color_array[index4+1] = bm.get_flag_mask(BM_FLAG_NO_LIGHTING) ? 1.0 : f2glf(light_rgb[c].g); color_array[index4+2] = bm.get_flag_mask(BM_FLAG_NO_LIGHTING) ? 1.0 : f2glf(light_rgb[c].b); - color_array[index4+3] = color_alpha; } + color_array[index4+3] = color_alpha; texcoord_array[index2] = f2glf(uvl_list[c].u); texcoord_array[index2+1] = f2glf(uvl_list[c].v); } @@ -1373,13 +1366,11 @@ static void ogl_filltexbuf(const palette_array_t &pal, const uint8_t *data, GLub { switch (type) { - case GL_LUMINANCE_ALPHA: - (*(texp++)) = 255; - (*(texp++)) = 0; - break; case GL_RGBA: (*(texp++)) = 255; (*(texp++)) = 255; + //-fallthrough + case GL_LUMINANCE_ALPHA: (*(texp++)) = 255; (*(texp++)) = 0; // transparent pixel break; @@ -1397,22 +1388,16 @@ static void ogl_filltexbuf(const palette_array_t &pal, const uint8_t *data, GLub { switch (type) { - case GL_LUMINANCE: - (*(texp++))=0; - break; - case GL_LUMINANCE_ALPHA: - (*(texp++))=0; - (*(texp++))=0; - break; - case GL_RGB: - (*(texp++)) = 0; - (*(texp++)) = 0; - (*(texp++)) = 0; - break; case GL_RGBA: (*(texp++))=0; + //-fallthrough + case GL_RGB: (*(texp++))=0; + //-fallthrough + case GL_LUMINANCE_ALPHA: (*(texp++))=0; + //-fallthrough + case GL_LUMINANCE: (*(texp++))=0;//transparent pixel break; #if !DXX_USE_OGLES @@ -1429,11 +1414,10 @@ static void ogl_filltexbuf(const palette_array_t &pal, const uint8_t *data, GLub { switch (type) { - case GL_LUMINANCE://these could prolly be done to make the intensity based upon the intensity of the resulting color, but its not needed for anything (yet?) so no point. :) - (*(texp++))=255; - break; case GL_LUMINANCE_ALPHA: (*(texp++))=255; + //-fallthrough + case GL_LUMINANCE://these could prolly be done to make the intensity based upon the intensity of the resulting color, but its not needed for anything (yet?) so no point. :) (*(texp++))=255; break; case GL_RGB: