行主序与列主序OpenGL中使用的矩阵,都是数学意义上的标准矩阵。但是各个OpenGL应用在实现矩阵时,根据存储方式的不同,分为两个派别:行主序与列主序。行主序是指以行为优先单位,在内存中逐行存储;列主序是指以列为优先单位,在内存中逐列存储。下图是数学意义上的标准矩阵:标准矩阵在OpenGL中,举一个具体例子,平移矩阵表现为以下形式:OpenGL平移矩阵如果以行主序存储该矩阵,在内存中的布局如下图
延迟vector计算。例:不好的用法。优化后的用法。去冗余计算,vector整体计算。例:良好的用法。避免分支。(避免if语句)分支语句性能排序:a)最佳:编译期确定的常量b)可接受:uniform变量c)可能很差:在shader内计算的变量解决方案:将各个分支作为单独的shader。(会增加一点工作量及复杂度)实践参考:在性能和工量入复杂度之间作一个权衡。因受寄存器限制,SL的编译代码越短,效率
1.减少DrawCall次数,最大化一次性传入数据给显卡避免使用glVertex之类,转而使用glDrawArray,对数据集进行批次传送.在这里它的作用不仅仅只是优化数据传递带宽需求,它更可以减少函数调用在系统当中的消耗(在某些系统下,消耗相当可观)2.减少OpenGL的状态变化尽可能将状态相近的图形绘制命令放在一起,减少OpenGL状态变化。使用状态集合,降低驱动程序的CPU处理时间,3.图元
Mark一下Polygon分割算法:(1) A General Polygon Clipping Library (将Polygon分割成三角带) http://www.cs.man.ac.uk/~toby/alan/software/gpc.html(2)NvTriStrip Library http://www.nvidia.com/object/nvtristrip_
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号