0

異なる3Dモデルであるが同じ名前で異なるディレクトリである.h(3Dモデル)から値を取得するにはどうすればよいですか?

例えば:

A1.h(バナナモデル)が入っています/FrameMarkers/Model/A1.h

A1.h(タイガーモデル)が入っています/FrameMarkers/Model1/A1.h

しかし、私の条件に使用するために、変数から値を取得したいと思います。これは、A1NumVerts、A1Verts、A1Normal、A1TexCoords の両方からのものです。コードは次のとおりです。

int Type=Animal;
 - (void) setup3dObjects
 {
     if(Type==Animal){
     [self add3DObjectWith:A1NumVerts ofVertices:A1Verts normals:A1Normals texcoords:A1TexCoords                        
                      with:NUM_R_OBJECT_INDEX ofIndices:RobjectIndices usingTextureIndex:0];                                     <<<<<<<<<<<< show Tiger
     }
     else
     {        
         [self add3DObjectWith:A1NumVerts ofVertices:A1Verts normals:A1Normals texcoords:A1TexCoords
                          with:NUM_R_OBJECT_INDEX ofIndices:RobjectIndices usingTextureIndex:0];                                    <<<<<<<<<<<< show Banana
     }
 }

それらから値を取得するために、下線を引いたコードを変更するにはどうすればよいですか?

4

1 に答える 1

0

これらのファイル内の変数の名前を手動で変更して同じにならないようにすることができれば、それがおそらく最善の解決策です。

2 番目の解決策は、2 つのモデルを返し、異なる実装ファイルにある 2 つのヘルパー関数を記述することです。このようなもの:

Banana.h:

void getBananaData (int* numVerts, Vertex* verts, Normal* normals, TexCoords* texCoords); // Where Vertex* and Normal* are whatever types A1Verts and A1Normals are

バナナ.m:

#include "FrameMarkers/Model/A1.h"

void getBananaData (int* numVerts, Vertex* verts, Normal* normals, TexCoords* texCoords)
{
    // These will give you the data from the banana model
    // because we included the banana model's header and not the
    // tiger model's.
    *numVerts = A1NumVerts;
    *verts = A1Verts;
    *normals = A1Normals;
    *texCoords = A1TexCoords;
}

次に同じことを行いますが、Tiger モデルに対しては次のようにします。

Tiger.h

void getTigerData (int* numVerts, Vertex* verts, Normal* normals, TexCoords* texCoords);

そしてTiger.m

#include "FrameMarkers/Model1/A1.h"

void getTigerData (int*numVerts, Vertex* verts, Normal* normals, TexCoords* texCoords)
{
    // These will give you the data from the tiger model
    // because we included the tiger model's header, and not the banana model's
    *numVerts = A1NumVerts;
    *verts = A1Verts; 
    *normals = A1Normals;
    *texCoords = A1TexCoords;
}

次に、上記の方法では、次のようになります。

 int numVerts = 0;
 Vertex verts;
 Normals normals;
 TexCoords texCoords;
 if(Type==Animal){
     getTigerData(&numVerts, &verts, &normals, &texCoords);
 }
 else
 {        
     getBananaData (&numVerts, &verts, &normals, &texCoords);
 }
 [self add3DObjectWith:numVerts ofVertices:verts normals:normals texcoords:A1TexCoords with:NUM_R_OBJECT_INDEX ofIndices:RobjectIndices usingTextureIndex:0];

#define3 つ目の解決策は、コンパイル時にa を使用して、ファイルの 1 つで変数の名前を変更することです。これは他の問題を引き起こす可能性があるため、私のお気に入りの解決策ではありません。説明はできますが、おそらくやりたくないでしょう。

于 2012-12-22T06:46:02.677 に答える