您的位置:首页 > 运维架构

OPENGL—改进Bresenham画直线

2017-06-01 18:14 585 查看
// 改进Bresenham画直线
#include "stdafx.h"
#include <gl/glut.h>
#include <cmath>

void init(void)
{
glClearColor(1.0,1.0,1.0,1.0);    //设置背景颜色为白色
glMatrixMode(GL_PROJECTION);       //对投影相关进行操作
gluOrtho2D(0.0, 30.0, 0.0, 30.0);
}

void putpixel(int x, int y)
{
glColor3f(1.0, 0.0, 0.0);
glPointSize(2.0f);
glBegin(GL_POINTS);
glVertex2f(15+x, 15+y);
glEnd();
glFlush();
}

void BresenhamLine(int x0,int y0,int x1,int y1)
{
int dx,dy,e,x,y;
dx=x1-x0;
dy=y1-y0;
e=-dx;
x=x0;
y=y0;
while(x<=x1)
{
putpixel(x,y);
x++;
e=e+2*dy;
if(e>0)
{
y++;
e=e-2*dx;
}
}
}

void display()
{
glClear(GL_COLOR_BUFFER_BIT);
BresenhamLine(0,0,8,6);
}

int main(int argc,char** argv)
{

glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400,400);
glutInitWindowPosition(0,0);
glutCreateWindow("改进Bresenham画直线");
glutDisplayFunc(display);
init();
glutMainLoop();

return 0;
}
运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opengl