~hikiko/nux/arb-srgba-shader

« back to all changes in this revision

Viewing changes to NuxGraphics/MeshData.cpp

  • Committer: Travis Watkins
  • Date: 2011-08-03 10:34:36 UTC
  • mfrom: (409 nux-logger-fix)
  • mto: (454.5.1 nux-gles)
  • mto: This revision was merged to the branch mainline in revision 501.
  • Revision ID: travis.watkins@linaro.org-20110803103436-biz9c9930l2refsi
merge with lp:nux

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
    NUX_SAFE_DELETE_ARRAY(_index_data);
20
20
  }
21
21
 
22
 
  bool MeshData::Allocate(int num_index, int index_size, int num_element, int element_size)
 
22
  bool MeshData::Allocate(int num_mesh_primitive, NuxMeshPrimitiveType primitive_type, int num_element, int element_size)
23
23
  {
24
 
    NUX_RETURN_VALUE_IF_FALSE(num_index >0, false);
25
 
    NUX_RETURN_VALUE_IF_FALSE(index_size >0, false);
26
 
    NUX_RETURN_VALUE_IF_FALSE(num_element >0, false);
27
 
    NUX_RETURN_VALUE_IF_FALSE(element_size >0, false);
 
24
    NUX_RETURN_VALUE_IF_FALSE(num_element > 0, false);
 
25
    NUX_RETURN_VALUE_IF_FALSE(element_size > 0, false);
28
26
 
29
27
    NUX_SAFE_DELETE_ARRAY(_vertex_data);
30
28
    NUX_SAFE_DELETE_ARRAY(_index_data);
31
29
 
32
30
    _num_element = num_element;
33
31
    _element_size = element_size;
34
 
    _num_index = num_index;
35
 
    _index_size = index_size;
 
32
 
 
33
    _mesh_primitive_type = primitive_type;
 
34
    switch(primitive_type)
 
35
    {
 
36
    case NUX_MESH_TRIANGLE:
 
37
      _num_index = num_mesh_primitive * 3;
 
38
      break;
 
39
 
 
40
    case NUX_MESH_TRIANGLE_STRIP:
 
41
    case NUX_MESH_TRIANGLE_FAN:
 
42
      _num_index = num_mesh_primitive + 2;
 
43
      break;
 
44
 
 
45
    case NUX_MESH_LINE:
 
46
        _num_index = num_mesh_primitive * 2;
 
47
      break;
 
48
 
 
49
    case NUX_MESH_LINE_STRIP:
 
50
    case NUX_MESH_LINE_LOOP:
 
51
      _num_index = num_mesh_primitive + 1;
 
52
      break;
 
53
 
 
54
    case NUX_MESH_QUAD:
 
55
      _num_index = num_mesh_primitive * 4;
 
56
      break;
 
57
 
 
58
    case NUX_MESH_QUAD_STRIP:
 
59
      _num_index = num_mesh_primitive + 2;
 
60
      break;
 
61
 
 
62
    case NUX_MESH_POINT:
 
63
      _num_index = num_mesh_primitive;
 
64
      break;
 
65
    }
 
66
    _index_size = 4;
36
67
 
37
68
    _vertex_data = new unsigned char[num_element * element_size];
38
 
    _index_data = new unsigned char[num_index * index_size];
 
69
    _index_data = new unsigned char[_num_index * _index_size];
39
70
 
40
71
    return true;
41
72
  }