-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 に答える