1/*
2 * Copyright 2009, Haiku Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 * 		Alexandre Deckner <alex@zappotek.com>
7 */
8#ifndef _RENDERVIEW_H
9#define _RENDERVIEW_H
10
11#include <GLView.h>
12
13#include <vector>
14
15
16class Camera;
17class MeshInstance;
18
19
20class RenderView : public BGLView {
21public:
22					RenderView(BRect frame);
23					~RenderView();
24
25	virtual void	AttachedToWindow();
26	virtual void	DetachedFromWindow();
27	virtual void	FrameResized(float width, float height);
28	virtual	void	ErrorCallback(unsigned long error);
29
30protected:
31	void			_InitGL();
32	void			_CreateScene();
33	void			_DeleteScene();
34	void			_UpdateViewport();
35	void			_UpdateCamera();
36	bool			_Render();
37	uint32			_CreateRenderThread();
38	void			_StopRenderThread();
39	static int32	_RenderThreadEntry(void* pointer);
40	int32			_RenderLoop();
41
42	Camera*			fMainCamera;
43
44	typedef std::vector<MeshInstance*> MeshInstanceList;
45	MeshInstanceList	fMeshInstances;
46
47	thread_id		fRenderThread;
48	bool			fStopRendering;
49
50	BPoint			fRes, fNextRes;
51	bigtime_t		fLastFrameTime;
52};
53
54#endif /* _RENDERVIEW_H */
55