我使用的數據結構不是我自己寫的,返回realVec。這是realVec的聲明(中typedef.h):C++數據結構:從TNT向量轉換爲GL vec3
typedef TNT::Vector<PCReal> realVec;
對於TNT矢量的定義請參閱:http://calicam.sourceforge.net/doxygen/tnt__vector_8h_source.html
PCReal的定義:
typedef double PCReal;
我需要轉換這realVec加入以下vec3:
struct vec3 {
GLfloat x;
GLfloat y;
GLfloat z;
//
// --- Constructors and Destructors ---
//
vec3(GLfloat s = GLfloat(0.0)) :
x(s), y(s), z(s) {}
vec3(GLfloat _x, GLfloat _y, GLfloat _z) :
x(_x), y(_y), z(_z) {}
vec3(const vec3& v) { x = v.x; y = v.y; z = v.z; }
vec3(const vec2& v, const float f) { x = v.x; y = v.y; z = f; }
...
我對C++非常陌生,所以我的conf usion可能在於使用TNT :: Vector的迭代器並轉換它返回的值。我在想下面的東西,所以告訴我它是否合理。這似乎編譯(無「製作」錯誤):
realVec normal = this->meshPoints.getNormalForVertex(i);
PCReal* iter = normal.begin();
vec3(*iter++, *iter++, *iter++);
我需要這個,因爲我在做GL編程,這是方便我的着色器採取VEC 3的輸入。
什麼是PCReal? – interjay
我上面編輯過。看起來像一個雙。 – Rooster
如果一個PCReal是一個double,你想如何將它轉換成一個帶有3個浮點數的結構?你想用PCReal調用第一個vec3構造函數嗎? –