亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cengine.cpp

?? 一個基于symbian s60 3rd 的3D汽車游戲演示程序,模擬器上編譯通過。
?? CPP
字號:
   /*
============================================================================
    * Name : CEngine.cpp
    * Part of : Example3D
    * Description : Definition of CEngine
    * Copyright (c) 2007 Nokia Corporation
============================================================================
    */

// INCLUDES
#include "CEngine.h"
#include "CGameTimer.h"
#include "CGame.h"
#include "CPictureLoader.h"
#include <eikenv.h>
#include <eikappui.h>
#include <f32file.h>

// CONSTANTS
const TInt KUpdateInterval = 1000000 / 64;  // 64 times per second "Move" update
const TInt KMaxNumUpdates = 10;

// MEMBER FUNCTIONS
CEngine* CEngine::NewL( CWindowGc& aGc, RWindow& aWindow, 
                        TDisplayMode aDisplayMode )
    {
    CEngine* self = new( ELeave )CEngine( aGc, aWindow, aDisplayMode );
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self );
    return self;
    }

CEngine::~CEngine()
    {
    delete iFbsBitmapBuffer;
    delete iTimer;
    delete iGame;
    delete iFbsScreenDevice;
    delete iBitmapUtil;

    eglMakeCurrent( iGldisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT );
    eglDestroyContext( iGldisplay, iGlcontext );
    eglDestroySurface( iGldisplay, iGlsurface );
    eglTerminate( iGldisplay );
    }

void CEngine::ConstructL()
    {
    iPaused = ETrue;

    // Define properties for the preferred EGLSurface, try to match with window depth
    EGLint attribList[ ] = { EGL_BUFFER_SIZE, 0,
    EGL_DEPTH_SIZE, 15,
    EGL_NONE };

    switch( iWindow.DisplayMode() )
        {
        case( EColor4K ) : { attribList[1] = 12; break; }
        case( EColor64K ): { attribList[1] = 16; break; }
        case( EColor16M ): { attribList[1] = 24; break; }
        default: attribList[1] = 32; // for EColor16MU
        }   
    
    EGLint numConfigs;
    EGLint majorVersion;
    EGLint minorVersion;
     
    iGldisplay = eglGetDisplay( EGL_DEFAULT_DISPLAY );
    if( iGldisplay == EGL_NO_DISPLAY )
        {
        User::Panic( _L("GL No Display"),0 );
        }
    if( !eglInitialize( iGldisplay, &majorVersion, &minorVersion ) ) 
        {
        User::Panic( _L("GL Init"), 0 );
        }
    if( !eglChooseConfig( iGldisplay, attribList, &iGlconfig, 1, &numConfigs ) )
        {
        User::Panic(_L("GL Config"), 0 );
        }
    iGlcontext = eglCreateContext( iGldisplay, iGlconfig, NULL, NULL );
    if( iGlcontext==0 )
        {
        User::Panic( _L("GL Context"), 0 );
        }
    iGlsurface = eglCreateWindowSurface( iGldisplay, iGlconfig, &iWindow, NULL );
    if( iGlsurface==0 )
        {
        User::Panic( _L("GL Surface"), 0 );
        }
    
    eglMakeCurrent( iGldisplay, iGlsurface, iGlsurface, iGlcontext );

    iGame = CGame::NewL( iDisplayMode );
    iTimer = CGameTimer::NewL( *this );
    iTime.HomeTime();

    // Some devices have difficulties to multitask with
    // this application using idle time.
    // This should help it a little
    //RProcess().SetPriority( EPriorityLow );
    }

void CEngine::InitScreen( const TRect& aRect )
    {
    iDrawRect = aRect;
    iBuffer.iSize = iDrawRect.Size();
    iBuffer.iMode = iDisplayMode;
    }

CEngine::CEngine( CWindowGc& aGc, RWindow& aWindow, 
                  TDisplayMode aDisplayMode )
    : iGc( aGc ), iWindow( aWindow ), iDisplayMode( aDisplayMode )
    {
    }

TInt CEngine::DoGameFrameL()
    {
    if( iPaused )
        {
        // stop gametimer
        return EFalse;
        }

    TPoint pos = iWindow.Position();
    TSize size = iWindow.Size();
    if( size != iDrawRect.Size() || pos != iDrawRect.iTl )
        {
        TRect rect( pos, size );
        InitScreen( rect );
        return ETrue;
        }
    
    // Calculate number of updates that should happen since last game frame
    TTime time;
    time.HomeTime();
    TInt updates = I64LOW(time.MicroSecondsFrom( iTime ).Int64());
    iUpdates += updates;
    updates = iUpdates / KUpdateInterval;
    
    iTime = time.Int64();
    
    TInt i;
    for( i=0; i<updates; i++ )
        {
        iGame->Move( iKey );
        }
    iUpdates -= updates * KUpdateInterval;
    
    // Draw with OpenGL
    // GL double buffer swap
    eglSwapBuffers( iGldisplay, iGlsurface);
    iGame->Draw( iBuffer );
    RRegion drawRegion;
    drawRegion.AddRect( iDrawRect );
    drawRegion.Clear();
            
    // continue gametimer
    return ETrue;
    }

void CEngine::KeyEvent( const TKeyEvent& aKeyEvent,TEventCode aType )
    {
    switch( aType )
        {
        case EEventKeyDown:
            {
            iKey[ aKeyEvent.iScanCode ] = 1;
            break;
            }
        case EEventKeyUp:
            {
            iKey[ aKeyEvent.iScanCode ] = 0;
            break;
            }
        default:
            {
            break;
            }
        }
    }

void CEngine::Start()
    {
    if( !iPaused ) return;
    iPaused = EFalse;
    iTimer->Start();
    }

void CEngine::Stop()
    {
    if( iPaused )
        return;
    ResetKeys();
    iPaused = ETrue;
    iTimer->Cancel();
    }

void CEngine::ResetKeys()
    {
    for (TInt i = 0; i < 256; i++)
        {
        iKey[i] = 0;
        }
    }
    
void CEngine::Command( TInt aCommand )
    {
    if( iGame )
        {
        iGame->Command( aCommand );
        }
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区大片| 亚洲国产精品麻豆| 亚洲美女精品一区| 久久精品国产久精国产| 一本一道久久a久久精品综合蜜臀| 欧美妇女性影城| 亚洲免费毛片网站| 国产九色sp调教91| 欧美一区二区性放荡片| 一区二区三区中文字幕精品精品 | 丝袜a∨在线一区二区三区不卡| 99久久夜色精品国产网站| 国产精品每日更新| 久久久久88色偷偷免费| 精品视频1区2区| 日韩精品一区二区三区老鸭窝| 欧美日韩一区二区三区免费看 | 欧美日韩电影在线| 在线播放国产精品二区一二区四区| 欧美三级电影网| 精品日韩av一区二区| 久久久综合视频| 亚洲人成小说网站色在线| 午夜精品一区二区三区电影天堂 | 91亚洲大成网污www| 在线免费亚洲电影| 精品久久久久久综合日本欧美| 国产女同互慰高潮91漫画| 亚洲精品日韩综合观看成人91| 天天综合天天综合色| 国产成人午夜视频| 欧洲精品视频在线观看| 日韩限制级电影在线观看| 欧美高清在线视频| 亚洲成人av一区二区三区| 国产一区二区导航在线播放| 色婷婷一区二区| 久久久国产午夜精品 | 美女一区二区三区| 91影院在线观看| 欧美精品一区二区精品网| 亚洲人成精品久久久久| 久久激情综合网| 欧美日韩一区中文字幕| 国产精品日韩精品欧美在线| 日韩av一二三| 在线视频国内一区二区| 日本一区二区三区视频视频| 午夜精品久久久久| 91色综合久久久久婷婷| 久久精品亚洲国产奇米99| 婷婷六月综合亚洲| 一本大道av一区二区在线播放| 欧美不卡123| 日韩福利电影在线| 在线观看一区日韩| 国产精品福利一区二区| 激情综合网天天干| 欧美一区二区视频在线观看2020| 亚洲欧美另类小说| thepron国产精品| 国产日本一区二区| 国产不卡视频一区| 久久久久久久久久久久电影| 免费成人你懂的| 欧美巨大另类极品videosbest| 亚洲欧美日韩人成在线播放| 国产白丝网站精品污在线入口| 日韩一区二区三区av| 三级欧美韩日大片在线看| 日本道色综合久久| 亚洲免费视频成人| 欧美在线视频日韩| 亚洲成av人片一区二区梦乃| 91成人在线免费观看| 亚洲精品第1页| 欧美视频日韩视频在线观看| 亚洲一区二区三区国产| 在线观看欧美黄色| 亚洲精品中文在线| 欧美日韩视频在线一区二区| 亚洲一区二区高清| 精品视频在线免费观看| 天天av天天翘天天综合网| 欧美日韩国产另类一区| 男男视频亚洲欧美| 国产亚洲成av人在线观看导航| 丰满白嫩尤物一区二区| 亚洲欧美激情插| 欧美精品久久久久久久多人混战 | 国产欧美日韩综合精品一区二区| 国产乱码精品一区二区三区五月婷| 精品国产91久久久久久久妲己| 久久99精品国产麻豆婷婷 | 4438成人网| 国产乱码字幕精品高清av| 国产精品久久久久久久午夜片| 91性感美女视频| 蜜桃久久久久久久| 国产欧美精品一区二区色综合朱莉 | 欧美美女一区二区在线观看| 日韩电影在线一区二区| 久久久久久久综合日本| 在线观看视频欧美| 奇米一区二区三区av| 国产精品免费人成网站| 欧美在线观看视频一区二区三区 | 亚洲国产成人在线| 欧美中文字幕一区二区三区亚洲| 蜜臀av一区二区在线观看| 国产精品视频你懂的| 91精品欧美久久久久久动漫| 成人性生交大合| 日韩av电影免费观看高清完整版| 久久精品夜色噜噜亚洲a∨| 欧美在线播放高清精品| 国产精品亚洲第一区在线暖暖韩国| 中文字幕在线不卡视频| 欧美刺激午夜性久久久久久久 | 91精品欧美久久久久久动漫| 99在线热播精品免费| 麻豆国产精品一区二区三区| 亚洲色图色小说| 亚洲精品在线三区| 欧美精品乱码久久久久久| av在线这里只有精品| 国精品**一区二区三区在线蜜桃| 亚洲高清视频在线| 国产精品传媒入口麻豆| 久久亚区不卡日本| 欧美精品高清视频| 在线视频中文字幕一区二区| 成人av网站免费观看| 美日韩一级片在线观看| 五月天亚洲婷婷| 亚洲高清免费视频| 亚洲精品久久嫩草网站秘色| 国产精品第五页| 中文字幕av一区二区三区免费看| 精品成a人在线观看| 久久这里只精品最新地址| 5858s免费视频成人| 欧美日韩免费在线视频| 91福利小视频| 91福利国产精品| 精品视频一区二区三区免费| 91成人免费在线视频| 欧洲中文字幕精品| 精品视频在线视频| 欧美日韩一区二区在线观看视频| 欧美在线免费观看视频| 欧美手机在线视频| 欧美日韩卡一卡二| 7777精品伊人久久久大香线蕉| 在线不卡a资源高清| 91精品国产日韩91久久久久久| 日韩色视频在线观看| 欧美不卡一区二区三区| 久久蜜臀中文字幕| 国产精品网曝门| 亚洲视频一区二区在线观看| 亚洲欧美日韩国产一区二区三区| 国产精品久久久久久久久免费丝袜| 中文无字幕一区二区三区| 国产精品久久久久7777按摩| 亚洲天堂av一区| 亚洲gay无套男同| 老司机精品视频线观看86| 国产一区二区三区免费播放| 粉嫩高潮美女一区二区三区| 91视频精品在这里| 制服丝袜中文字幕一区| 久久综合色一综合色88| 国产精品麻豆一区二区 | 欧美日韩精品二区第二页| 欧美二区三区的天堂| 久久亚区不卡日本| 亚洲蜜臀av乱码久久精品 | 成人永久免费视频| 色八戒一区二区三区| 欧美一级搡bbbb搡bbbb| 亚洲国产高清不卡| 日韩精品电影一区亚洲| 国产91精品一区二区麻豆网站| 色狠狠色狠狠综合| 精品久久久久久久久久久久久久久久久| 国产欧美日韩中文久久| 亚洲夂夂婷婷色拍ww47| 美日韩黄色大片| 一本色道久久综合亚洲91| 91精品蜜臀在线一区尤物| 国产精品久久久久久久久搜平片| 午夜欧美电影在线观看| 成人午夜在线免费| 欧美一区二区三区啪啪| 中文字幕字幕中文在线中不卡视频| 亚洲一级二级三级在线免费观看| 国内成人精品2018免费看| 欧美亚洲一区二区在线观看| 久久久久久毛片|