On 10/06/2015 at 03:52, xxxxxxxx wrote:
const Vector *points = op->padr;
const RayPolygon *polys = op->vadr;
vector<float> AllPoints(0);
vector<float> AllPointsUV(0);
vector<float> AllPointsNormal(0);
AllPoints.reserve(op->vcnt * 3);
AllPointsUV.reserve(op->vcnt * 3);
AllPointsNormal.reserve(op->vcnt * 3);
for(Int32 j = 0; j < op->vcnt; ++j)
{
int npIndices = (polys[j].c != polys[j].d)? 12 : 9;
AllPoints.push_back(points[polys[j].a].x);
AllPoints.push_back(points[polys[j].a].y);
AllPoints.push_back(points[polys[j].a].z);
AllPoints.push_back(points[polys[j].b].x);
AllPoints.push_back(points[polys[j].b].y);
AllPoints.push_back(points[polys[j].b].z);
AllPoints.push_back(points[polys[j].c].x);
AllPoints.push_back(points[polys[j].c].y);
AllPoints.push_back(points[polys[j].c].z);
PolyVector mUVW;
vps->vd->GetUVW(op, 1, j, &mUVW);
AllPointsUV.push_back(mUVW.a.x);
AllPointsUV.push_back(mUVW.a.y);
AllPointsUV.push_back(0.f);
AllPointsUV.push_back(mUVW.b.x);
AllPointsUV.push_back(mUVW.b.y);
AllPointsUV.push_back(0.f);
AllPointsUV.push_back(mUVW.c.x);
AllPointsUV.push_back(mUVW.c.y);
AllPointsUV.push_back(0.f);
PolyVector mNormal;
vps->vd->GetNormals(op, j, &mNormal);
AllPointsNormal.push_back(mNormal.a.x);
AllPointsNormal.push_back(mNormal.a.y);
AllPointsNormal.push_back(mNormal.a.z);
AllPointsNormal.push_back(mNormal.b.x);
AllPointsNormal.push_back(mNormal.b.y);
AllPointsNormal.push_back(mNormal.b.z);
AllPointsNormal.push_back(mNormal.c.x);
AllPointsNormal.push_back(mNormal.c.y);
AllPointsNormal.push_back(mNormal.c.z);
if(npIndices == 12)
{
AllPoints.push_back(points[polys[j].a].x);
AllPoints.push_back(points[polys[j].a].y);
AllPoints.push_back(points[polys[j].a].z);
AllPoints.push_back(points[polys[j].c].x);
AllPoints.push_back(points[polys[j].c].y);
AllPoints.push_back(points[polys[j].c].z);
AllPoints.push_back(points[polys[j].d].x);
AllPoints.push_back(points[polys[j].d].y);
AllPoints.push_back(points[polys[j].d].z);
AllPointsUV.push_back(mUVW.a.x);
AllPointsUV.push_back(mUVW.a.y);
AllPointsUV.push_back(0.f);
AllPointsUV.push_back(mUVW.c.x);
AllPointsUV.push_back(mUVW.c.y);
AllPointsUV.push_back(0.f);
AllPointsUV.push_back(mUVW.d.x);
AllPointsUV.push_back(mUVW.d.y);
AllPointsUV.push_back(0.f);
AllPointsNormal.push_back(mNormal.a.x);
AllPointsNormal.push_back(mNormal.a.y);
AllPointsNormal.push_back(mNormal.a.z);
AllPointsNormal.push_back(mNormal.c.x);
AllPointsNormal.push_back(mNormal.c.y);
AllPointsNormal.push_back(mNormal.c.z);
AllPointsNormal.push_back(mNormal.d.x);
AllPointsNormal.push_back(mNormal.d.y);
AllPointsNormal.push_back(mNormal.d.z);
}
}
the problem: the point coordinate data is the same when project size is changing, so if you render 2 times, 1 with project size of (cm) and another with (m), accessing data from here will be the same, while if you access through (op->link) it will be different.