C++程序  |  55行  |  1.27 KB

// Copyright 2015 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef BENCH_GL_WAFFLE_STUFF_H_
#define BENCH_GL_WAFFLE_STUFF_H_

#include <waffle.h>

#include "glinterface.h"

class WaffleInterface : public GLInterface {
 public:

  WaffleInterface() : display_(NULL),
                   config_(NULL),
                   surface_(NULL),
                   context_(NULL) { }
  virtual ~WaffleInterface() {}

  virtual bool Init();
  virtual void Cleanup();

  virtual void SwapBuffers();
  virtual bool SwapInterval(int interval);

  virtual void CheckError();

  virtual bool MakeCurrent(const GLContext& context);
  virtual const GLContext CreateContext();
  virtual void DeleteContext(const GLContext& context);
  virtual const GLContext& GetMainContext() {
    return context_;
  }

  const struct waffle_display* display() const {
    return display_;
  }

  const struct waffle_window* surface() const {
    return surface_;
  }

 private:
  void InitOnce();
  void GetSurfaceSize(GLint *width, GLint *height);

  struct waffle_display *display_;
  struct waffle_config *config_;
  struct waffle_window *surface_;
  struct waffle_context *context_;
};

#endif // BENCH_GL_WAFFLE_STUFF_H_