// Construct visual object display list. void Cone::initialize() { setShaderValues(); initializeConeBottom(); initializeConeBody(); VisualObject::initialize(); } // end initialize
// Construct visual object display list. void Floor2::initialize() { setShaderValues(); initilizeDarkSquares(); initilizeLightSquares(); VisualObject::initialize(); } // end initialize
// Construct visual object display list. void Floor3::initialize() { setShaderValues(); // vector containers to hold data vector<pntVertexData> v; // vertex positions vector<unsigned int> indices; // indices GLuint VBO, IBO; // Identifiers for buffer objects vec3 n = vec3( 0.0f, 0.0f, 1.0f); vec3 v0 = vec3( -width/2, 0.0f, 0.0f); vec3 v1 = vec3( width/2, 0.0f, 0.0f); vec3 v2 = vec3( width/2, height, 0.0f); vec3 v3 = vec3( -width/2, height, 0.0f); vec2 t0 = vec2(0.0f, 0.0f); vec2 t1 = vec2(10.0f, 0.0f); vec2 t2 = vec2(10.0f, 10.0f); vec2 t3 = vec2(0.0f, 10.0f); v.push_back( pntVertexData( v0, n, t0) ); // 0 v.push_back( pntVertexData( v1, n, t1) ); // 1 v.push_back( pntVertexData( v2, n, t2) ); // 2 v.push_back( pntVertexData( v3, n, t3) ); // 3 indices.push_back( 0 ); indices.push_back( 1 ); indices.push_back( 2 ); indices.push_back( 0 ); indices.push_back( 2 ); indices.push_back( 3 ); glGenVertexArrays (1, &vertexArrayObject); glBindVertexArray( vertexArrayObject ); // Create the buffer to hold interleaved data and bind the data to them glGenBuffers(1, &VBO); glBindBuffer(GL_ARRAY_BUFFER, VBO); // Buffer for vertex data glBufferData(GL_ARRAY_BUFFER, v.size() * sizeof(pntVertexData), &v[0], GL_STATIC_DRAW); //Buffering vertex data glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(pntVertexData), 0); glEnableVertexAttribArray(0); glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(pntVertexData), (const GLvoid*)sizeof(vec3) ); glEnableVertexAttribArray(1); glVertexAttribPointer(3, 2, GL_FLOAT, GL_FALSE, sizeof(pntVertexData), (const GLvoid*)(2 * sizeof(vec3)) ); glEnableVertexAttribArray(3); // Generate a buffer for the indices glGenBuffers(1, &IBO); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IBO); glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size() * sizeof(unsigned int), &indices[0] , GL_STATIC_DRAW); // store the number of indices for later use indiceCount = indices.size(); v.clear(); indices.clear(); VisualObject::initialize(); } // end initialize
void Cube::initialize() { GLfloat hW = width/2.0f; GLfloat hH = height/2.0f; GLfloat hD = depth/2.0f; setShaderValues(); vector<pntVertexData> v; vec3 v0 = vec3( -hW, -hH, hD); vec3 v1 = vec3( -hW, -hH, -hD); vec3 v2 = vec3( hW, -hH, -hD); vec3 v3 = vec3( hW, -hH, hD); vec3 v4 = vec3( -hW, hH, hD); vec3 v5 = vec3( -hW, hH, -hD); vec3 v6 = vec3( hW, hH, -hD); vec3 v7 = vec3(hW, hH, hD); vec3 normal; vec2 t0 = vec2(0.0f, 0.0f); vec2 t1 = vec2(1.0f, 0.0f); vec2 t2 = vec2(1.0f, 1.0f); vec2 t3 = vec2(0.0f, 1.0f); // 0 4 1 // 1 4 5 // 3 2 6 // 3 6 7 // 0 3 7 // 0 7 4 // 1 5 2 // 2 5 6 // 4 7 5 // 4 6 5 // 0 2 3 // 0 1 2 normal = findUnitNormal(v0, v4, v1); v.push_back(pntVertexData(v0, normal, t1)); v.push_back(pntVertexData(v4, normal, t2)); v.push_back(pntVertexData(v1, normal, t0)); normal = findUnitNormal(v1, v4, v5); v.push_back(pntVertexData(v1, normal, t0)); v.push_back(pntVertexData(v4, normal, t2)); v.push_back(pntVertexData(v5, normal, t3)); normal = findUnitNormal(v3, v2, v6); v.push_back(pntVertexData(v3, normal, t0)); v.push_back(pntVertexData(v2, normal, t1)); v.push_back(pntVertexData(v6, normal, t2)); normal = findUnitNormal(v3, v6, v7); v.push_back(pntVertexData(v3, normal, t0)); v.push_back(pntVertexData(v6, normal, t2)); v.push_back(pntVertexData(v7, normal, t3)); normal = findUnitNormal(v0, v3, v7); v.push_back(pntVertexData(v0, normal, t0)); v.push_back(pntVertexData(v3, normal, t1)); v.push_back(pntVertexData(v7, normal, t2)); normal = findUnitNormal(v0, v7, v4); v.push_back(pntVertexData(v0, normal, t0)); v.push_back(pntVertexData(v7, normal, t2)); v.push_back(pntVertexData(v4, normal, t3)); normal = findUnitNormal(v1, v5, v2); v.push_back(pntVertexData(v1, normal, t0)); v.push_back(pntVertexData(v5, normal, t3)); v.push_back(pntVertexData(v2, normal, t1)); normal = findUnitNormal(v2, v5, v6); v.push_back(pntVertexData(v2, normal, t1)); v.push_back(pntVertexData(v5, normal, t3)); v.push_back(pntVertexData(v6, normal, t2)); normal = findUnitNormal(v4, v7, v6); v.push_back(pntVertexData(v4, normal, t0)); v.push_back(pntVertexData(v7, normal, t1)); v.push_back(pntVertexData(v6, normal, t2)); normal = findUnitNormal(v4, v6, v5); v.push_back(pntVertexData(v4, normal, t0)); v.push_back(pntVertexData(v6, normal, t2)); v.push_back(pntVertexData(v5, normal, t3)); normal = findUnitNormal(v0, v2, v3); v.push_back(pntVertexData(v0, normal, t3)); v.push_back(pntVertexData(v2, normal, t1)); v.push_back(pntVertexData(v3, normal, t2)); normal = findUnitNormal(v0, v1, v2); v.push_back(pntVertexData(v0, normal, t3)); v.push_back(pntVertexData(v1, normal, t0)); v.push_back(pntVertexData(v2, normal, t1)); GLuint VBO; glGenVertexArrays (1, &vertexArrayObject); glBindVertexArray( vertexArrayObject ); glGenBuffers(1, &VBO); glBindBuffer(GL_ARRAY_BUFFER, VBO); glBufferData(GL_ARRAY_BUFFER, v.size() * sizeof(pntVertexData), &v[0], GL_STATIC_DRAW); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(pntVertexData), 0); glEnableVertexAttribArray(0); glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(pntVertexData), (const GLvoid*) sizeof(vec3)); glEnableVertexAttribArray(1); glVertexAttribPointer(2, 4, GL_FLOAT, GL_FALSE, sizeof(pntVertexData), (const GLvoid*)( sizeof(vec3) * 2)); glEnableVertexAttribArray(2); glVertexAttribPointer(3, 2, GL_FLOAT, GL_FALSE, sizeof(pntVertexData), (const GLvoid*)(2 * sizeof(vec3)) ); glEnableVertexAttribArray(3); numberOfIndices = v.size(); v.clear(); VisualObject::initialize(); } // end initialize