float类型的参数与GLfloat不匹配?

时间:2010-09-26 21:54:20

标签: c++ opengl casting arguments

我试图在这里做一些事情但是错误显示我真的不知道如何正确完成它我试图将所有变量放在Image.h中作为GLfloat而不仅仅是浮动并且同样的错误一直出现理念? 这是我的图。

Class Figure
{
    public:
        Figure(float x,float y,float z);
        void Parameters(float x,float y,float z);
        void Draw();
        float paramx(){
        return x1;
        }
        float paramy(){
        return y1;
        }
        float paramz(){
        return z1;
        }
    protected:
    private:
    float x1,y1,z1;
    list <Figure> m_vertices;
};

这是我的.cpp给我带来麻烦的一个&gt;。&lt;

Figure::Figure(float x,float y,float z){
this->x1=x;
this->y1=y;
this->z1=z;
}
void Figure::Parameters(float x,float y,float z)
{
m_vertices.push_back(Figure(x, y, z));
}
void Figure::Draw()
{
    list<Figure>::iterator p = m_vertices.begin();
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glLoadIdentity();
    gluLookAt(0.0,0.0,4.0,0.0,0.0,0.0,0.0,1.0,0.0);

    glBegin(GL_TRIANGLES);
    while(p != m_vertices.end()){
        glNormal3f(p->paramx,p->paramy,p->paramz);
        glVertex3f(p->paramx,p->paramy,p->paramz);
        p++;
    }
    glEnd();

}

据说问题出在glNormal3f和glVertex3f任何帮助都会非常感谢非常感谢

2 个答案:

答案 0 :(得分:3)

您需要调用函数:

    glNormal3f(p->paramx(), p->paramy(), p->paramz());
    glVertex3f(p->paramx(), p->paramy(), p->paramz());

答案 1 :(得分:0)

list<Figure>::iterator p ...所以p是一个迭代器,这意味着您需要访问基础数据,如(*p).paramx()。但这可能不是整个问题。如果没有从float到GLfloat的隐式转换,那么编译器仍然会抱怨。

[编辑]我的立场得到了纠正。 (*p).paramx()p->paramx()

相同