1 /*
2  * Copyright (C) 2013 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5  * in compliance with the License. You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software distributed under the License
10  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11  * or implied. See the License for the specific language governing permissions and limitations under
12  * the License.
13  */
14 #ifndef SCENE_H
15 #define SCENE_H
16 
17 #include <graphics/Matrix.h>
18 #include <graphics/Mesh.h>
19 #include <graphics/Program.h>
20 #include <graphics/ProgramNode.h>
21 
22 #include <vector>
23 
24 class Scene {
25 public:
26     Scene(int width, int height);
~Scene()27     virtual ~Scene() {};
28     virtual bool setUpContext();
29     virtual bool setUpTextures() = 0;
30     virtual bool setUpMeshes() = 0;
31     virtual bool tearDown();
32     virtual bool update(int frame);
33     virtual bool draw() = 0;
34     void drawSceneGraph(int index);
35 protected:
36     virtual bool setUpPrograms() = 0;
37     virtual Matrix* setUpModelMatrix() = 0;
38     virtual Matrix* setUpViewMatrix() = 0;
39     virtual Matrix* setUpProjectionMatrix(float width, float height) = 0;
40     virtual bool updateSceneGraphs(int frame) = 0;
41     int mWidth;
42     int mHeight;
43     std::vector<Mesh*> mMeshes;
44     std::vector<GLuint> mTextureIds;
45     std::vector<ProgramNode*> mSceneGraphs;
46 private:
47     Matrix* mModelMatrix;
48     Matrix* mViewMatrix;
49     Matrix* mProjectionMatrix;
50 };
51 #endif
52