//-------------------------------------------------------------------------------------- // Name: RenderCube() // Desc: //-------------------------------------------------------------------------------------- VOID CSample::RenderCube() { FLOAT32 fPrevFrameTime = m_fCurrentTime; m_fCurrentTime = FrmGetTime(); // Rotate the object m_fRotTotal += m_fSpeed * ( m_fCurrentTime - fPrevFrameTime ); FRMMATRIX4X4 matTrans1 = FrmMatrixTranslate( 0.0f, 0.6f * FrmSin( m_fRotTotal * 2.0f ), 0.0f ); FRMVECTOR3 vTmp; vTmp = FRMVECTOR3(0.0f, 0.0f, 1.0f); FRMMATRIX4X4 matRotate1 = FrmMatrixRotate( m_fRotTotal * 1.0f, vTmp ); vTmp = FRMVECTOR3(1.0f, 0.0f, 0.0f); FRMMATRIX4X4 matRotate2 = FrmMatrixRotate( m_fRotTotal * 3.0f, vTmp ); vTmp = FRMVECTOR3(0.0f, 1.0f, 0.0f); FRMMATRIX4X4 matRotate3 = FrmMatrixRotate( m_fRotTotal * 1.5f, vTmp ); vTmp = FRMVECTOR3(1.0f, 0.0f, 1.0f); FRMMATRIX4X4 matRotate4 = FrmMatrixRotate( m_fRotTotal * -1.0f, vTmp ); FRMMATRIX4X4 matModel = FrmMatrixMultiply( matRotate4, matTrans1 ); matModel = FrmMatrixMultiply( matRotate3, matModel ); matModel = FrmMatrixMultiply( matRotate2, matModel ); matModel = FrmMatrixMultiply( matRotate1, matModel ); FRMMATRIX4X4 matModelView = FrmMatrixMultiply( matModel, m_matView ); m_matModelViewProj = FrmMatrixMultiply( matModelView, m_mPerspectiveMatrix ); glEnable( GL_DEPTH_TEST ); glUseProgram( m_hConstantShader ); glUniformMatrix4fv( m_nConstantMVPSlot, 1, FALSE, (FLOAT32*)&m_matModelViewProj ); glVertexAttribPointer( 0, 3, GL_FLOAT, 0, 0, g_pCube ); glEnableVertexAttribArray( 0 ); glVertexAttribPointer( 1, 4, GL_FLOAT, 0, 0, g_pColor ); glEnableVertexAttribArray( 1 ); glDrawArrays( GL_TRIANGLE_STRIP, 0, 4 ); glDrawArrays( GL_TRIANGLE_STRIP, 4, 4 ); glDrawArrays( GL_TRIANGLE_STRIP, 8, 4 ); glDrawArrays( GL_TRIANGLE_STRIP, 12, 4 ); glDrawArrays( GL_TRIANGLE_STRIP, 16, 4 ); glDrawArrays( GL_TRIANGLE_STRIP, 20, 4 ); glDisableVertexAttribArray( 1 ); glDisableVertexAttribArray( 0 ); glDisable( GL_DEPTH_TEST ); }
void Render::on_renerTimer() { float timenow; timenow = FrmGetTime(); float delta = timenow - m_lastTime; m_lastTime = timenow; // Update and render the application m_MagicMain.renderFrame(delta); // Present the scene eglSwapBuffers( m_eglDisplay, m_eglSurface ); // m_fpsFrames++; // m_fpsTime += delta; // if (m_fpsTime > 1){ // this->setWindowTitle(QString("Render - %1").arg(m_fpsFrames)); // m_fpsFrames = 0; // m_fpsTime = 0; // } }
//-------------------------------------------------------------------------------------- // Name: CSample() // Desc: Constructor //-------------------------------------------------------------------------------------- CSample::CSample( const CHAR* strName ) : CFrmApplication( strName ) { m_hConstantShader = NULL; m_hTextureShader = NULL; m_pLogoTexture = NULL; m_pMotionBlur = NULL; m_fStartTime = FrmGetTime(); m_fCurrentTime = 0.0f; m_nFBOTextureWidth = 256; m_nFBOTextureHeight = 256; m_pMotionBlur = NULL; m_bMotionBlurOn = TRUE; m_fSpeed = 2.0f; m_fShutterDuration = 0.025f; m_fRotTotal = 0.0f; }
//-------------------------------------------------------------------------------------- // Name: CSample() // Desc: Constructor //-------------------------------------------------------------------------------------- CSample::CSample( const CHAR* strName ) : CFrmApplication( strName ), m_cube_indices(sizeof(g_cube_indices) / sizeof(g_cube_indices[0])), m_cube_lines( m_cube_indices / 2) { m_fCurrentTime = 0.0f; m_fStartTime = FrmGetTime(); m_is_frozen = FALSE; m_bRotationOn = TRUE; m_MultiSampleShaderProgram = NULL; m_pLogoTexture = NULL; m_OpenGLESVersion = GLES3; m_currentTextureIndex = 0; #ifdef __ANDROID__ fp_glProgramUniformMatrix4fv = (PFNGLGENPROGRAMUNIFORMMATRIX4FVOESPROC) eglGetProcAddress("glProgramUniformMatrix4fv"); fp_glTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEOESPROC) eglGetProcAddress("glTexStorage2DMultisample"); #endif }