glVertex3f и glVertex2fx отображают разные результаты - PullRequest
0 голосов
/ 21 ноября 2018

Я подозреваю, что это связано с моим кодом преобразования:

vector3::operator float*() const
{
    // x, y, z are member floats
    float arr[3];
    arr[0] = x;
    arr[1] = y;
    arr[2] = z;
    return arr;
}

Затем в другом классе я делаю:

glBegin(GL_POLYGON);
    glVertex3fv(origin); // wrong result
    //glVertex3f(origin.x, origin.y, origin.z); // good
    //glVertex3f(0.0, 0.0, 0.0); // also good
    glVertex3f(1.0, 0.0, 0.0);
    glVertex3f(1.0, 1.0, 0.0);
    glVertex3f(0.0, 1.0, 0.0);
glEnd();

Проблема в том, что прямоугольник вытянут очень далеко.Я подозреваю, что это из-за того, как я передаю аргумент.

1 Ответ

0 голосов
/ 21 ноября 2018

Вы не можете сделать это в C / C ++ на законных основаниях:

vector3::operator float*() const
{
    float arr[3];
    // ...
    return arr;
}

Это вызывает неопределенное поведение.Когда operator float*() возвращается, arr выходит из области видимости и возвращаемый указатель становится недействительным.

Считайте себя счастливчиком, что у вас нет носовых демонов ; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...