GameObjectPtr createCube() { GameObjectPtr cubeObj; GLfloat cubeStructure[]= { 0.50, -0.50, -0.50, -0.00, 0.00, 0.50, -0.50, 0.50, 0.33, 0.00, -0.50, -0.50, 0.50, 0.33, 0.33, -0.50, -0.50, -0.50, -0.00, 0.33, 0.50, 0.50, -0.50, 0.67, 0.33, 0.50, -0.50, -0.50, 0.33, 0.33, -0.50, -0.50, -0.50, 0.33, 0.00, -0.50, 0.50, -0.50, 0.67, 0.00, 0.50, 0.50, 0.50, 0.67, 0.67, 0.50, -0.50, 0.50, 0.33, 0.67, -0.50, 0.50, 0.50, 0.67, 1.00, -0.50, -0.50, 0.50, 0.33, 1.00, -0.50, 0.50, -0.50, 0.33, 1.00, -0.50, -0.50, -0.50, -0.00, 1.00, -0.50, -0.50, 0.50, -0.00, 0.67, -0.50, 0.50, 0.50, 0.33, 0.67, -0.50, 0.50, 0.50, -0.00, 0.67, 0.50, 0.50, 0.50, -0.00, 0.33, 0.50, 0.50, -0.50, 0.33, 0.33, -0.50, 0.50, -0.50, 0.33, 0.67, }; GLushort cubeIndices[]= { 0, 1, 2, 2, 3, 0, 4, 5, 6, 6, 7, 4, 8, 9, 5, 5, 4, 8, 10, 11, 9, 9, 8, 10, 12, 13, 14, 14, 15, 12, 16, 17, 18, 18, 19, 16, }; //create mesh MeshPtr mesh = new Mesh(); //create geometry GeometryPtr geometry = mesh->createEmpty(MVF_POS_3F|MVF_TCOORD_2F, 20, 36, true); geometry->appendVertexData(0, cubeStructure, sizeof(cubeStructure)); geometry->appendIndexData(cubeIndices, sizeof(cubeIndices)); //create material MaterialPtr material = new Material(); material->setShaderProgramFromFile("media/texture.vs","media/texture.fs").setTextureProperty("u_map","media/cube.tga").setTextureProperty("u_map2","media/cube2.tga"); material->updateShaderProperites(); mesh->setMaterial(material); //mesh renderer MeshRenderer* mesh_renderer = new MeshRenderer(); mesh_renderer->setMesh(mesh); //game object with mesh renderer cubeObj = new GameObject(); cubeObj->addComponent(mesh_renderer); return cubeObj; }