#include <glut.h> #include <stdlib.h> #include <math.h> void init(void) { glClearColor(0,1.0,1.0,0.0); glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,500.0,0.0,400.0); } void lineBres(int x0,int y0,int xEnd,int yEnd) { //HDC hdc; glClear (GL_COLOR_BUFFER_BIT); glColor3f (0.0, 0.0, 1.0); int dx=abs(xEnd-x0), dy=abs(yEnd-y0); int p=2*dy-dx; int twoDy=2*dy, twoDyMinusDx=2*(dy-dx); int x, y; if (x0>xEnd) //选择起始点位置 { x=xEnd; y=yEnd; xEnd=x0; } else { x=x0; y=y0; } glBegin(GL_POINTS); glVertex2i(x,y); glEnd(); while (x<xEnd) //选择点亮的光栅 { x++; if (p<0) p+=twoDy; else { y++; p+=twoDyMinusDx; } glBegin(GL_POINTS); glVertex2i(x,y); glEnd(); } } void lineSegment(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0,0.0,0.0); lineBres(110,170,240,290); glFlush(); } void main(int argc,char** argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowSize(500,400); glutInitWindowPosition(300,300); glutCreateWindow("2640620227 张建国"); init(); glutDisplayFunc(lineSegment); glutMainLoop(); }