Esempio n. 1
0
void SubdividerState::init() {
    /// Called when your application is about to enter the event loop. Load
    /// objects, programs, etc.
    setupFonts();
    phongProg = new nsgl::Program("resources/shader/phong_vert.glsl",
                                  "resources/shader/phong_frag.glsl");
    phongProg->buildOrCrash();
    phongProg->ignoreWarnings = false;
    
    shouldDrawLines = paused = false;
    
    /// Setup the camera
    camera.setUpDir(kUpDir);
    camera.setPosition(util::Vec3f(5, 5, 5));
    camera.lookAt(util::Vec3f(0, 0, 0));
    camera.hasLookTarget = true;
    //camera
    
    jobPool = util::JobPool(1);
    
    drawHUD = true;
    objectSpacingFromOrigin = 2.0f * kRightDir;
    objectScales = 1.0f;
    
    //if (getApp()->argc > 1)
    //    meshFileName = getApp()->argv[1];
    //else
    //    meshFileName = "resources/mesh/tetrahedron.obj";
    //setMesh(meshFileName);
    std::string baseDir = "resources/mesh/";
    availableMeshes = util::make_vector(baseDir + "cube.obj",
     baseDir + "lowPolyPlane.obj", baseDir + "evergreen.obj",
     baseDir + "cow-nonormals.obj", baseDir + "CarrotMesh.obj");
    currentMeshNum = 0;
    setMesh(availableMeshes[currentMeshNum]);
    
    mesh.cycleToNextType();
    getFontEngine().setColor(1, 1, 1, 1);
    
    //glEnable(GL_CULL_FACE);
    //glCullFace(GL_BACK);
    
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    NSGL_ERRORS();
}
void GameStateConfigBase::refreshFont() {
	delete font;
	font = getFontEngine();
	delete comb;
	comb = new CombatText();
}
void GameStateConfigBase::refreshFont() {
	delete font;
	font = getFontEngine();
}
Esempio n. 4
0
void SubdividerState::render() {
    glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
    /// Draw debug state.
    renderDebug();
    if (shouldDrawLines)
        glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
    else
        glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
    
    phongProg->glBind();
    /// Draw rest ov everything
    util::MatrixStack MV, P;
    camera.applyProjectionMatrix(&P);
    camera.applyViewMatrix(&MV);
    
    engine::PointLight light(util::Vec3f(-4, 4, -4), util::Vec3f(1, 1, 1));
    phongProg->glSendUniform("uLightPos", MV.applyToPos(light.position));
    phongProg->glSendUniform("uLightCol", light.color);
    
    engine::PhongMaterial mat;
    mat.send(*phongProg, "UaColor", "UdColor", "UsColor", "Ushine");
    
    MV.push();
        MV.translate(-objectSpacingFromOrigin);
        MV.scale(objectScales);
        phongProg->glSendUniform("MV", MV.top());
        phongProg->glSendUniform("P", P.top());
        baseModel.draw(*phongProg);
    MV.pop();
    
    engine::SimpleModel * subdivModel = mesh.getModel();
    if (subdivModel != NULL) {
        mat.diffuse = util::Vec3f(1, 0, 0);
        mat.send(*phongProg, "UaColor", "UdColor", "UsColor", "Ushine");
        
        MV.push();
            MV.translate(objectSpacingFromOrigin);
            MV.scale(objectScales);
            phongProg->glSendUniform("MV", MV.top());
            phongProg->glSendUniform("P", P.top());
            subdivModel->draw(*phongProg);
        MV.pop();
    }
    
    if (drawHUD) {
        getFontEngine().renderText(std::string("Mesh: ") + meshFileName
         + "\n\nM: NextMesh", -0.95, 0.85);
        getFontEngine().renderText(std::string("C: Capture Cursor")
         + "\n\nL: Toggle Lines" + "\n\nH: Toggle HUD"
         + "\n\nL/R Arrows: spacing" + "\n\nU/D Arrows: scaling", -0.95, -0.50);
        getFontEngine().renderText(std::string("S: Subdivide mesh")
         + "\n\nN: Next Subdiv Type" + "\n\nR: Reset mesh"
         + "\n\nSubdiv Type: " + mesh.getTypeString()
         + "\n\nFPS: " + getFPS(), 0, -0.50);
    }
    
    for (int i = 0; i < (int) postRenderFuncs.size(); i++)
        postRenderFuncs[i]();
    postRenderFuncs.clear();
}
Esempio n. 5
0
void SubdividerState::windowResize(int w, int h) {
    getFontEngine().updateWindowSize(w, h);
}
Esempio n. 6
0
void SubdividerState::setupFonts() {
    getFontEngine().addFont(mainFontHandle, "resources/fonts/Hey_Gorgeous.ttf");
    getFontEngine().useFont(mainFontHandle, 14);
}