VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1464|回复: 3

使用opengl如何实现一点结一点的连续画线?(类似随着鼠标的移动,跟着画线)

[复制链接]

2

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-19 01:00:01 | 显示全部楼层 |阅读模式
void __fastcall TFormMain::RenderGLScene()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    DrawObjects();
    glFlush();
}
void __fastcall TFormMain::DrawObjects()
{  
   glBegin(GL_LINE_STRIP);
   glColor3f(1.0f,0.0f,0.0f); //设置当前色为红色
   glVertex3f(0.0f,0.0f, 0.0f);
   glVertex3f(0.0f,X, 0.0f); //X是一个变化的值,通过RS232从外部陆续读入
   glEnd();
}
用以上的方法总是一条从0,0,0到最新的X值的直线,如何实现一点一点的连接,而不是从最初点到最后点的联结。
我需要的效果类似于,画图软件中随着鼠标的移动,跟着画线。
另外,如果不用 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);如何消除闪烁?
回复

使用道具 举报

0

主题

13

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-7-12 13:45:01 | 显示全部楼层
偶用得不多,没接触过类似LineTo的功能.不过你的glBegin()和glEnd()之间可以有多个点.

如你用一个vector<float> pts来存多个点,一但RS232有数据读入就在于push_back(X)进去.然后调用DrawObjects()

   glBegin(GL_LINE_STRIP);
   for(int i=0;i<pts.size();i++)
   {
       glVertex3f(0.0f,pts[i],0.0f);
   }
   glEnd();
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-9-6 19:30:01 | 显示全部楼层
我照1楼的代码编写,画出来的是扇形 ,线倒是挺连续的
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-9-6 19:45:01 | 显示全部楼层
我的代码如下:       
glBegin(GL_LINE_STRIP);                        
        for(int  i=m_uVertexNum;i <m_vVerter.size()-2;++i)
        {               
                glVertex2f(m_vVerter[i].x,m_vVerter[i].y);
               
        }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表