bool SplatRenderer::beginVisibilityPass() { if (!mIsInitialized) { init(); } if (!isSupported()) { std::cerr << "SplatRenderer error: not supported hardware\n"; return false; } if (mCurrentPass!=2) { std::cerr << "SplatRenderer error: programming error when calling beginVisibilityPass\n"; return false; } viewer->glPushAttrib(GL_ALL_ATTRIB_BITS); mCurrentPass = 0; // grab projection info viewer->glGetIntegerv(GL_VIEWPORT, mCachedVP); viewer->glGetFloatv(GL_MODELVIEW_MATRIX, mCachedMV); viewer->glGetFloatv(GL_PROJECTION_MATRIX, mCachedProj); updateRenderBuffer(); if (mCachedFlags != mFlags) configureShaders(); // configureShaders may detect that shaders are actually not supported. if (!isSupported()) { std::cerr << "SplatRenderer error: not supported hardware\n"; return false; } mCachedFlags = mFlags; mParams.update(mCachedMV, mCachedProj, mCachedVP); mParams.loadTo(mShaders[mCurrentPass]); mRenderBuffer->bind(); if (mFlags & DEFERRED_SHADING_BIT) { //GLenum buf[2] = {GL_COLOR_ATTACHMENT0_EXT,GL_COLOR_ATTACHMENT1_EXT}; GLenum buf[2] = {GL_COLOR_ATTACHMENT0,GL_COLOR_ATTACHMENT1}; //glDrawBuffersARB(2, buf); viewer->glDrawBuffers(2, buf); } viewer->glViewport(mCachedVP[0],mCachedVP[1],mCachedVP[2],mCachedVP[3]); viewer->glClearColor(0,0,0,0); viewer->glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); enablePass(mCurrentPass); ; return true; }
int drawTile(int row, int col, int state) { updateRenderBuffer(row, col, state); drawAnimation(row,col,state); }