//
// Initialize the application, loading all of the settings that
// we will be accessing later in our fragment shaders.
//
void Setup()
{
    // Set up lighting variables in OpenGL
    // Once we do this, we will be able to access them as built-in
    // attributes in the shader (see examples of this in normalmap.frag)
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glLightfv(GL_LIGHT0, GL_SPECULAR,  specularLight);
    glLightfv(GL_LIGHT0, GL_AMBIENT,   ambientLight);
    glLightfv(GL_LIGHT0, GL_DIFFUSE,   diffuseLight);

    surfaceNormImg = new STImage(normalMap);
    surfaceNormTex = new STTexture(surfaceNormImg);
    
    surfaceDisplaceImg = new STImage(displacementMap);
    surfaceDisplaceTex = new STTexture(surfaceDisplaceImg);

	surfaceColorImg = new STImage(colorMap);
    surfaceColorTex = new STTexture(surfaceColorImg);
    
    shader = new STShaderProgram();
    shader->LoadVertexShader(vertexShader);
    shader->LoadFragmentShader(fragmentShader);

    resetCamera();
    
    glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
    glEnable(GL_DEPTH_TEST);

    gTriangleMesh=new STTriangleMesh(meshOBJ);
    if(proxyType) gTriangleMesh->CalculateTextureCoordinatesViaSphericalProxy();
	else gTriangleMesh->CalculateTextureCoordinatesViaCylindricalProxy(-1,1,0,0,1);

    CreateYourOwnMesh();
}
Exemplo n.º 2
0
//
// Initialize the application, loading all of the settings that
// we will be accessing later in our fragment shaders.
//
void Setup()
{
    // Set up lighting variables in OpenGL
    // Once we do this, we will be able to access them as built-in
    // attributes in the shader (see examples of this in normalmap.frag)
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glLightfv(GL_LIGHT0, GL_SPECULAR,  specularLight);
    glLightfv(GL_LIGHT0, GL_AMBIENT,   ambientLight);
    glLightfv(GL_LIGHT0, GL_DIFFUSE,   diffuseLight);
    //All of this added by Helen
    glEnable(GL_LIGHT1);
    glLightfv(GL_LIGHT1, GL_SPECULAR,  specularLight1);
    glLightfv(GL_LIGHT1, GL_AMBIENT,   ambientLight1);
    glLightfv(GL_LIGHT1, GL_DIFFUSE,   diffuseLight1);
    
    glMaterialfv(GL_FRONT, GL_AMBIENT,   materialAmbient);
    glMaterialfv(GL_FRONT, GL_DIFFUSE,   materialDiffuse);
    glMaterialfv(GL_FRONT, GL_SPECULAR,  materialSpecular);
    glMaterialfv(GL_FRONT, GL_SHININESS, &shininess);
    //Up to here
    
    surfaceNormImg = new STImage(normalMap);
    surfaceNormTex = new STTexture(surfaceNormImg);
    
    surfaceDisplaceImg = new STImage(displacementMap);
    surfaceDisplaceTex = new STTexture(surfaceDisplaceImg);
    
    shader = new STShaderProgram();
    shader->LoadVertexShader(vertexShader);
    shader->LoadFragmentShader(fragmentShader);
    
    resetCamera();
    
    glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
    glEnable(GL_DEPTH_TEST);
    
    STTriangleMesh::LoadObj(gTriangleMeshes, backgroundOBJ);
    STTriangleMesh::LoadObj(gTriangleMeshes, mountainOBJ);
    STTriangleMesh::LoadObj(gTriangleMeshes, meshOBJ);
    STTriangleMesh::LoadObj(gTriangleMeshes, meshOBJ2);
    STTriangleMesh::LoadObj(gTriangleMeshes, meshOBJ3);
    STTriangleMesh::LoadObj(gTriangleMeshes, meshOBJ4);
    STTriangleMesh::LoadObj(gTriangleMeshes, meshOBJ5);
    
    //Load more meshes if necessary
    gMassCenter=STTriangleMesh::GetMassCenter(gTriangleMeshes);
    std::cout<<"Mass Center: "<<gMassCenter<<std::endl;
    gBoundingBox=STTriangleMesh::GetBoundingBox(gTriangleMeshes);
    std::cout<<"Bounding Box: "<<gBoundingBox.first<<" - "<<gBoundingBox.second<<std::endl;
    
    for(unsigned int id=0;id<gTriangleMeshes.size();id++)
        //gTriangleMeshes[id]->Recenter(gMassCenter); (was commented out earlier)
        gTriangleMeshes[id]->mDrawAxis = false;
    
    //(all of this came commented out)
    //for(unsigned int id=0;id<gTriangleMeshes.size();id++){
    //    if(proxyType) gTriangleMeshes[id]->CalculateTextureCoordinatesViaSphericalProxy();
    //    else gTriangleMeshes[id]->CalculateTextureCoordinatesViaCylindricalProxy(-6700,6700,0,0,2);
    //}
    
    CreateYourOwnMesh();
}