int main() {
viewer->init(renderer)
->createWindow("s c g 3 e x a m p l e", 1024, 768);
renderer->setCamera(camera);
createScene(viewer, camera, scene);
renderer->setScene(scene);
camera->translate(glm::vec3(0.f, 0.5f, 1.f))
->dolly(-1.f);
viewer->startMainLoop();
return 0;
}
auto shaderPhong = shaderFactory.createShaderFromSourceFiles(
{
ShaderFile(
"phong_frag.glsl", GL_FRAGMENT_SHADER),
ShaderFile(
"blinn_phong_lighting.glsl", GL_FRAGMENT_SHADER),
ShaderFile(
"texture_none.glsl", GL_FRAGMENT_SHADER)
});
auto shaderPhongTex = shaderFactory.createShaderFromSourceFiles(
{
ShaderFile(
"phong_frag.glsl", GL_FRAGMENT_SHADER),
ShaderFile(
"blinn_phong_lighting.glsl", GL_FRAGMENT_SHADER),
ShaderFile(
"texture2d_modulate.glsl", GL_FRAGMENT_SHADER)
});
{
});
light->setDiffuseAndSpecular(glm::vec4(1.f, 1.f, 1.f, 1.f))
->setPosition(glm::vec4(10.f, 10.f, 10.f, 1.f))
->init();
matRed->setAmbientAndDiffuse(glm::vec4(1.f, 0.5f, 0.5f, 1.f))
->setSpecular(glm::vec4(1.f, 1.f, 1.f, 1.f))
->setShininess(20.f)
->init();
matGreen->setAmbientAndDiffuse(glm::vec4(0.1f, 0.8f, 0.3f, 1.f))
->init();
matWhite->setAmbientAndDiffuse(glm::vec4(1.f, 1.f, 1.f, 1.f))
->setSpecular(glm::vec4(0.5f, 0.5f, 0.5f, 1.f))
->setShininess(20.f)
->init();
auto texWood = textureFactory.create2DTextureFromFile(
"wood_256.png", GL_REPEAT, GL_REPEAT, GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR);
auto floorCore = geometryFactory.
createCuboid(glm::vec3(20.f, 0.05f, 10.f));
floor->addCore(matGreen)
->addCore(floorCore);
floorTrans->translate(glm::vec3(0.f, -0.5f, 0.f));
teapot->addCore(matRed)
->addCore(teapotCore);
teapotTrans->translate(glm::vec3(0.f, 0.9f, 0.f))
->rotate(-90.f, glm::vec3(1.f, 0.f, 0.f));
table->addCore(shaderPhongTex)
->addCore(matWhite)
->addCore(texWood);
tableTrans->rotate(30.f, glm::vec3(0.f, 1.f, 0.f));
tableTopTrans->translate(glm::vec3(0.f, 0.5f, 0.f));
table->addChild(tableTopTrans);
tableTopTrans->addChild(tableTop);
auto tableLegCore = geometryFactory.
createCuboid(glm::vec3(0.1f, 1.f, 0.1f));
for (int i = 0; i < 4; ++i) {
table->addChild(tableLegTrans[i]);
tableLegTrans[i]->
addChild(tableLeg[i]);
}
tableLegTrans[0]->
translate(glm::vec3( 0.6f, 0.f, 0.35f));
tableLegTrans[1]->
translate(glm::vec3( 0.6f, 0.f, -0.35f));
tableLegTrans[2]->
translate(glm::vec3(-0.6f, 0.f, -0.35f));
tableLegTrans[3]->
translate(glm::vec3(-0.6f, 0.f, 0.35f));
}