绑定一个VAO真的花了1ms还是我的秒表类坏了?

时间:2014-05-17 06:39:06

标签: opengl graphics shader lwjgl

这是我的秒表课程

public class Benchmark {
static long starttime;
static ArrayList<Long> timeList = new ArrayList<Long>();
public static void start() {
    glFinish();
    starttime = System.nanoTime();
}

public static void stop() {
    glFinish();
    timeList.add(System.nanoTime() - starttime);
    if(timeList.size() > 10) {
        Long total = (long) 0 ;
        for(Long time : timeList) {
            total += time;
        }
        System.out.println(((float)total / timeList.size())/1000000 ); 
        timeList.clear();
    }
}

这是简单的基准

    Benchmark.start();
    glBindVertexArray(vao);
    Benchmark.stop();

我正在读取1ms的值,这怎么可能?我的秒表坏了吗?我注意到如果我注释掉一些绘制调用,那么它会读取较低的.2ms值,这很奇怪,因为它不应该影响它。

绑定真的很贵或者这里有什么问题?

1 个答案:

答案 0 :(得分:3)

由于您拨打glFinish,您的代码执行时间可能会缩短。

原因是glFinish导致程序停止,直到所有连接/帧缓冲/状态更改完成为止:这包括任何绘制调用或缓冲区绑定。