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();
}
...全文
329 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Julykey 2011-05-19
  • 打赏
  • 举报
回复
glBegin(GL_POLYGON);这个是画多边形。
如果你想画直线glBegin(GL_LINES);
如果你想画连续的线段glBegin(GL_LINE_LOOP)
ryfdizuo 2011-05-19
  • 打赏
  • 举报
回复
你现在应该是画多个点啊,可以用glBegin(GL_LINE_LOOP)试试。
zerols 2011-05-19
  • 打赏
  • 举报
回复
画线不是应该放在glBegin(GL_LINES);和glEnd();之间吗?你为什么给注释掉了?

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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