查看: 2037|回复: 3

使用像素操作方式将一张大图片做背景的方式好不?

[复制链接]

该用户从未签到

发表于 2009-8-15 10:58:56 | 显示全部楼层 |阅读模式
在一篇文章(http://www.linuxgraphics.cn/graphics/opengl_performance_opt.html)的最后部分说 像素操作会中断整个图形流水线的执行。
问题1:我希望将一张很大的图片(宽度3000以上)作为背景显示在一个分辨率在3000x3000以上的屏幕上,请问这样使用像素操作(glBitmap/glDrawPixels/glReadPixels/glCopyPixels)是否会很慢?
问题2:如果使用纹理贴图的方式是否效果会更糟?或者有无其他更好的办法?
问题3:使用像素操作在OSG中怎样写代码?

该用户从未签到

发表于 2009-8-15 20:10:57 | 显示全部楼层
glDrawPixels有点浪费资源,用纹理或许更好一些
OSG中可以用DrawPixels类实现直接绘制位图

该用户从未签到

 楼主| 发表于 2009-8-16 10:34:25 | 显示全部楼层
谢谢array
使用纹理的话是否会因为使用的太大的图片导致纹理自动缩放而致图片不够清晰?
我想获取当前系统支持的最大纹理图片的尺寸,osg中有无相应的函数可以完成这样的操作?
我看了osg::State类,该类貌似没有用来查询纹理尺寸限制的函数啊?
如果在osg中想获取纹理最大尺寸,是否只能在回调函数中写opengl函数获取呢?

该用户从未签到

发表于 2009-8-16 17:52:40 | 显示全部楼层
纹理尽量用2的幂次方尺寸的图片,自动缩放当然会影响性能;此外太大分辨率的图片会有尺寸限制,要自行分成多块。
获取最大纹理图片尺寸用OpenGL函数最为简单,用Texture::Extensions类的函数也可以,注意要先定义OpenGL渲染上下文(wglMakeCurrent);写在相机的绘制回调中比较好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表