diff options
author | Alejandro Conty Estevez <conty@yafray.org> | 2004-06-17 15:24:30 +0400 |
---|---|---|
committer | Alejandro Conty Estevez <conty@yafray.org> | 2004-06-17 15:24:30 +0400 |
commit | cfbce399aa8129c8fb49984df64bd8a096a34368 (patch) | |
tree | e77af73d05e2b23cc4939abcf6da593af49122d3 /source/blender/yafray | |
parent | a78ad46c0dec84c1504e0be38d8b8a798f2f024d (diff) |
These are changes necessary for building with msvc in a near future.
Just making sure memory is always allocated and freed in the same
binary object, which seems to be mandatory on msvc if you don't have
the comercial version. If you are using this code you need to
syncronize with yafray cvs also, or it won't work. Binaries for os x
are updated in the link I gave in my last commit.
Diffstat (limited to 'source/blender/yafray')
-rw-r--r-- | source/blender/yafray/intern/export_Plugin.cpp | 79 | ||||
-rw-r--r-- | source/blender/yafray/intern/export_Plugin.h | 12 | ||||
-rw-r--r-- | source/blender/yafray/intern/yafexternal.h | 4 |
3 files changed, 46 insertions, 49 deletions
diff --git a/source/blender/yafray/intern/export_Plugin.cpp b/source/blender/yafray/intern/export_Plugin.cpp index 2baacc1a5c0..08919292e57 100644 --- a/source/blender/yafray/intern/export_Plugin.cpp +++ b/source/blender/yafray/intern/export_Plugin.cpp @@ -688,50 +688,50 @@ void yafrayPluginRender_t::writeMaterialsAndModulators() } } -void yafrayPluginRender_t::genUVcoords(vector<yafray::GFLOAT> *uvcoords,VlakRen *vlr,TFace* uvc) +void yafrayPluginRender_t::genUVcoords(vector<yafray::GFLOAT> &uvcoords,VlakRen *vlr,TFace* uvc) { if (uvc) { // use correct uv coords for this triangle if (vlr->flag & R_FACE_SPLIT) { - uvcoords->push_back(uvc->uv[0][0]);uvcoords->push_back(1-uvc->uv[0][1]); - uvcoords->push_back(uvc->uv[2][0]);uvcoords->push_back(1-uvc->uv[2][1]); - uvcoords->push_back(uvc->uv[3][0]);uvcoords->push_back(1-uvc->uv[3][1]); + uvcoords.push_back(uvc->uv[0][0]);uvcoords.push_back(1-uvc->uv[0][1]); + uvcoords.push_back(uvc->uv[2][0]);uvcoords.push_back(1-uvc->uv[2][1]); + uvcoords.push_back(uvc->uv[3][0]);uvcoords.push_back(1-uvc->uv[3][1]); } else { - uvcoords->push_back(uvc->uv[0][0]);uvcoords->push_back(1-uvc->uv[0][1]); - uvcoords->push_back(uvc->uv[1][0]);uvcoords->push_back(1-uvc->uv[1][1]); - uvcoords->push_back(uvc->uv[2][0]);uvcoords->push_back(1-uvc->uv[2][1]); + uvcoords.push_back(uvc->uv[0][0]);uvcoords.push_back(1-uvc->uv[0][1]); + uvcoords.push_back(uvc->uv[1][0]);uvcoords.push_back(1-uvc->uv[1][1]); + uvcoords.push_back(uvc->uv[2][0]);uvcoords.push_back(1-uvc->uv[2][1]); } } else { - uvcoords->push_back(0);uvcoords->push_back(0); - uvcoords->push_back(0);uvcoords->push_back(0); - uvcoords->push_back(0);uvcoords->push_back(0); + uvcoords.push_back(0);uvcoords.push_back(0); + uvcoords.push_back(0);uvcoords.push_back(0); + uvcoords.push_back(0);uvcoords.push_back(0); } } -void yafrayPluginRender_t::genCompleUVcoords(vector<yafray::GFLOAT> *uvcoords,/*VlakRen *vlr,*/TFace* uvc) +void yafrayPluginRender_t::genCompleUVcoords(vector<yafray::GFLOAT> &uvcoords,/*VlakRen *vlr,*/TFace* uvc) { if (uvc) { // use correct uv coords for this triangle - uvcoords->push_back(uvc->uv[2][0]);uvcoords->push_back(1-uvc->uv[2][1]); - uvcoords->push_back(uvc->uv[3][0]);uvcoords->push_back(1-uvc->uv[3][1]); - uvcoords->push_back(uvc->uv[0][0]);uvcoords->push_back(1-uvc->uv[0][1]); + uvcoords.push_back(uvc->uv[2][0]);uvcoords.push_back(1-uvc->uv[2][1]); + uvcoords.push_back(uvc->uv[3][0]);uvcoords.push_back(1-uvc->uv[3][1]); + uvcoords.push_back(uvc->uv[0][0]);uvcoords.push_back(1-uvc->uv[0][1]); } else { - uvcoords->push_back(0);uvcoords->push_back(0); - uvcoords->push_back(0);uvcoords->push_back(0); - uvcoords->push_back(0);uvcoords->push_back(0); + uvcoords.push_back(0);uvcoords.push_back(0); + uvcoords.push_back(0);uvcoords.push_back(0); + uvcoords.push_back(0);uvcoords.push_back(0); } } -void yafrayPluginRender_t::genVcol(vector<yafray::CFLOAT> *vcol,VlakRen *vlr, +void yafrayPluginRender_t::genVcol(vector<yafray::CFLOAT> &vcol,VlakRen *vlr, int p1,int p2,int p3,bool EXPORT_VCOL) { if ((EXPORT_VCOL) && (vlr->vcol)) @@ -741,26 +741,26 @@ void yafrayPluginRender_t::genVcol(vector<yafray::CFLOAT> *vcol,VlakRen *vlr, vr = ((vlr->vcol[p1] >> 24) & 255)/255.0; vg = ((vlr->vcol[p1] >> 16) & 255)/255.0; vb = ((vlr->vcol[p1] >> 8) & 255)/255.0; - vcol->push_back(vr);vcol->push_back(vg);vcol->push_back(vb); + vcol.push_back(vr);vcol.push_back(vg);vcol.push_back(vb); vr = ((vlr->vcol[p2] >> 24) & 255)/255.0; vg = ((vlr->vcol[p2] >> 16) & 255)/255.0; vb = ((vlr->vcol[p2] >> 8) & 255)/255.0; - vcol->push_back(vr);vcol->push_back(vg);vcol->push_back(vb); + vcol.push_back(vr);vcol.push_back(vg);vcol.push_back(vb); vr = ((vlr->vcol[p3] >> 24) & 255)/255.0; vg = ((vlr->vcol[p3] >> 16) & 255)/255.0; vb = ((vlr->vcol[p3] >> 8) & 255)/255.0; - vcol->push_back(vr);vcol->push_back(vg);vcol->push_back(vb); + vcol.push_back(vr);vcol.push_back(vg);vcol.push_back(vb); } else { - vcol->push_back(0);vcol->push_back(0);vcol->push_back(0); - vcol->push_back(0);vcol->push_back(0);vcol->push_back(0); - vcol->push_back(0);vcol->push_back(0);vcol->push_back(0); + vcol.push_back(0);vcol.push_back(0);vcol.push_back(0); + vcol.push_back(0);vcol.push_back(0);vcol.push_back(0); + vcol.push_back(0);vcol.push_back(0);vcol.push_back(0); } } void yafrayPluginRender_t::genFace(vector<int> &faces,vector<string> &shaders,vector<int> &faceshader, - vector<yafray::GFLOAT> *uvcoords,vector<yafray::CFLOAT> *vcol, + vector<yafray::GFLOAT> &uvcoords,vector<yafray::CFLOAT> &vcol, map<VertRen*, int> &vert_idx,VlakRen *vlr, bool has_orco,bool has_uv,bool has_vcol) { @@ -801,7 +801,7 @@ void yafrayPluginRender_t::genFace(vector<int> &faces,vector<string> &shaders,ve } void yafrayPluginRender_t::genCompleFace(vector<int> &faces,/*vector<string> &shaders,*/vector<int> &faceshader, - vector<yafray::GFLOAT> *uvcoords,vector<yafray::CFLOAT> *vcol, + vector<yafray::GFLOAT> &uvcoords,vector<yafray::CFLOAT> &vcol, map<VertRen*, int> &vert_idx,VlakRen *vlr, bool has_orco,bool has_uv,bool has_vcol) { @@ -824,7 +824,7 @@ void yafrayPluginRender_t::genCompleFace(vector<int> &faces,/*vector<string> &sh if(has_vcol) genVcol(vcol,vlr,2,3,0,EXPORT_VCOL); } -void yafrayPluginRender_t::genVertices(vector<yafray::point3d_t> *verts,int &vidx, +void yafrayPluginRender_t::genVertices(vector<yafray::point3d_t> &verts,int &vidx, map<VertRen*, int> &vert_idx,VlakRen* vlr,bool has_orco) { VertRen* ver; @@ -832,33 +832,33 @@ void yafrayPluginRender_t::genVertices(vector<yafray::point3d_t> *verts,int &vid { vert_idx[vlr->v1] = vidx++; ver = vlr->v1; - verts->push_back(yafray::point3d_t(ver->co[0],ver->co[1],ver->co[2])); + verts.push_back(yafray::point3d_t(ver->co[0],ver->co[1],ver->co[2])); if (has_orco) - verts->push_back(yafray::point3d_t(ver->orco[0],ver->orco[1],ver->orco[2])); + verts.push_back(yafray::point3d_t(ver->orco[0],ver->orco[1],ver->orco[2])); } if (vert_idx.find(vlr->v2)==vert_idx.end()) { vert_idx[vlr->v2] = vidx++; ver = vlr->v2; - verts->push_back(yafray::point3d_t(ver->co[0],ver->co[1],ver->co[2])); + verts.push_back(yafray::point3d_t(ver->co[0],ver->co[1],ver->co[2])); if (has_orco) - verts->push_back(yafray::point3d_t(ver->orco[0],ver->orco[1],ver->orco[2])); + verts.push_back(yafray::point3d_t(ver->orco[0],ver->orco[1],ver->orco[2])); } if (vert_idx.find(vlr->v3)==vert_idx.end()) { vert_idx[vlr->v3] = vidx++; ver = vlr->v3; - verts->push_back(yafray::point3d_t(ver->co[0],ver->co[1],ver->co[2])); + verts.push_back(yafray::point3d_t(ver->co[0],ver->co[1],ver->co[2])); if (has_orco) - verts->push_back(yafray::point3d_t(ver->orco[0],ver->orco[1],ver->orco[2])); + verts.push_back(yafray::point3d_t(ver->orco[0],ver->orco[1],ver->orco[2])); } if ((vlr->v4) && (vert_idx.find(vlr->v4)==vert_idx.end())) { vert_idx[vlr->v4] = vidx++; ver = vlr->v4; - verts->push_back(yafray::point3d_t(ver->co[0],ver->co[1],ver->co[2])); + verts.push_back(yafray::point3d_t(ver->co[0],ver->co[1],ver->co[2])); if (has_orco) - verts->push_back(yafray::point3d_t(ver->orco[0],ver->orco[1],ver->orco[2])); + verts.push_back(yafray::point3d_t(ver->orco[0],ver->orco[1],ver->orco[2])); } } @@ -900,9 +900,8 @@ void yafrayPluginRender_t::writeObject(Object* obj, const vector<VlakRen*> &VLR_ if(fmat==NULL) continue; if((fmat->mode & (MA_VERTEXCOL|MA_VERTEXCOLP))!=0) {has_vcol=true;break;}; } - vector<yafray::point3d_t> *verts=new vector<yafray::point3d_t>; - vector<yafray::CFLOAT> *vcol=NULL; - if(has_vcol) vcol=new vector<yafray::CFLOAT>; + vector<yafray::point3d_t> verts; + vector<yafray::CFLOAT> vcol; // now all vertices map<VertRen*, int> vert_idx; // for removing duplicate verts and creating an index list int vidx = 0; // vertex index counter @@ -918,9 +917,7 @@ void yafrayPluginRender_t::writeObject(Object* obj, const vector<VlakRen*> &VLR_ vector<int> faces; vector<string> shaders; vector<int> faceshader; - vector<yafray::GFLOAT> *uvcoords=NULL; - if(has_uv) - uvcoords=new vector<yafray::GFLOAT>; + vector<yafray::GFLOAT> uvcoords; for (vector<VlakRen*>::const_iterator fci2=VLR_list.begin(); fci2!=VLR_list.end();++fci2) { diff --git a/source/blender/yafray/intern/export_Plugin.h b/source/blender/yafray/intern/export_Plugin.h index 1defad65922..775156a7e71 100644 --- a/source/blender/yafray/intern/export_Plugin.h +++ b/source/blender/yafray/intern/export_Plugin.h @@ -36,19 +36,19 @@ class yafrayPluginRender_t : public yafrayRender_t virtual bool initExport(); virtual bool finishExport(); - void genUVcoords(std::vector<yafray::GFLOAT> *uvcoords,VlakRen *vlr,TFace* uvc); - void genCompleUVcoords(std::vector<yafray::GFLOAT> *uvcoords,/*VlakRen *vlr,*/TFace* uvc); - void genVcol(std::vector<yafray::CFLOAT> *vcol,VlakRen *vlr, + void genUVcoords(std::vector<yafray::GFLOAT> &uvcoords,VlakRen *vlr,TFace* uvc); + void genCompleUVcoords(std::vector<yafray::GFLOAT> &uvcoords,/*VlakRen *vlr,*/TFace* uvc); + void genVcol(std::vector<yafray::CFLOAT> &vcol,VlakRen *vlr, int p1,int p2,int p3,bool EXPORT_VCOL); void genFace(std::vector<int> &faces,std::vector<std::string> &shaders,std::vector<int> &faceshader, - std::vector<yafray::GFLOAT> *uvcoords,std::vector<yafray::CFLOAT> *vcol, + std::vector<yafray::GFLOAT> &uvcoords,std::vector<yafray::CFLOAT> &vcol, std::map<VertRen*, int> &vert_idx,VlakRen *vlr, bool has_orco,bool has_uv,bool has_vcol); void genCompleFace(std::vector<int> &faces,/*std::vector<std::string> &shaders,*/std::vector<int> &faceshader, - std::vector<yafray::GFLOAT> *uvcoords,std::vector<yafray::CFLOAT> *vcol, + std::vector<yafray::GFLOAT> &uvcoords,std::vector<yafray::CFLOAT> &vcol, std::map<VertRen*, int> &vert_idx,VlakRen *vlr, bool has_orco,bool has_uv,bool has_vcol); - void genVertices(std::vector<yafray::point3d_t> *verts,int &vidx, + void genVertices(std::vector<yafray::point3d_t> &verts,int &vidx, std::map<VertRen*, int> &vert_idx,VlakRen* vlr,bool has_orco); }; diff --git a/source/blender/yafray/intern/yafexternal.h b/source/blender/yafray/intern/yafexternal.h index 2ff95a13611..2cf1b0a0dd1 100644 --- a/source/blender/yafray/intern/yafexternal.h +++ b/source/blender/yafray/intern/yafexternal.h @@ -141,8 +141,8 @@ class yafrayInterface_t : public renderEnvironment_t virtual void transformPush(float *m)=0; virtual void transformPop()=0; virtual void addObject_trimesh(const std::string &name, - std::vector<point3d_t> *verts, const std::vector<int> &faces, - std::vector<GFLOAT> *uvcoords, std::vector<CFLOAT> *vcol, + std::vector<point3d_t> &verts, const std::vector<int> &faces, + std::vector<GFLOAT> &uvcoords, std::vector<CFLOAT> &vcol, const std::vector<std::string> &shaders,const std::vector<int> &faceshader, float sm_angle,bool castShadows,bool useR,bool receiveR,bool caus,bool has_orco, const color_t &caus_rcolor,const color_t &caus_tcolor,float caus_IOR)=0; |