Changeset 1243


Ignore:
Timestamp:
Apr 21, 2012, 10:18:11 AM (9 years ago)
Author:
sam
Message:

core: add a simple Array template class.

Location:
trunk
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/core.h

    r1237 r1243  
    7171#include "timer.h"
    7272#include "thread/thread.h"
     73#include "array.h"
    7374
    7475// Static classes
  • trunk/test/tutorial/01_triangle.cpp

    r1242 r1243  
    3737    Triangle()
    3838    {
    39         m_vertices[0] = vec2( 0.0,  0.8);
    40         m_vertices[1] = vec2(-0.8, -0.8);
    41         m_vertices[2] = vec2( 0.8, -0.8);
     39        m_vertices += vec2( 0.0,  0.8);
     40        m_vertices += vec2(-0.8, -0.8);
     41        m_vertices += vec2( 0.8, -0.8);
    4242        m_ready = false;
    4343    }
     
    7676            m_vdecl = new VertexDeclaration(VertexStream<vec2>(VertexUsage::Position));
    7777
    78             m_vbo = new VertexBuffer(sizeof(m_vertices));
     78            m_vbo = new VertexBuffer(m_vertices.Bytes());
    7979            void *vertices = m_vbo->Lock(0, 0);
    80             memcpy(vertices, m_vertices, sizeof(m_vertices));
     80            memcpy(vertices, &m_vertices[0], m_vertices.Bytes());
    8181            m_vbo->Unlock();
    8282
     
    9494
    9595private:
    96     vec2 m_vertices[3];
     96    Array<vec2> m_vertices;
    9797    Shader *m_shader;
    9898    ShaderAttrib m_coord;
  • trunk/test/tutorial/02_cube.cpp

    r1242 r1243  
    4949
    5050        /* Front vertices/colors */
    51         m_mesh[0] = vec3(-1.0, -1.0,  1.0); m_mesh[1] = vec3(1.0, 0.0, 1.0);
    52         m_mesh[2] = vec3( 1.0, -1.0,  1.0); m_mesh[3] = vec3(0.0, 1.0, 0.0);
    53         m_mesh[4] = vec3( 1.0,  1.0,  1.0); m_mesh[5] = vec3(1.0, 0.5, 0.0);
    54         m_mesh[6] = vec3(-1.0,  1.0,  1.0); m_mesh[7] = vec3(1.0, 1.0, 0.0);
     51        m_mesh += vec3(-1.0, -1.0,  1.0); m_mesh += vec3(1.0, 0.0, 1.0);
     52        m_mesh += vec3( 1.0, -1.0,  1.0); m_mesh += vec3(0.0, 1.0, 0.0);
     53        m_mesh += vec3( 1.0,  1.0,  1.0); m_mesh += vec3(1.0, 0.5, 0.0);
     54        m_mesh += vec3(-1.0,  1.0,  1.0); m_mesh += vec3(1.0, 1.0, 0.0);
    5555        /* Back */
    56         m_mesh[8]  = vec3(-1.0, -1.0, -1.0); m_mesh[9]  = vec3(1.0, 0.0, 0.0);
    57         m_mesh[10] = vec3( 1.0, -1.0, -1.0); m_mesh[11] = vec3(0.0, 0.5, 0.0);
    58         m_mesh[12] = vec3( 1.0,  1.0, -1.0); m_mesh[13] = vec3(0.0, 0.5, 1.0);
    59         m_mesh[14] = vec3(-1.0,  1.0, -1.0); m_mesh[15] = vec3(0.0, 0.0, 1.0);
    60 
    61         m_indices[0] = i16vec3(0, 1, 2);
    62         m_indices[1] = i16vec3(2, 3, 0);
    63         m_indices[2] = i16vec3(1, 5, 6);
    64         m_indices[3] = i16vec3(6, 2, 1);
    65         m_indices[4] = i16vec3(7, 6, 5);
    66         m_indices[5] = i16vec3(5, 4, 7);
    67         m_indices[6] = i16vec3(4, 0, 3);
    68         m_indices[7] = i16vec3(3, 7, 4);
    69         m_indices[8] = i16vec3(4, 5, 1);
    70         m_indices[9] = i16vec3(1, 0, 4);
    71         m_indices[10] = i16vec3(3, 2, 6);
    72         m_indices[11] = i16vec3(6, 7, 3);
     56        m_mesh += vec3(-1.0, -1.0, -1.0); m_mesh += vec3(1.0, 0.0, 0.0);
     57        m_mesh += vec3( 1.0, -1.0, -1.0); m_mesh += vec3(0.0, 0.5, 0.0);
     58        m_mesh += vec3( 1.0,  1.0, -1.0); m_mesh += vec3(0.0, 0.5, 1.0);
     59        m_mesh += vec3(-1.0,  1.0, -1.0); m_mesh += vec3(0.0, 0.0, 1.0);
     60
     61        m_indices += i16vec3(0, 1, 2);
     62        m_indices += i16vec3(2, 3, 0);
     63        m_indices += i16vec3(1, 5, 6);
     64        m_indices += i16vec3(6, 2, 1);
     65        m_indices += i16vec3(7, 6, 5);
     66        m_indices += i16vec3(5, 4, 7);
     67        m_indices += i16vec3(4, 0, 3);
     68        m_indices += i16vec3(3, 7, 4);
     69        m_indices += i16vec3(4, 5, 1);
     70        m_indices += i16vec3(1, 0, 4);
     71        m_indices += i16vec3(3, 2, 6);
     72        m_indices += i16vec3(6, 7, 3);
    7373
    7474        m_ready = false;
     
    140140                                                            VertexUsage::Color));
    141141
    142             m_vbo = new VertexBuffer(sizeof(m_mesh));
     142            m_vbo = new VertexBuffer(m_mesh.Bytes());
    143143            void *mesh = m_vbo->Lock(0, 0);
    144             memcpy(mesh, m_mesh, sizeof(m_mesh));
     144            memcpy(mesh, &m_mesh[0], m_mesh.Bytes());
    145145            m_vbo->Unlock();
    146146
     
    149149            glGenBuffers(1, &m_ibo);
    150150            glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_ibo);
    151             glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(m_indices), m_indices,
    152                          GL_STATIC_DRAW);
     151            glBufferData(GL_ELEMENT_ARRAY_BUFFER, m_indices.Bytes(),
     152                         &m_indices[0], GL_STATIC_DRAW);
    153153#elif defined _XBOX || defined USE_D3D9
    154154            int16_t *indices;
    155             if (FAILED(g_d3ddevice->CreateIndexBuffer(sizeof(m_indices), D3DUSAGE_WRITEONLY, D3DFMT_INDEX16, D3DPOOL_MANAGED, &m_ibo, NULL)))
     155            if (FAILED(g_d3ddevice->CreateIndexBuffer(m_indices.Bytes(), D3DUSAGE_WRITEONLY, D3DFMT_INDEX16, D3DPOOL_MANAGED, &m_ibo, NULL)))
    156156                Abort();
    157157            if (FAILED(m_ibo->Lock(0, 0, (void **)&indices, 0)))
    158158                Abort();
    159             memcpy(indices, m_indices, sizeof(m_indices));
     159            memcpy(indices, &m_indices[0], m_indices.Bytes());
    160160            m_ibo->Unlock();
    161161#else
     
    179179        if (FAILED(g_d3ddevice->SetIndices(m_ibo)))
    180180            Abort();
    181         if (FAILED(g_d3ddevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 8, 0, sizeof(m_indices) / sizeof(*m_indices))))
     181        if (FAILED(g_d3ddevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 8, 0, m_indices.Count())))
    182182            Abort();
    183183#elif !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__
     
    202202    float m_angle;
    203203    mat4 m_matrix;
    204     vec3 m_mesh[16];
    205     i16vec3 m_indices[12];
     204    Array<vec3> m_mesh;
     205    Array<i16vec3> m_indices;
    206206    Shader *m_shader;
    207207    ShaderAttrib m_coord, m_color;
Note: See TracChangeset for help on using the changeset viewer.