OpenGL绘制直线,有没有什么办法可以提高绘图效率的,请大牛们给出思路。

zhouzhipen 2010-07-01 04:01:30
程序大致就是下面这样子,


typedef struct tagPoint3D{
GLdouble x;
GLdouble y;
GLdouble z;
}POINT3D;

typedef struct tagColor3D{
GLdouble r;
GLdouble g;
GLdouble b;
}COLOR3D;
....

POINT3D *pPoints=new POINT3D[200000];
COLOR3D colors[10]=
{
{...},
}
....

//以上代码得到了200000个点



//现在要用这些点画线
//绘制代码
...
glBegin(GL_LINE_STRIP);
pEnd=pPoints+200000;
for(POINT3D* p=pPoints;p<pEnd;p++)
{
if(nColor>0)
glColor3dv(colors+nColor);
else
glColor3dv(colors);

glVertex3dv(p);
}
glEnd()
...



我的问题就是怎么来提高绘图效率?
...全文
497 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hiiishe 2010-07-01
  • 打赏
  • 举报
回复
顶点数组!!!!!!
weirdman 2010-07-01
  • 打赏
  • 举报
回复
直接用现成函数啊
zhouzhipen 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sevencat 的回复:]
1、顶点数组好像也可以设颜色的吧。
2、贴图不比直接绘制快,但比画点要快。
[/Quote]

我不是画点,是用顶点画直线。比贴图肯定要快一些。

顶点数组怎么设置颜色,能指点一下不?
gxglsshui 2010-07-01
  • 打赏
  • 举报
回复
帮 顶
向立天 2010-07-01
  • 打赏
  • 举报
回复
你用的方法应该是最合理的了
Jimmy_Xia 2010-07-01
  • 打赏
  • 举报
回复
OpenGL没做过,不懂。
画的这么多的点都不相同?还没有规律?
建几个线程行不行?反正他们直接也没啥关联。都是一个点一个点的画。
胡言乱语,楼下继续。
VR_Lab 2010-07-01
  • 打赏
  • 举报
回复
顶点数组里面可以用到颜色数组方面的,同样的道理。
sevencat 2010-07-01
  • 打赏
  • 举报
回复
1、顶点数组好像也可以设颜色的吧。
2、贴图不比直接绘制快,但比画点要快。
zhouzhipen 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xianglitian 的回复:]
你这些代码效率很低么
低到什么程度
[/Quote]

不是说这些代码效率低,我是想知道有办法提高效率的?

[Quote=引用 5 楼]
可以采用顶点数组来提高效率,参考这篇文章
http://blog.csdn.net/vagrxie/archive/2009/10/20/4703549.aspx
[/Quote]

我也考虑过,但每一个点都有颜色的变化。顶点数组不适合。


[Quote=引用 3 楼]
做成贴图吧。
[/Quote]

贴图比直接绘制快??

[Quote=引用 2 楼]
画线是一个点一个点的画??
[/Quote]

部长难道有更好的办法?

blpluto 2010-07-01
  • 打赏
  • 举报
回复
为什么是画的全部是点呢~~~~
zhouzhipen 2010-07-01
  • 打赏
  • 举报
回复
非常感谢各位的帮助,现在就算是用上了各种高级功能还是没多在的性能的提升。看来不能从渲染上优化了。只能减少制顶点数量了。
VR_Lab 2010-07-01
  • 打赏
  • 举报
回复
可以采用顶点数组来提高效率,参考这篇文章
http://blog.csdn.net/vagrxie/archive/2009/10/20/4703549.aspx
张赐 2010-07-01
  • 打赏
  • 举报
回复
使用vbo就可以提高渲染的效率了
雪影 2010-07-01
  • 打赏
  • 举报
回复
佩服lz的学习精神,凌晨四点发帖~~

两万多个点滑什么线? 可以考虑去除一部分点吧。
sevencat 2010-07-01
  • 打赏
  • 举报
回复
做成贴图吧。
sevencat 2010-07-01
  • 打赏
  • 举报
回复
一般来说还有两个优化,一个是strip,就是条带状三角形,一个是point spirit。
Eleven 2010-07-01
  • 打赏
  • 举报
回复
画线是一个点一个点的画??
向立天 2010-07-01
  • 打赏
  • 举报
回复
你这些代码效率很低么
低到什么程度
zhouzhipen 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 sevencat 的回复:]
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=45
这个教程可能对你有帮助,如果你没看过nehe的opengl教程,建议你先看完再来抱怨。
[/Quote]

非常感谢!
看了教程,但似乎他画的是面,与我目前遇到的问题不是一样的。我的问题是需要能改变每一顶点上的颜色,同时提高绘制效率。

我先仔细看看教程。

希望再有大侠不惜赐教!
sevencat 2010-07-01
  • 打赏
  • 举报
回复
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=45
这个教程可能对你有帮助,如果你没看过nehe的opengl教程,建议你先看完再来抱怨。
加载更多回复(3)

19,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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