我是OpenGL的新手。我正在练习我教科书中的练习,但我无法得到所有象限中Bresenham线算法的输出。
以下是编码:
#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。
答案 0 :(得分: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)
但我没有看到你真正宣布这些功能的任何地方。所以我猜,这些函数是你得到错误的原因,因为没有定义。