Path: blob/21.2-virgl/include/HaikuGL/GLRenderer.h
4558 views
/*1* Copyright 2006, Philippe Houdoin. All rights reserved.2* Distributed under the terms of the MIT License.34* This header defines BGLRenderer, the base class making up5* the Haiku GL renderer add-ons (essentially selfcontained C++6* shared libraries that do the actual rendering such as7* libswpipe.so and libswrast.so)8*/9#ifndef GLRENDERER_H10#define GLRENDERER_H111213#include <BeBuild.h>14#include <GLView.h>151617class BGLDispatcher;18class GLRendererRoster;1920typedef unsigned long renderer_id;2122class _EXPORT BGLRenderer23{24// Private unimplemented copy constructors25BGLRenderer(const BGLRenderer &);26BGLRenderer & operator=(const BGLRenderer &);2728public:29BGLRenderer(BGLView *view, ulong bgl_options);30virtual ~BGLRenderer();3132void Acquire();33void Release();3435virtual void LockGL();36virtual void UnlockGL();3738virtual void SwapBuffers(bool VSync = false);39virtual void Draw(BRect updateRect);40virtual status_t CopyPixelsOut(BPoint source, BBitmap *dest);41virtual status_t CopyPixelsIn(BBitmap *source, BPoint dest);4243virtual void FrameResized(float width, float height);4445virtual void DirectConnected(direct_buffer_info *info);46virtual void EnableDirectMode(bool enabled);4748inline int32 ReferenceCount() const { return fRefCount; };49inline ulong Options() const { return fOptions; };50inline BGLView* GLView() { return fView; };5152private:53friend class GLRendererRoster;5455virtual status_t _Reserved_Renderer_0(int32, void *);56virtual status_t _Reserved_Renderer_1(int32, void *);57virtual status_t _Reserved_Renderer_2(int32, void *);58virtual status_t _Reserved_Renderer_3(int32, void *);59virtual status_t _Reserved_Renderer_4(int32, void *);6061int32 fRefCount; // How much we're still useful62BGLView* fView; // Never forget who is the boss!63ulong fOptions; // Keep that tune in memory6465GLRendererRoster* fOwningRoster;66renderer_id fID;67};6869extern "C" _EXPORT BGLRenderer* instantiate_gl_renderer(BGLView *view, ulong options);707172#endif // GLRENDERER_H737475