社区
图形处理/算法
帖子详情
openGL显示列表调用的问题,谢谢帮忙!!
kyanitelj
2003-08-20 02:19:35
在场景中绘制一组三维房屋,因为纹理渲染,数据库传输的问题,个人觉得当场景中房屋数目较多的时候等待时间有点让人不可忍受。
程序编写的时候是为每一个房屋创建一个显示列表,希望在每一个显示列表创建好之后不刷新现有的场景将该房屋添加到原有场景中,应该怎么做啊?
我现在用的是每创建好一个房屋就Invalidate 一次,可是还是不能一个一个的显示出来,只在所有房屋都创建完之后一次刷新全部显示出来。
请大虾指点一下,多谢!!!
...全文
99
17
打赏
收藏
openGL显示列表调用的问题,谢谢帮忙!!
在场景中绘制一组三维房屋,因为纹理渲染,数据库传输的问题,个人觉得当场景中房屋数目较多的时候等待时间有点让人不可忍受。 程序编写的时候是为每一个房屋创建一个显示列表,希望在每一个显示列表创建好之后不刷新现有的场景将该房屋添加到原有场景中,应该怎么做啊? 我现在用的是每创建好一个房屋就Invalidate 一次,可是还是不能一个一个的显示出来,只在所有房屋都创建完之后一次刷新全部显示出来。 请大虾指点一下,多谢!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kyanitelj
2003-09-08
打赏
举报
回复
谢谢各位了
bluebohe
2003-09-06
打赏
举报
回复
在这里假设所有的房屋都有相同的空间形状
假设你有了一个房屋的显示列表m_iRoom;
以下代码生成一个所有房屋的显示列表,之后你只要调用这个显示列表就可以了
m_iDisplayListName = glGenLists( 1 );
if( m_iDisplayListName )
glNewList( m_iDisplayListName, GL_COMPILE);
//画1000个房屋
for(i=0;i<1000;i++)//循环
{
//以下代码按照房屋的摆放对房屋进行变换
glPushMatrix();
//平移到合适位置
glTranslated(pGlyph->p.x,pGlyph->p.y,0);
//旋转到合适角度
glRotated(dRotate,0,0,1);
//将倾斜合适角度
glMultMatrixd(m);
glCallList(m_iRoom);
glPopMatrix();
}
if( m_iDisplayListName ) //生成成功
glEndList();
bluebohe
2003-09-02
打赏
举报
回复
我觉得你应该建立一个房屋的显示列表,然后嵌套多次调用这个显示列表完成房屋的渲染,包括缩放、平移等等
这样为所有房屋建立的显示列表只有两个(一个嵌套另一个),很方便就可以显示了
SlayerCarrier
2003-09-02
打赏
举报
回复
在建立一个List以后,立即调用CallList就可以绘出来了啊.不必在到OnDraw去.Invalidate又不会立即调用OnDraw(),它只会把WM_PAINT消息放到消息队列去啊,要你的函数返回才会去处理这个消息的.
kyanitelj
2003-09-01
打赏
举报
回复
可是我是在ondraw里面calllist啊,如果不Invalidate如何在建立好一个显示列表以后就添加房屋呢?
SlayerCarrier
2003-08-31
打赏
举报
回复
在建立一个List以后,立即调用CallList而且不要调用Invalidate!
MooseWOler
2003-08-27
打赏
举报
回复
list就象是个procedure或者说是routine
alphapaopao
2003-08-25
打赏
举报
回复
前期的准备造成的等待是合理的。当然你可以给出一个进度条,告诉用户耐心等待。
绘制速度太慢,需要考虑更好的方法。比如 kyanitelj 说的 LOD。
另外,我感觉 list 并不能有多大的好处。
kyanitelj
2003-08-25
打赏
举报
回复
另外有没有大虾做过LOD方面的工作,又可以参考的代码?谢谢了!!!
kyanitelj
2003-08-25
打赏
举报
回复
我就是用循环一个一个的CALLLIST啊,根本就不行,只在所有的现实列表都生成了以后才刷新一次,全部出来。glNewList(n,GL_COMPILE_AND_EXECUTE )也有用过,不行的。
kyanitelj
2003-08-25
打赏
举报
回复
就是因为在显示前准备好所有的现实列表等待时间太长了,感觉不能容忍阿,如果一个一个得出来,虽然场景完全刷新等待的时间还是比较长,但是在感觉上会是可容忍的
doall4u
2003-08-20
打赏
举报
回复
关注!!!
xuguilin
2003-08-20
打赏
举报
回复
应该是可以的,你可以从下面几个方面来找出错误:
1)每次Invalidate是否是调用了OnDraw,也就是是否有效了
2)每次绘制时你的坐标是否变化了,别老是在一块绘制
alphapaopao
2003-08-20
打赏
举报
回复
我觉得既然你使用了显示列表,那么就没有必要追求一个一个显示出来的效果。
你可以在显示之前准备好所有的显示列表,在现实的时候调用这些显示列表。
yyfzy
2003-08-20
打赏
举报
回复
我对显示列表也不大清楚
来听听
SlayerCarrier
2003-08-20
打赏
举报
回复
CallList不行吗?或者glNewList(n,GL_COMPILE_AND_EXECUTE )?
tinydrop
2003-08-20
打赏
举报
回复
简单用SendMessage(hWnd,WM_PAINT,0,0).
OpenCV学习笔记(15)使用
OpenGL
显示
双目视觉三维重构效果
上一篇笔记中使用Matlab初步
显示
了双目视觉重构出的环境三维效果图,不过并没有加上纹理信息。在OpenCV中文论坛里,大象的帖子(http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=8722&sid=02986dcffb5ebcedf299833e7cbf457c)给出了利用
OpenGL
显示
视差数据的三维点云图,这是一个学习
OpenGL
和OpenCV混合编程的好帖子,里面的讨论跟帖也很有参考意义,我下面的代码也是参考这个帖子的,感谢
【QT】
OpenGL
显示
六轴陀螺仪3D实时姿态
使用
Opengl
画陀螺仪的3D图,并和陀螺仪的三轴数据绑定以实时
显示
陀螺仪3D姿态
OpenCV学习笔记(15)使用
OpenGL
显示
双目视觉三维重构效果
OpenCV学习笔记(15)使用
OpenGL
显示
双目视觉三维重构效果 2010年06月24日 上一篇笔记中使用Matlab初步
显示
了双目视觉重构出的环境三维效果图,不过并没有加上纹理信息。在OpenCV中文论坛里,大象的帖子(http://www.opencv.org.cn/forum/viewtopic.php?f=1&t =8722&sid=029...
使用
OpenGL
显示
双目视觉三维重构效果
http://blog.csdn.net/chenyusiyuan/article/details/5691481 上一篇笔记中使用Matlab初步
显示
了双目视觉重构出的环境三维效果图,不过并没有加上纹理信息。在OpenCV中文论坛里,大象的帖子(http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=8
终端编译
opengl
程序编译运行_linux 下
opengl
编程 编译成功,运行不了!
各位大大们帮
帮忙
呀!编译通过了。#gcc-otest-lgluttest.c#./testfreeglut(./test):ERROR:InternalerrorinfunctionfgOpenWindowXErrorof...各位大大们帮
帮忙
呀!编译通过了。# gcc -o test -lglut test.c# ./testfreeglut (./test): ERROR: Interna...
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章