私はrealVecを返す自分で書かれていないデータ構造を使用しています。これは、(typedef.h中)realVecの宣言です:TNTのベクトルの定義についてC++のデータ構造:TNTベクトルからGL vec3への変換
typedef TNT::Vector<PCReal> realVec;
を参照してください。PCRealのhttp://calicam.sourceforge.net/doxygen/tnt__vector_8h_source.html
定義:
typedef double PCReal;
を、私はこれを変換する必要があります次のvec3へのrealVec:
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おそらく、TNT :: Vectorのイテレータを使用して、それによって返された値を変換することにあります。私は以下のようなことを考えているので、意味があるかどうか教えてください。 (no「を作る」エラー)をコンパイルするようだ:
realVec normal = this->meshPoints.getNormalForVertex(i);
PCReal* iter = normal.begin();
vec3(*iter++, *iter++, *iter++);
私はGLプログラミングをやっている、と私のシェーダを入力としてvec3年代を取るのが便利なので、私はこれを必要とします。
PCRealとは何ですか?上記の編集は – interjay
です。ダブルのように見えます。 – Rooster
PCRealがdoubleの場合、3つの浮動小数点数を持つstructにどのように変換したいですか?最初のvec3コンストラクタをPCRealでコールしますか? –