void CSLevel::preFrame(const float &elapsedtime) { // remember this setElapsedTime(elapsedtime); // let the physx world do it's thing CS_SAFE(getPhysXWorld(), preFrame(elapsedtime)); // let the objects do their thing CS_SAFE(m_ObjectFactory, preFrame(elapsedtime)); // let the BlackBoard do it's thing CS_SAFE(m_BlackBoard, preFrame(elapsedtime)); }
void gameLoop(XStuff* xs, GameState* gs, InputState* is) { checkResize(xs,gs); preFrame(gs); handleInput(gs, is); setUpView(gs); // update world state // depth and picking pre-pass glDepthFunc(GL_LESS); glBindFramebuffer(GL_FRAMEBUFFER, gs->framebuffer); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); depthPrepass(xs, gs, is); glBindFramebuffer(GL_FRAMEBUFFER, 0); glBindFramebuffer(GL_READ_FRAMEBUFFER, gs->framebuffer); checkCursor(gs, is); glBindFramebuffer(GL_FRAMEBUFFER, gs->framebuffer); // clear color buffer for actual rendering //glClear(GL_COLOR_BUFFER_BIT); glerr("pre shader create 1d"); glDepthFunc(GL_LEQUAL); glerr("pre shader create e"); renderFrame(xs, gs, is); glBindFramebuffer(GL_FRAMEBUFFER, 0); glBindFramebuffer(GL_READ_FRAMEBUFFER, gs->framebuffer); // draw to the screen glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); shadingPass(gs); renderUI(xs, gs); gs->screen.resized = 0; glXSwapBuffers(xs->display, xs->clientWin); }
int main() { init(); double ballVelX = BALL_VEL; double ballVelY = BALL_VEL; int topPaddleX; int bottomPaddleX; double ballX; double ballY; unsigned int topPlayerScore = 0; unsigned int bottomPlayerScore = 0; reset(topPaddleX, bottomPaddleX, ballX, ballY); bool quit = false; int key; while(!quit) { preFrame(); key = getKey(); if(key == 's') --topPaddleX; else if(key == 'd') ++topPaddleX; else if(key == 'k') --bottomPaddleX; else if(key == 'l') ++bottomPaddleX; else if(key == '`') quit = true; ballX += ballVelX; ballY += ballVelY; if(ballX >= XMAX) ballVelX = -ballVelX; else if(ballX <= 0) ballVelX = -ballVelX; if(ballY >= YMAX) { ballVelY = -ballVelY; if(ballX < (bottomPaddleX - PADDLE_HALF_SIZE) || ballX > (bottomPaddleX + PADDLE_HALF_SIZE)) { reset(topPaddleX, bottomPaddleX, ballX, ballY); ++topPlayerScore; } } else if(ballY <= 0) { ballVelY = -ballVelY; if(ballX < (topPaddleX - PADDLE_HALF_SIZE) || ballX > (topPaddleX + PADDLE_HALF_SIZE)) { ++bottomPlayerScore; reset(topPaddleX, bottomPaddleX, ballX, ballY); } } postFrame(); drawPaddle(topPaddleX, 0); drawPaddle(bottomPaddleX, YMAX); drawBall((int)ballX, (int)ballY); drawScore(topPlayerScore, bottomPlayerScore); } cleanUp(); return 0; }