现代opengl的绘制方式

在opengl1.5以前,用ogl画图经常是glBegin,glClolor glVertex glEnd这些个api,现在ogl4.x以上,基本上都是讲

vbo tbo vao glsl 这些陌生东西了,往往书上说GPU编程,可编程管线。应该说现在ogl是有个计算机绘图的硬件模型的

,gpu模型对应的是opengl流水线,顶点几何片元处理器,cpu总线gpu一起构成了服务器客户端架构的绘图主从计算结构

,所以一般ogl书上讲ogl的绘制api是在和gpu远程通信,发指令,要gpu发挥水平,就要想办法减少ogl api  的调用次数,

绘制的同样式的图元要合在一起尽量放到vbo中。当然vbo合在一起也要花时间的,就要有个折中的最小vbo大小,即能保证

发送到gpu的ogl少,又能满足fps,修改延迟的要求,这就是个绘图几何数据的组织策略性的问题了,像opengl. org的wiki有讲batch的例子,u3d有自动批节点,还有3ds max很多画图软件都是这样的,即图元中同样显示样式是少数的,可以采用上述策略,当vbo中的图元变多了,glDrawArray Elements api调用倍数减少,然后通过glsl来修改每个图元,gpu这时可以发挥它的一刀切计算特性了。当然gpu可绘制的图元个数也是有上限的,如果每个图元都不一样也只能每个发给gpu一次,只能说这时gpu也很无可奈何。

posted @ 2020-08-31 13:21  abcstar  阅读(372)  评论(0编辑  收藏  举报