大家好,请帮我看一下这个opengl 中点画线法为什么画不出来

观重青 2016-10-28 08:50:34
#include<stdlib.h>
#include<GL/glut.h>

void myinit(void)
{
glClearColor(1.0,1.0,1.0,0.0);
glColor3f(1.0,0.0,0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,500.0,0.0,500.0);
glMatrixMode(GL_MODELVIEW);
}

void MidpointLine(int x0,int y0,int x1,int y1)
{
int a,b,d1,d2,d,x,y;
a=y0-y1,b=x1-x0,d=2*a+b;
d1=2*a,d2=2*(a+b);
x=x0,y=y0;
while(x<x1)
{
if(d<0)
{
x++,y++,d+=d2;
}
else
{
x++,d+=d2;
}
}
}

void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
MidpointLine(200,200,2000,2000);
glFlush();
}

int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(0,0);
glutCreateWindow("中点画线法");
glutDisplayFunc(display);
myinit();
glutMainLoop();
}
...全文
458 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
十面矛盾 2018-11-27
  • 打赏
  • 举报
回复
void MidPointLine(int x1, int y1, int x2, int y2) { int a, b, dt1, dt2, d, x, y; a = y1 - y2; b = x2 - x1; d = 2*a + b; dt1 = a + b + a + b; dt2 = a + a; x = x1; y = y1; glColor3f(1.0f, 0.0f, 0.0f); glBegin(GL_POINTS); glVertex2i(x, y); glEnd(); while (x < x2) { if (d < 0) { x++; y++; d += dt1; } else { x++; d += dt2; } glBegin(GL_POINTS); glVertex2i(x, y); glEnd(); } }
headache_ 2016-11-14
  • 打赏
  • 举报
回复
MidpointLine()里面的画点函数呢? while(x<x1) { if(d<0) { x++,y++,d+=d2; } else { x++,d+=d2; } glVertex2f(x, y); //加个这个 }

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧