首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

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

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

使用opengl如何实现一点结一点的连续画线?(类似随着鼠标的移动,跟着画线)
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);如何消除闪烁?


[解决办法]
偶用得不多,没接触过类似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();

热点排行