glVertex3f和glVertex2fx显示不同的结果

时间:2018-11-21 05:44:07

标签: c++ arrays opengl casting

我怀疑这与我的转换代码有关:

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 :(得分:2)

您不能在C / C ++中合法地这样做:

../

它调用未定义的行为。当<Image>返回时,vector3::operator float*() const { float arr[3]; // ... return arr; } 超出范围,返回的指针变为无效。

请考虑一下自己很幸运,您没有nasal demons;-)