Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2016-08-18 00:49:55 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2016-08-18 00:54:47 +0300
commit40b367479c6fe23d6f2b6d822f2d5266485619f3 (patch)
tree9b1e4e1b5ecd103d0f7edac451685efaf3942c52 /intern/cycles/render/mesh_subdivision.cpp
parentc0161a1bab71331f518bd5c8c1b091df7ee12074 (diff)
Code cleanup to use array.data() rather than &array[0].
These latter can cause MSVC debug asserts if the array is empty. With C++11 we'll be able to do this for std::vector later. This hopefully fixes an assert in the Cycles subdivision code.
Diffstat (limited to 'intern/cycles/render/mesh_subdivision.cpp')
-rw-r--r--intern/cycles/render/mesh_subdivision.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/intern/cycles/render/mesh_subdivision.cpp b/intern/cycles/render/mesh_subdivision.cpp
index efb40efbb79..c9cc5df68a4 100644
--- a/intern/cycles/render/mesh_subdivision.cpp
+++ b/intern/cycles/render/mesh_subdivision.cpp
@@ -45,7 +45,7 @@ namespace Far {
setNumBaseVertices(refiner, mesh.verts.size());
setNumBaseFaces(refiner, mesh.subd_faces.size());
- ccl::Mesh::SubdFace* face = &mesh.subd_faces[0];
+ ccl::Mesh::SubdFace* face = mesh.subd_faces.data();
for(int i = 0; i < mesh.subd_faces.size(); i++, face++) {
setNumBaseFaceVertices(refiner, i, face->num_corners);
@@ -57,7 +57,7 @@ namespace Far {
template<>
bool TopologyRefinerFactory<ccl::Mesh>::assignComponentTopology(TopologyRefiner& refiner, ccl::Mesh const& mesh)
{
- ccl::Mesh::SubdFace* face = &mesh.subd_faces[0];
+ ccl::Mesh::SubdFace* face = mesh.subd_faces.data()
for(int i = 0; i < mesh.subd_faces.size(); i++, face++) {
IndexArray face_verts = getBaseFaceVertices(refiner, i);
@@ -195,14 +195,14 @@ public:
verts[i].value = mesh->verts[i];
}
- OsdValue<float3>* src = &verts[0];
+ OsdValue<float3>* src = verts.data()
for(int i = 0; i < refiner->GetMaxLevel(); i++) {
OsdValue<float3>* dest = src + refiner->GetLevel(i).GetNumVertices();
Far::PrimvarRefiner(*refiner).Interpolate(i+1, src, dest);
src = dest;
}
- patch_table->ComputeLocalPointValues(&verts[0], &verts[num_refiner_verts]);
+ patch_table->ComputeLocalPointValues(verts.data(), &verts[num_refiner_verts]);
/* create patch map */
patch_map = new Far::PatchMap(*patch_table);
@@ -219,7 +219,7 @@ public:
attr.resize(num_refiner_verts + num_local_points);
attr.flags |= ATTR_FINAL_SIZE;
- char* src = &attr.buffer[0];
+ char* src = attr.buffer.data();
for(int i = 0; i < refiner->GetMaxLevel(); i++) {
char* dest = src + refiner->GetLevel(i).GetNumVertices() * attr.data_sizeof();
@@ -235,12 +235,12 @@ public:
}
if(attr.same_storage(attr.type, TypeDesc::TypeFloat)) {
- patch_table->ComputeLocalPointValues((OsdValue<float>*)&attr.buffer[0],
- (OsdValue<float>*)&attr.buffer[num_refiner_verts * attr.data_sizeof()]);
+ patch_table->ComputeLocalPointValues((OsdValue<float>*)attr.buffer.data(),
+ (OsdValue<float>*)(attr.buffer.data() + num_refiner_verts * attr.data_sizeof()));
}
else {
- patch_table->ComputeLocalPointValues((OsdValue<float4>*)&attr.buffer[0],
- (OsdValue<float4>*)&attr.buffer[num_refiner_verts * attr.data_sizeof()]);
+ patch_table->ComputeLocalPointValues((OsdValue<float4>*)attr.buffer.data(),
+ (OsdValue<float4>*)(attr.buffer.data() + num_refiner_verts * attr.data_sizeof()));
}
}
else if(attr.element == ATTR_ELEMENT_CORNER || attr.element == ATTR_ELEMENT_CORNER_BYTE) {