openGL初学,为什么直线显示不出来?
EggY1 2011-05-19 03:28:53 各位高手,指点下代码。小弟初学openGL
void lineBres(int x0,int y0,int xEnd,int yEnd,int m)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (0.0, 0.0, 1.0);
//glBegin(GL_POLYGON);
int dx=abs(xEnd-x0), dy=abs(yEnd-y0);
int x, y;
glVertex2i(x0,y0);//选择起始点位置
if (dx>dy)
{
m = (double)dy / (double)dx;
y = y0 + 0.5;
dx = (xEnd > x0) ? 1 : -1;
m *= dx;
while (x0 != xEnd) {
x0 += dx;
y += m;
glVertex2i(x,y);
}
}
else if (dy != 0) {
m = (double)dx / (double)dy;
x = x0 + 0.5;
dy = (yEnd > y0) ? 1 : -1;
m *= dy;
while (y0 != yEnd) {
y0 += dy;
x += m;
glVertex2i(x,y);
}
//glEnd();
}
}
void myMouseFunc (int button, int state, int x, int y)
{
if(state==GLUT_DOWN && button==GLUT_LEFT_BUTTON)
{
printf("aa");
X=x;
Y=y;
printf("%d",X);
printf("%d",Y);
}
else if(state==GLUT_UP && button==GLUT_LEFT_BUTTON)
{
printf("bb");
xEND=x;
yEND=y;
printf("%d",xEND);
printf("%d",yEND);
//return(X,Y,xEND,yEND);
}
}
void lineSegment(void)
{
glClear(GL_COLOR_BUFFER_BIT);
//myMouseFunc(0,0,0,0);
glColor3f(1.0,1.0,0.0);
lineBres(X,Y,xEND,yEND,m);
glFlush();
}
void main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(500,400);
glutInitWindowPosition(300,300);
glutCreateWindow("Hello World");
init();
glutMouseFunc(myMouseFunc);
glutDisplayFunc(lineSegment);
glutMainLoop();
}