-1

我是OpenGL的新手。我正在练习我教科书中的练习,但我无法获得所有象限中应该在布雷森汉姆线算法中的输出。

这是编码:

#include <Windows.h>
#include <GL/glut.h>
void init(void) {
   glClearColor(0.0, 0.0, 0.0, 0.0);
   glShadeModel(GL_FLAT);
}
void BresnCir(void) {
   int delta, deltadash;
   glClear(GL_COLOR_BUFFER_BIT);
   glPointSize(3.0);
   int r = 150;
   int x = 0;
   int y = r;
   int D = 2 * (1 - r);
   glBegin(GL_POINTS);
   do {
      glVertex2i(x, y);
      if (D < 0) {
         delta = 2 * D + 2 * y - 1;
         if (delta <= 0) {
            x++;
            Right(x);
         } else {
            x++;
            y--;
            Diagonal(x, y);
         }
         glVertex2i(x, y);
      } else {
         deltadash = 2 * D - 2 * x - 1;
         if (deltadash <= 0) {
            x++;
            y--;
            Diagonal(x, y);
         } else {
            y--;
            Down(y);
         }
         glVertex2i(x, y);
      }
      if (D == 0) {
         x++;
         y--;
         Diagonal(x, y);
         glVertex2i(x, y);
      }
   } while (y > 0);
   glEnd();
   glFlush();
}
int main(int argc, char** argv) {
   glutInit(&argc, argv);
   glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
   glutInitWindowSize(400, 150);
   glutInitWindowPosition(100, 100);
   glutCreateWindow(argv[0]);
   init();
   glutDisplayFunc(BresnCir);
   glutMainLoop();
   return 0;
}

但是,它仍然出现错误 C3861。

4

1 回答 1

1

但是,它仍然出现错误 C3861

如果您使用的是 Visual Studio,则错误 C3861表示未找到标识符即使您没有使用 Visual Studio,错误代码的含义也可能相同。

以下示例将生成C3861 错误

void f2() {}

int main() {
    f(); // Generate C3861 Error
    f2(); // OK
}

正如您在示例中看到的,我们试图调用该函数f(),但该函数不存在,因此找不到标识符

在您的代码中,您正在使用以下函数。

  • Diagonal(x, y)
  • Right(x)
  • Down(y)

但是我看不到您实际声明这些功能的任何地方。所以我猜,这些函数是你得到错误的原因,因为没有定义。

于 2013-11-07T15:44:33.667 回答