我是OpenGL的初学者,“我的”第一个程序是这个Sierpinski Gasket。我在MacBook Pro上使用Netbeans,我相信我已经安装了库,但可能没有正确链接。
#include <iostream>
#include <stdio.h>
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#include <GLUT/glut.h>
#include <OpenGL/glext.h>
void myinit(){
glClearColor(1.0,1.0,1.0,1.0);
glColor3f(1.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,50.0,0.0,50.0);
glMatrixMode(GL_MODELVIEW);
}
void display(){
GLfloat vertices[3][2]={{0.0,0.0},{25.0,50.0},{50.0,0.0}};
int i, j, k;
int rand();
GLfloat p[2]={7.5,5.0};
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POINTS);
for(k=0; k<5000; k++){
j=rand()*3;
p[0]=(p[0]+vertices[j][0])/2.0;
p[1]=(p[1]+vertices[j][1])/2.0;
glVertex2fv(p);
}
glEnd();
glFlush();
}
int main(int argc, char** argv) {
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(0,0);
glutCreateWindow("Sierpinski Gasket");
glutDisplayFunc(display);
myinit();
glutMainLoop();
}
以下是编译错误:
架构x86_64的未定义符号:
“_ glutInit”,引自:
_main in main.o
“_ glutInitDisplayMode”,引自:
_main in main.o
“_ glutInitWindowSize”,引自:
_main in main.o
“_ glutInitWindowPosition”,引自:
_main in main.o
“_ glutCreateWindow”,引自:
_main in main.o
“_ glutDisplayFunc”,引自:
_main in main.o
“_ glutMainLoop”,引自:
_main in main.o
ld:找不到架构x86_64的符号
collect2:ld返回1退出状态
make [2]: * [dist / Debug / GNU-MacOSX / sierpinski]错误1
make [1]: * [.build-conf]错误2
make: * [。build-impl]错误2
答案 0 :(得分:12)
您需要链接GLUT框架。在项目属性&gt;链接器&gt;命令行&gt;附加选项,指定
-framework GLUT
答案 1 :(得分:0)
代码中的轻微修正:
j = rand() % 3;
而不是rand() * 3;
。由于显而易见的原因,这给了seg错误。