Change GenerateInitialVerticesIndexList to slices
This commit is contained in:
parent
54a4a4ed8e
commit
e0d086dc69
118
src/generated.rs
118
src/generated.rs
@ -184,10 +184,10 @@ pub unsafe fn genTangSpace<I: Geometry>(
|
|||||||
let mut pTriInfos = vec![STriInfo::zero(); iNrTrianglesIn];
|
let mut pTriInfos = vec![STriInfo::zero(); iNrTrianglesIn];
|
||||||
|
|
||||||
iNrTSPaces = GenerateInitialVerticesIndexList(
|
iNrTSPaces = GenerateInitialVerticesIndexList(
|
||||||
pTriInfos.as_mut_ptr(),
|
&mut pTriInfos,
|
||||||
piTriListIn.as_mut_ptr(),
|
&mut piTriListIn,
|
||||||
geometry,
|
geometry,
|
||||||
iNrTrianglesIn as c_int,
|
iNrTrianglesIn,
|
||||||
);
|
);
|
||||||
GenerateSharedVerticesIndexList(piTriListIn.as_mut_ptr(), geometry, iNrTrianglesIn);
|
GenerateSharedVerticesIndexList(piTriListIn.as_mut_ptr(), geometry, iNrTrianglesIn);
|
||||||
iTotTris = iNrTrianglesIn;
|
iTotTris = iNrTrianglesIn;
|
||||||
@ -1887,39 +1887,33 @@ unsafe fn GenerateSharedVerticesIndexListSlow<I: Geometry>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
unsafe fn GenerateInitialVerticesIndexList<I: Geometry>(
|
unsafe fn GenerateInitialVerticesIndexList<I: Geometry>(
|
||||||
mut pTriInfos: *mut STriInfo,
|
pTriInfos: &mut [STriInfo],
|
||||||
mut piTriList_out: *mut libc::c_int,
|
piTriList_out: &mut [i32],
|
||||||
geometry: &mut I,
|
geometry: &mut I,
|
||||||
iNrTrianglesIn: libc::c_int,
|
iNrTrianglesIn: usize,
|
||||||
) -> usize {
|
) -> usize {
|
||||||
let mut iTSpacesOffs: usize = 0;
|
let mut iTSpacesOffs: usize = 0;
|
||||||
let mut f = 0;
|
let mut f = 0;
|
||||||
let mut t: libc::c_int = 0i32;
|
let mut t: usize = 0;
|
||||||
let mut iDstTriIndex: libc::c_int = 0i32;
|
let mut iDstTriIndex = 0;
|
||||||
f = 0;
|
f = 0;
|
||||||
while f < geometry.get_num_faces() {
|
while f < geometry.get_num_faces() {
|
||||||
let verts = geometry.get_num_vertices_of_face(f);
|
let verts = geometry.get_num_vertices_of_face(f);
|
||||||
if !(verts != 3 && verts != 4) {
|
if !(verts != 3 && verts != 4) {
|
||||||
(*pTriInfos.offset(iDstTriIndex as isize)).iOrgFaceNumber = f as c_int;
|
pTriInfos[iDstTriIndex].iOrgFaceNumber = f as c_int;
|
||||||
(*pTriInfos.offset(iDstTriIndex as isize)).iTSpacesOffs = iTSpacesOffs as c_int;
|
pTriInfos[iDstTriIndex].iTSpacesOffs = iTSpacesOffs as c_int;
|
||||||
if verts == 3 {
|
if verts == 3 {
|
||||||
let mut pVerts: *mut libc::c_uchar = (*pTriInfos.offset(iDstTriIndex as isize))
|
let mut pVerts = &mut pTriInfos[iDstTriIndex].vert_num;
|
||||||
.vert_num
|
pVerts[0] = 0;
|
||||||
.as_mut_ptr();
|
pVerts[1] = 1;
|
||||||
*pVerts.offset(0isize) = 0i32 as libc::c_uchar;
|
pVerts[2] = 2;
|
||||||
*pVerts.offset(1isize) = 1i32 as libc::c_uchar;
|
piTriList_out[iDstTriIndex * 3 + 0] = face_vert_to_index(f, 0) as c_int;
|
||||||
*pVerts.offset(2isize) = 2i32 as libc::c_uchar;
|
piTriList_out[iDstTriIndex * 3 + 1] = face_vert_to_index(f, 1) as c_int;
|
||||||
*piTriList_out.offset((iDstTriIndex * 3i32 + 0i32) as isize) =
|
piTriList_out[iDstTriIndex * 3 + 2] = face_vert_to_index(f, 2) as c_int;
|
||||||
face_vert_to_index(f, 0) as c_int;
|
|
||||||
*piTriList_out.offset((iDstTriIndex * 3i32 + 1i32) as isize) =
|
|
||||||
face_vert_to_index(f, 1) as c_int;
|
|
||||||
*piTriList_out.offset((iDstTriIndex * 3i32 + 2i32) as isize) =
|
|
||||||
face_vert_to_index(f, 2) as c_int;
|
|
||||||
iDstTriIndex += 1
|
iDstTriIndex += 1
|
||||||
} else {
|
} else {
|
||||||
(*pTriInfos.offset((iDstTriIndex + 1i32) as isize)).iOrgFaceNumber = f as c_int;
|
pTriInfos[iDstTriIndex + 1].iOrgFaceNumber = f as c_int;
|
||||||
(*pTriInfos.offset((iDstTriIndex + 1i32) as isize)).iTSpacesOffs =
|
pTriInfos[iDstTriIndex + 1].iTSpacesOffs = iTSpacesOffs as c_int;
|
||||||
iTSpacesOffs as c_int;
|
|
||||||
let i0 = face_vert_to_index(f, 0);
|
let i0 = face_vert_to_index(f, 0);
|
||||||
let i1 = face_vert_to_index(f, 1);
|
let i1 = face_vert_to_index(f, 1);
|
||||||
let i2 = face_vert_to_index(f, 2);
|
let i2 = face_vert_to_index(f, 2);
|
||||||
@ -1949,50 +1943,40 @@ unsafe fn GenerateInitialVerticesIndexList<I: Geometry>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if bQuadDiagIs_02 {
|
if bQuadDiagIs_02 {
|
||||||
let mut pVerts_A: *mut libc::c_uchar = (*pTriInfos
|
let mut pVerts_A = &mut pTriInfos[iDstTriIndex].vert_num;
|
||||||
.offset(iDstTriIndex as isize))
|
pVerts_A[0] = 0;
|
||||||
.vert_num
|
pVerts_A[1] = 1;
|
||||||
.as_mut_ptr();
|
pVerts_A[2] = 2;
|
||||||
*pVerts_A.offset(0isize) = 0i32 as libc::c_uchar;
|
piTriList_out[iDstTriIndex * 3 + 0] = i0 as c_int;
|
||||||
*pVerts_A.offset(1isize) = 1i32 as libc::c_uchar;
|
piTriList_out[iDstTriIndex * 3 + 1] = i1 as c_int;
|
||||||
*pVerts_A.offset(2isize) = 2i32 as libc::c_uchar;
|
piTriList_out[iDstTriIndex * 3 + 2] = i2 as c_int;
|
||||||
*piTriList_out.offset((iDstTriIndex * 3i32 + 0i32) as isize) = i0 as c_int;
|
|
||||||
*piTriList_out.offset((iDstTriIndex * 3i32 + 1i32) as isize) = i1 as c_int;
|
|
||||||
*piTriList_out.offset((iDstTriIndex * 3i32 + 2i32) as isize) = i2 as c_int;
|
|
||||||
iDstTriIndex += 1;
|
iDstTriIndex += 1;
|
||||||
let mut pVerts_B: *mut libc::c_uchar = (*pTriInfos
|
|
||||||
.offset(iDstTriIndex as isize))
|
let mut pVerts_B = &mut pTriInfos[iDstTriIndex].vert_num;
|
||||||
.vert_num
|
pVerts_B[0] = 0;
|
||||||
.as_mut_ptr();
|
pVerts_B[1] = 2;
|
||||||
*pVerts_B.offset(0isize) = 0i32 as libc::c_uchar;
|
pVerts_B[2] = 3;
|
||||||
*pVerts_B.offset(1isize) = 2i32 as libc::c_uchar;
|
piTriList_out[iDstTriIndex * 3 + 0] = i0 as c_int;
|
||||||
*pVerts_B.offset(2isize) = 3i32 as libc::c_uchar;
|
piTriList_out[iDstTriIndex * 3 + 1] = i2 as c_int;
|
||||||
*piTriList_out.offset((iDstTriIndex * 3i32 + 0i32) as isize) = i0 as c_int;
|
piTriList_out[iDstTriIndex * 3 + 2] = i3 as c_int;
|
||||||
*piTriList_out.offset((iDstTriIndex * 3i32 + 1i32) as isize) = i2 as c_int;
|
|
||||||
*piTriList_out.offset((iDstTriIndex * 3i32 + 2i32) as isize) = i3 as c_int;
|
|
||||||
iDstTriIndex += 1
|
iDstTriIndex += 1
|
||||||
} else {
|
} else {
|
||||||
let mut pVerts_A_0: *mut libc::c_uchar = (*pTriInfos
|
let mut pVerts_A_0 = &mut pTriInfos[iDstTriIndex].vert_num;
|
||||||
.offset(iDstTriIndex as isize))
|
pVerts_A_0[0] = 0;
|
||||||
.vert_num
|
pVerts_A_0[1] = 1;
|
||||||
.as_mut_ptr();
|
pVerts_A_0[2] = 3;
|
||||||
*pVerts_A_0.offset(0isize) = 0i32 as libc::c_uchar;
|
piTriList_out[iDstTriIndex * 3 + 0] = i0 as c_int;
|
||||||
*pVerts_A_0.offset(1isize) = 1i32 as libc::c_uchar;
|
piTriList_out[iDstTriIndex * 3 + 1] = i1 as c_int;
|
||||||
*pVerts_A_0.offset(2isize) = 3i32 as libc::c_uchar;
|
piTriList_out[iDstTriIndex * 3 + 2] = i3 as c_int;
|
||||||
*piTriList_out.offset((iDstTriIndex * 3i32 + 0i32) as isize) = i0 as c_int;
|
|
||||||
*piTriList_out.offset((iDstTriIndex * 3i32 + 1i32) as isize) = i1 as c_int;
|
|
||||||
*piTriList_out.offset((iDstTriIndex * 3i32 + 2i32) as isize) = i3 as c_int;
|
|
||||||
iDstTriIndex += 1;
|
iDstTriIndex += 1;
|
||||||
let mut pVerts_B_0: *mut libc::c_uchar = (*pTriInfos
|
|
||||||
.offset(iDstTriIndex as isize))
|
let mut pVerts_B_0 = &mut pTriInfos[iDstTriIndex].vert_num;
|
||||||
.vert_num
|
pVerts_B_0[0] = 1;
|
||||||
.as_mut_ptr();
|
pVerts_B_0[1] = 2;
|
||||||
*pVerts_B_0.offset(0isize) = 1i32 as libc::c_uchar;
|
pVerts_B_0[2] = 3;
|
||||||
*pVerts_B_0.offset(1isize) = 2i32 as libc::c_uchar;
|
piTriList_out[iDstTriIndex * 3 + 0] = i1 as c_int;
|
||||||
*pVerts_B_0.offset(2isize) = 3i32 as libc::c_uchar;
|
piTriList_out[iDstTriIndex * 3 + 1] = i2 as c_int;
|
||||||
*piTriList_out.offset((iDstTriIndex * 3i32 + 0i32) as isize) = i1 as c_int;
|
piTriList_out[iDstTriIndex * 3 + 2] = i3 as c_int;
|
||||||
*piTriList_out.offset((iDstTriIndex * 3i32 + 1i32) as isize) = i2 as c_int;
|
|
||||||
*piTriList_out.offset((iDstTriIndex * 3i32 + 2i32) as isize) = i3 as c_int;
|
|
||||||
iDstTriIndex += 1
|
iDstTriIndex += 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2000,9 +1984,9 @@ unsafe fn GenerateInitialVerticesIndexList<I: Geometry>(
|
|||||||
}
|
}
|
||||||
f += 1
|
f += 1
|
||||||
}
|
}
|
||||||
t = 0i32;
|
t = 0;
|
||||||
while t < iNrTrianglesIn {
|
while t < iNrTrianglesIn {
|
||||||
(*pTriInfos.offset(t as isize)).iFlag = 0i32;
|
pTriInfos[t].iFlag = 0;
|
||||||
t += 1
|
t += 1
|
||||||
}
|
}
|
||||||
return iTSpacesOffs;
|
return iTSpacesOffs;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user