游戏一直用的OpenGL,最近上面也不管死活的硬是要升级到DirectX,即然要生嘛,所有东西都要转到dx的api上。
OpenGL 上可以用 ARB_timer_query 取GPU的时间,但glGetQueryObjectui64vEXT这个方法只支持OGL3.2以上的版本,而且用Query time的方法,在有些低端的显卡上会有crash。所有我们的游戏凡是在OGL API调用的地方都进行了error check。
今天研究了下,DirectX上也是有相似的方法QUERY_DATA_TIMESTAMP_DISJOINT 也可以取到。
搜到一个老外写的详细的文章GPU Profiling参考参考,