0,0 → 1,76 |
/* |
* Copyright 2006, Philippe Houdoin. All rights reserved. |
* Distributed under the terms of the MIT License. |
|
* This header defines BGLRenderer, the base class making up |
* the Haiku GL renderer add-ons (essentially selfcontained C++ |
* shared libraries that do the actual rendering such as |
* libswpipe.so and libswrast.so) |
*/ |
#ifndef GLRENDERER_H |
#define GLRENDERER_H |
|
|
#include <BeBuild.h> |
#include <GLView.h> |
|
|
class BGLDispatcher; |
class GLRendererRoster; |
|
typedef unsigned long renderer_id; |
|
class BGLRenderer |
{ |
// Private unimplemented copy constructors |
BGLRenderer(const BGLRenderer &); |
BGLRenderer & operator=(const BGLRenderer &); |
|
public: |
BGLRenderer(BGLView *view, ulong bgl_options, |
BGLDispatcher *dispatcher); |
virtual ~BGLRenderer(); |
|
void Acquire(); |
void Release(); |
|
virtual void LockGL(); |
virtual void UnlockGL(); |
|
virtual void SwapBuffers(bool VSync = false); |
virtual void Draw(BRect updateRect); |
virtual status_t CopyPixelsOut(BPoint source, BBitmap *dest); |
virtual status_t CopyPixelsIn(BBitmap *source, BPoint dest); |
|
virtual void FrameResized(float width, float height); |
|
virtual void DirectConnected(direct_buffer_info *info); |
virtual void EnableDirectMode(bool enabled); |
|
inline int32 ReferenceCount() const { return fRefCount; }; |
inline ulong Options() const { return fOptions; }; |
inline BGLView* GLView() { return fView; }; |
inline BGLDispatcher* GLDispatcher() { return fDispatcher; }; |
|
private: |
friend class GLRendererRoster; |
|
virtual status_t _Reserved_Renderer_0(int32, void *); |
virtual status_t _Reserved_Renderer_1(int32, void *); |
virtual status_t _Reserved_Renderer_2(int32, void *); |
virtual status_t _Reserved_Renderer_3(int32, void *); |
virtual status_t _Reserved_Renderer_4(int32, void *); |
|
int32 fRefCount; // How much we're still useful |
BGLView* fView; // Never forget who is the boss! |
ulong fOptions; // Keep that tune in memory |
BGLDispatcher* fDispatcher;// Our personal GL API call dispatcher |
|
GLRendererRoster* fOwningRoster; |
renderer_id fID; |
}; |
|
extern "C" _EXPORT BGLRenderer* instantiate_gl_renderer(BGLView *view, ulong options, BGLDispatcher *dispatcher); |
|
|
#endif // GLRENDERER_H |