作者littleshan (我要加入剑道社!)
看板GameDesign
标题Re: [程式] 如何用OpenGL切割图片?
时间Tue Feb 20 21:55:14 2007
※ 引述《zergaiur (aiur)》之铭言:
: ※ 引述《littleshan (我要加入剑道社!)》之铭言:
: : 把这张小图画出来的时间大致由以下几个因素决定:
: : 1. 小图在萤幕上的面积
: : 2. 你使用的 texture filter
: : 3. 绘图硬体的能力 (texture unit 的数量与速度)
: : 和整张 texture 的大小并没有很明显的关系
: : 用 texture coordinate 来切图是很有效也很常见的做法
: : 不过你这样的写法的确还有进步空间
: : 那就是每张小图的 texture coordinate 都是固定的
: : 所以你没必要每次 render 时都重新计算一次
: : 而且使用 glBegin() / glEnd() 画东西的效率极差
: : 用 vertex array 会比较快,或是 vbo
: Vertex Array 或 vbo .... 这两个我倒是没听过~
: 我只是写2D的小游戏...
: 如果要把程式改成这两种方法不知道要怎麽改
先确认一下
因为我不太确定你现在遇到的问题是什麽
所以假设是你用目前的做法画图 但效率很差
原因可能有很多
1. 在每张 frame 之间,CPU 做了许多不必要的运算,比如说 AI
→ 有些东西不需要每个 frame 计算,有些东西只需要解答近似即可,
这些都可以节省 CPU 的运算时间。
2. texture 绘制速度过慢
→ 通常是硬体不够快,不过现在的显示卡在这方面的速度都足以应付
2D 游戏的需求。
3. CPU 至 GPU 的传输过慢
→ 如果每个 frame 都要画出上百万个三角形,那麽把这些三角形资讯传
到显示卡的时间相当可观。vbo 可以解决这个问题,不过在 2D 游戏
中不可能用到这麽多的多边形来画人物,所以改用 vbo 并不会对效能
产生明显的帮助。
如果有效能上的问题,先找出问题所在比较重要。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.170.54.89