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()
...



我的问题就是怎么来提高绘图效率?
...全文
509 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)
译 者 序 近年来,随着计算机技术的进步,我们跨入了一个三维时代,各种扣人心弦的三维游戏、能数字化地显示天气变化的气象服务、震撼人心的3D数字化特殊效果,无不使我们体验到三维世界的全新感觉。可视化、计算机动画、虚拟现实是当今图形学领域的三大热门话题,它们的技术核心都是三维图形。 1992年7月,SGI公司首次发布了作为三维图形编程接口的OpenGL。目前它已成为国际上通用的开放式三维图形标准。一方面,OpenGL规范由ARB(OpenGL Architecture Review Board,OpenGL结构评审委员会)负责管理,充分保证了它的独立性、开放性、前瞻性和跨平台性。它可被集成到Unix、Windows NT 4.0、Windows 98、x窗口等窗口系统中。另一方面,Compaq 、IBM、 Intel、Microsoft等在计算机界具有主导作用的公司纷纷采用OpenGL图形的国际标准。各种游戏加速卡、专用加速部件都能不同程度地提高OpenGL程序的运行性能。这些都推动了OpenGL的发展,并迅速成为三维图形的国际标准。再者,SGI公司不断推出以OpenGL为基础的高级开发工具,以满足对图形工具性能日益增长的需求。这一切使得OpenGL成为最流行的三维图形开发工具。目前它已被广泛应用于CAD/CAM/CAE、地质、航空、医学图像处理、广告、艺术造型、电影后期制作等领域。 OpenGL由大量功能强大的图形函数组成,它集成了所有曲面造型、图形变换、光照、材质、纹理、像素操作、融合、反选择、雾化等复杂的计算机图形学算法。开发人员可以利用这些函数对整个三维图形轻松进行渲染,从而达到数字化现实生活景象的目的。 本书是OpenGL 参考手册的第3版,对OpenGL的函数进行了详细而简洁的说明,是程序员利用OpenGL进行程序开发的不可缺少的工具书。本书第1章是OpenGL入门,第2章对命令和例程进行了简介,第3章集中介绍了各种命令和例程,第4章介绍了定义的常量和相关命令,第5章是OpenGL参考说明,第6章是GLU的参考说明,第7章是GLX的参考说明。 本书在翻译过程中得到了国家863计划项目(863-511-942-016)的支持。参加翻译的人员还有王火亮、许宇荣、杨勤、杨颖、余牛、周贵仔、蒋丽、李岳梅,在此感谢他们的辛勤劳动。 由于计算机软件行业的飞速发展,加之时间仓促,翻译中难免会有不妥之处,如能得到您的及时指正将不胜感激。 我们的电子邮箱地址为caid@cs.zju.edu.cn. 译 者 2000年9月于求是园 目 录 译者序 前言 第1章 OpenGL简介 1 1.1 OpenGL基础 1 1.1.1 OpenGL图元及命令 1 1.1.2 OpenGL是一种过程语言 1 1.1.3 OpenGL的执行模式 2 1.2 基本OpenGL操作 2 第2章 命令和例程概述 4 2.1 OpenGL处理流程 4 2.1.1 顶点 4 2.1.2 ARB绘图子集 8 2.1.3 片断 9 2.2 其他OpenGL命令 11 2.2.1 使用求值器 11 2.2.2 执行选择和反馈 11 2.2.3 显示列表的使用 12 2.2.4 模式和运行的管理 12 2.2.5 获取状态信息 12 2.3 OpenGL实用库 13 2.3.1 生成纹理操作所需的图形 13 2.3.2 坐标转换 13 2.3.3 多边形的镶嵌分块 14 2.3.4 绘制球体、圆柱和圆盘 14 2.3.5 NURBS曲线和曲面 14 2.3.6 错误处理 15 2.4 对X窗口系统的OpenGL扩展 15 2.4.1 初始化 15 2.4.2 控制绘制操作 15 第3章 命令和例程一览 18 3.1 注释 18 3.2 OpenGL命令 19 3.2.1 图元 19 3.2.2 顶点数组 19 3.2.3 坐标转换 20 3.2.4 着色与光照 20 3.2.5 剪切 21 3.2.6 光栅化 21 3.2.7 像素操作 22 3.2.8 纹理 22 3.2.9 雾 23 3.2.10 帧缓冲区操作 24 3.2.11 求值器 24 3.2.12 选择与反馈 25 3.2.13 显示列表 25 3.2.14 模式与执行 25 3.2.15 状态查询 26 3.3 ARB扩展 26 3.3.1 多重纹理 26 3.3.2 绘图子集 26 3.4 GLU例程 28 3.4.1 纹

19,468

社区成员

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

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