Ошибка проверки времени выполнения № 0: Почему я получаю это и что это значит? - PullRequest
0 голосов
/ 02 апреля 2011

В моей программе (для домашнего задания) я загружаю модель, которая представляет собой набор вершин, нормалей и т. Д., В имеющуюся у меня структуру.При рисовании я передаю модель функции void drawModel(Model model).Это дает мне такую ​​ошибку:

Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.  This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.

Я оглядывался по сторонам, и мне показалось, что один из ответов был потому, что то, что я передаю, слишком велико, и это портит компилятор.Поэтому я попытался изменить его, чтобы функция drawModel принимала указатель на структуру (что я должен был сделать для начала ...), но как только я обращаюсь к ней в функции, я получаю эту ошибку.

Как я могу обойти это?И почему это происходит?

Вот вся функция

void drawModel(Model * model)
{
    int i, g; //i is the main iterator, g keeps track of what part we're on
    int edge; //The current edge we're on
    g = 0;

    for(i = 0; i < (model->faceCount); i++) //This is just to test why it's occuring
    {
    }
    glEnableClientState(GL_VERTEX_ARRAY);
    glVertexPointer(3, GL_FLOAT, 0, model->vertices);
    glEnableClientState(GL_NORMAL_ARRAY);
    glNormalPointer(3, GL_FLOAT, 0, model->normals);
    for(i = 0; i < (model->faceCount); i++) //Right here is where i get the error
    {
        if(i == model->parts[g])
        {
            //Set colour to the part colour

            g++;
        }

        glDrawElements(GL_POLYGON, model->faces[i].edges, GL_UNSIGNED_BYTE,
            model->faces[i].edge);
    }
}

Примечание: я никогда раньше не использовал вершинные массивы GL, это моя первая попытка.

Я вызывал drawModel так: drawModel(&plane);

1 Ответ

1 голос
/ 02 апреля 2011

Проблема была

glNormalPointer(3, GL_FLOAT, 0, model->normals);

Это должно было прочитать

glNormalPointer(GL_FLOAT, 0, model->normals);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...