1

透視投影行列を作成する関数を作成していますが、エラーが発生します。手伝って頂けますか?「-」でエラーのある行をマークしました

typedef GLfloat mat4x4[16];

関数:

void perspective(float fovy, float aspect, float near, float far, mat4x4& mat)
{
    for(int i=0;i<16;i++)
        mat[i]=0;
    -float range = tan(degreesToRadians(fovy)/2.0f) * near;
    float left = range * aspect;
    float right = range * aspect;
    float bottom = range;
    float top = range;
    -mat[0] = (2.0f * near) / (right - left);
    -mat[5] = (2.0f * near) / (top - bottom);
    --mat[10] = (far + near) / (far - near);
    -mat[11] = 1.0f;
    -mat[14] = (2.0f * far * near) / (far - near);
}

エラー:

In function 'void perspective(float, float, float, float, GLfloat (&)[16])':

błąd:expected primary-expression before ';' token
błąd:expected primary-expression before ')' token
błąd:expected primary-expression before ')' token
błąd:expected primary-expression before ')' token
błąd:expected primary-expression before ')' token
błąd:expected primary-expression before ')' token
błąd:expected primary-expression before ')' token
4

1 に答える 1

4

私の推測では、nearandfarをマクロとして定義する邪悪なヘッダーが含まれていると思います。NEARこれらは、古い 16 ビット バージョンの Windows でポインターを修飾するために使用されていました (ただし、メモリが機能する場合、DOS/Windows ヘッダー自体は悪意の少ないandを使用していると思いますFAR)。

これらの名前の使用は避けてください。または、これらのマクロ定義を回避する方法を見つけます。または、下位互換性の荷物が少ないプラットフォームに切り替えて、つまずく必要があります。

于 2013-06-12T15:52:15.150 に答える