Home | History | Annotate | Download | only in scene
      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);
     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