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

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

?? cgame.cpp

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


// INCLUDES
#include "CGame.h"
#include "CPictureLoader.h"
#include "C3DBase.h"
#include "C3DRenderer.h"
#include "CPolygonObject.h"
#include "3DObjects.h"
#include "CFpsCounter.h"
#include "CSensorDataFilter.h"
#include "Example3D.hrh"

#include <e32math.h>
#include <eikenv.h>
#include <e32svr.h>
#include <eikenv.h>
#include <eikappui.h>
#include <eikapp.h>
#include <f32file.h>
#include <e32std.h>
#include <e32uid.h>

#ifdef SENSOR_API_SUPPORT_ENABLED
#include <RRSensorApi.h>
#endif //SENSOR_API_SUPPORT_ENABLED


// CONSTANTS
// steering wheel turning speed
// bigger value turns steering wheel faster
const TInt KSteeringSpeed = 4;  

// Maximum steering wheel "angle"
const TInt KSteerLimit = 100;

// car turning divider
// greater value makes car turn slower
const TInt KCarTurnDivider = 256;

// car combined friction factor
// affects car top speed
const TInt KFriction = 10000;

// force that affects forwards/backwards car tilting
const TInt KCarTiltForce = 100;

// spring force that tries to stop fwd/back tilting
const TInt KCarTiltSpringFactor = 1000;

#include "GLES/egl.h"
#include "GLES/gl.h"

// CONSTANTS
const TInt KFrontWheelRadius = 100;
const TInt KRearWheelRadius = 150;
const TInt KRideHeight = 100;       // car ride height

const TInt KTileSize = 2999;        // tile size in 3D-space

#ifdef SENSOR_API_SUPPORT_ENABLED
// Accelerometer UID
const TInt KAccSensorUID = 0x10273024;
#endif //SENSOR_API_SUPPORT_ENABLED

// MEMBER FUNCTIONS
CGame* CGame::NewL( TDisplayMode aDisplayMode )
    {
    CGame* self = new( ELeave )CGame( aDisplayMode );
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self );
    return self;
    }

CGame::~CGame()
    {
    delete[] iTexture.iData;
    delete[] iTexture2.iData;
    delete[] iTextureFont.iData;

    delete i3DBase;
    delete iRender;

    delete i3dHouse;
    delete i3dCar;
    delete i3dRoad;
    delete i3dGrass;
    delete i3dFrontWheel;
    delete i3dRearWheel;
    delete i3dText;

    delete iFps;

#ifdef SENSOR_API_SUPPORT_ENABLED
    CleanupSensors();
#endif //SENSOR_API_SUPPORT_ENABLED
    }

void CGame::ConstructL()
    {
    //
    // load texture
    //
    CPictureLoader* loader = CPictureLoader::NewL();
    CleanupStack::PushL( loader );
    iTexture = loader->LoadL( _L("picture.jpg"), iDisplayMode );
    iTexture2 = loader->LoadL( _L("picture2.jpg"), iDisplayMode );
    iTextureFont = loader->LoadL( _L("font.gif"), iDisplayMode );
    CleanupStack::PopAndDestroy( loader );

    //
    // Create texture objects for OpenGL
    //
    glGenTextures( 1, &iGlTexture );
    glGenTextures( 1, &iGlTexture2 );
    glGenTextures( 1, &iGlTextureFont );
    
    TUint colorFlag;

    switch( iDisplayMode )
        {
        case EColor16MU:
        case EColor16M:
            {
            colorFlag = GL_UNSIGNED_BYTE;
            break;
            }   
        case EColor64K:
            {
            colorFlag = GL_UNSIGNED_SHORT_5_6_5;
            break;
            }
        case EColor4K:
        default:
            {
            colorFlag = GL_UNSIGNED_SHORT_4_4_4_4;
            break;
            }
        }

    // create texture1
    glBindTexture( GL_TEXTURE_2D, iGlTexture );
    glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, 
        iTexture.iSize.iWidth, iTexture.iSize.iHeight,
        0, GL_RGB, colorFlag, iTexture.iData );
    glTexEnvx( GL_TEXTURE_2D, GL_TEXTURE_ENV_MODE, GL_REPLACE );
    glTexParameterx( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
    glTexParameterx( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );

    // create texture2
    glBindTexture( GL_TEXTURE_2D, iGlTexture2 );
    glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, 
        iTexture2.iSize.iWidth, iTexture2.iSize.iHeight,
        0, GL_RGB, colorFlag, iTexture2.iData );
    glTexEnvx( GL_TEXTURE_2D, GL_TEXTURE_ENV_MODE, GL_REPLACE );
    glTexParameterx( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
    glTexParameterx( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );

    // create texture font
    glBindTexture( GL_TEXTURE_2D, iGlTextureFont );
    glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, 
        iTextureFont.iSize.iWidth, iTextureFont.iSize.iHeight,
        0, GL_RGB, colorFlag, iTextureFont.iData );
    glTexEnvx( GL_TEXTURE_2D, GL_TEXTURE_ENV_MODE, GL_REPLACE );
    glTexParameterx( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
    glTexParameterx( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );

    // 
    // OpenGL makes copies of textures
    // the original textures can be deleted now
    // 
    delete[] iTexture.iData;
    iTexture.iData = NULL;
    delete[] iTexture2.iData;
    iTexture2.iData = NULL;
    delete[] iTextureFont.iData;
    iTextureFont.iData = NULL;

    //
    // construct 3D base classes
    //
    i3DBase = C3DBase::NewL( TSize( 0,0 ) ); // unknown screen size
    iRender = C3DRenderer::NewL( i3DBase, 1000 );

    //
    // create 3D-objects
    //
    
    // house
    i3dHouse = CreateObject( KHouseVertexData, KHouseFaceData, KNumHouseVertices, KNumHouseFaces,
                            TPoint( 0,0 ), 1 );
                            

    // road
    i3dRoad = CreateObject( KRoadVertexData, KRoadFaceData, KNumRoadVertices, KNumRoadFaces,
                            TPoint( 0,0 ), 1 );

    
    // grass tile
    i3dGrass = CreateObject( KGrassVertexData, KGrassFaceData, KNumGrassVertices, KNumGrassFaces,
                            TPoint( 0,0 ), 1 );

    
    // wheels
    i3dFrontWheel = CreateWheel( KFrontWheelRadius, 50, 6 );

    i3dRearWheel = CreateWheel( KRearWheelRadius, 150, 6 );

    // car
    i3dCar = CreateObject( KCarVertexData, KCarFaceData, KNumCarVertices, KNumCarFaces,
                            TPoint( 0,128 ), 10 );

    i3dText = CPolygonObject::NewL( i3DBase, 1, 1 );

    // set textures for all objects:
    i3dHouse->SetTexture( iGlTexture2 );
    i3dRoad->SetTexture( iGlTexture );
    i3dGrass->SetTexture( iGlTexture2 );
    i3dFrontWheel->SetTexture( iGlTexture );
    i3dRearWheel->SetTexture( iGlTexture );
    i3dCar->SetTexture( iGlTexture );
    i3dText->SetTexture( iGlTextureFont );

    //
    // add objects to renderer
    //
    // Adjust object priorities so they seem to render in right order
    // ( wheel shouldn't show through car etc... )
    //
    TInt n;
    n = iRender->AddObject( i3dRearWheel );
    iRender->SetObjectPriority( n, 500 );
    n = iRender->AddObject( i3dFrontWheel );
    iRender->SetObjectPriority( n, 500 );
    n = iRender->AddObject( i3dRearWheel );
    iRender->SetObjectPriority( n, 500 );
    n = iRender->AddObject( i3dFrontWheel );
    iRender->SetObjectPriority( n, 500 );
    
    n = iRender->AddObject( i3dCar );
    iRender->SetObjectPosition( n, TVertex( 0, -300,4250 ) );
    iRender->SetObjectAngle( n, TVertex( 0, 0, 0 ) );

    
    TInt y;
    TInt x;

    //
    // Tilemapped city
    //


    for( y=0; y<KMapHeight; y++ )
        {
        TUint8* p = (TUint8*)KMap[ y ];
        for( x=0; x<KMapWidth; x++ )
            {
            switch( *p++ )
                {
                case '0':
                    {
                    n = iRender->AddObject( i3dRoad );
                    iRender->SetObjectPosition( n, 
                        TVertex( x * KTileSize, 200, y * KTileSize ) );
                    iRender->SetObjectAngle( n, TVertex( 0, 0, 0 ) );
                    iRender->SetObjectPriority( n, 1000 );
                    break;
                    }
                case '1':
                    {
                    n = iRender->AddObject( i3dRoad );
                    iRender->SetObjectPosition( n, 
                        TVertex( x * KTileSize, 200, y * KTileSize ) );
                    iRender->SetObjectAngle( n, TVertex( 0, 1024, 0 ) );
                    iRender->SetObjectPriority( n, 1000 );
                    break;
                    }
                case '2':
                    {
                    n = iRender->AddObject( i3dRoad );
                    iRender->SetObjectPosition( n, 
                        TVertex( x * KTileSize, 200, y * KTileSize ) );
                    iRender->SetObjectAngle( n, TVertex( 0, 2048, 0 ) );
                    iRender->SetObjectPriority( n, 1000 );
                    break;
                    }
                case '3':
                    {
                    n = iRender->AddObject( i3dRoad );
                    iRender->SetObjectPosition( n, 
                        TVertex( x * KTileSize, 200, y * KTileSize ) );
                    iRender->SetObjectAngle( n, TVertex( 0, 3072, 0 ) );
                    iRender->SetObjectPriority( n, 1000 );
                    break;
                    }
                case 'a':
                    {
                    n = iRender->AddObject( i3dHouse );
                    iRender->SetObjectPosition( n, 
                        TVertex( x * KTileSize, 200, y * KTileSize ) );
                    iRender->SetObjectAngle( n, TVertex( 0, 0, 0 ) );
                    iRender->SetObjectPriority( n, 0 );
                    break;
                    }
                case 'x':
                    {
                    n = iRender->AddObject( i3dGrass );
                    iRender->SetObjectPosition( n, 
                        TVertex( x * KTileSize, 200, y * KTileSize ) );
                    iRender->SetObjectAngle( n, TVertex( 0, 0, 0 ) );
                    iRender->SetObjectPriority( n, 1000 );
                    break;
                    }

                }
            }
        }
    
    // 3D text:
    n = iRender->AddObject( i3dText );
    iRender->SetObjectPosition( n, TVertex( KTileSize * 2, -1000, KTileSize * 2+1 ) );
    iRender->SetObjectAngle( n, TVertex( 0,0,0 ) );

    // some initializations
    // start driving from tile 2,2 ( x,y on map )
    iCarPosition = TVertex( KTileSize * 2, 0, KTileSize * 2 );  
    iCarPositionAdd = TVertex( 0,0,0 );
    iCarSpeed = 0;

    iCameraMode = ECameraBehind;
    
    iCameraAngle = 0;
    
#ifdef SENSOR_API_SUPPORT_ENABLED
    SetupSensors();
#endif //SENSOR_API_SUPPORT_ENABLED

    // every object's Init() has to be called after all changes
    i3dHouse->Init();
    i3dCar->Init();
    i3dText->Init();
    i3dRoad->Init();
    i3dGrass->Init();
    i3dFrontWheel->Init();
    i3dRearWheel->Init();

    // OpenGl ES initialization
    
    // states
    glDisable       (GL_LIGHTING);
    glEnable        (GL_CULL_FACE);
    glFrontFace     (GL_CW);
    glDisable       (GL_DITHER);
    glDisable       (GL_MULTISAMPLE);

    glEnable        (GL_DEPTH_TEST);
    glDepthMask     (GL_TRUE);
    glClearDepthf   (1);

    // if you would like to see everything perspective correct:
    //glHint            (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
    
    // and this is without perspective correction
    glHint          (GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);

    glShadeModel    (GL_FLAT);

    // modelview
    glMatrixMode    (GL_MODELVIEW);
    glLoadIdentity  ();
    glClearColor    (0, 0, 0, 0);

    iFps = CFpsCounter::NewL( 2 );
    }

CGame::CGame( TDisplayMode aDisplayMode )
    : iDisplayMode( aDisplayMode )
    {
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情综合色丁香一区二区| 欧美中文字幕一区二区三区亚洲| 国产高清在线观看免费不卡| 一本大道av一区二区在线播放| 精品日韩欧美一区二区| 亚洲最大色网站| 国产福利一区在线观看| 欧美一三区三区四区免费在线看| 中文字幕亚洲欧美在线不卡| 国产一区 二区| 日韩一区二区麻豆国产| 一个色综合av| 成熟亚洲日本毛茸茸凸凹| 日韩一区二区电影在线| 五月天激情综合网| 色综合视频在线观看| 国产精品夫妻自拍| 国产成人在线观看免费网站| 精品国产一区二区在线观看| 手机精品视频在线观看| 欧美男男青年gay1069videost | 色呦呦一区二区三区| 国产视频一区二区三区在线观看| 久久99精品一区二区三区| 欧美女孩性生活视频| 亚洲一区在线观看免费观看电影高清 | 精品人在线二区三区| 日韩高清电影一区| 91精品国产高清一区二区三区蜜臀| 亚洲码国产岛国毛片在线| 99热在这里有精品免费| 亚洲欧洲日产国码二区| 9l国产精品久久久久麻豆| 中国av一区二区三区| aaa国产一区| 亚洲猫色日本管| 欧美三区在线观看| 亚洲6080在线| 91精品国产免费| 日韩电影在线一区| 欧美一区二区在线免费观看| 夜夜嗨av一区二区三区网页| 欧美三级日韩三级国产三级| 日韩精品一级二级| 精品国产三级a在线观看| 国产精品亚洲一区二区三区妖精| 国产网红主播福利一区二区| aa级大片欧美| 亚洲成a人在线观看| 日韩精品一区二| 成人精品gif动图一区| 亚洲久草在线视频| 91麻豆精品国产无毒不卡在线观看 | 白白色 亚洲乱淫| 亚洲一区在线观看视频| 精品粉嫩超白一线天av| 国产成人综合亚洲网站| 亚洲一区二区三区四区在线观看| 日韩欧美一区电影| 高清shemale亚洲人妖| 亚洲欧美偷拍卡通变态| 欧美一区二区三区视频免费| 成人性生交大片| 日韩 欧美一区二区三区| 国产精品网站一区| 5858s免费视频成人| 成人三级在线视频| 日韩高清在线一区| 亚洲人一二三区| 日韩一区二区不卡| 一本久久a久久精品亚洲| 激情五月激情综合网| 亚洲精品国产一区二区三区四区在线| 欧美一区二区三级| 91小视频在线免费看| 国产一区二区三区免费看| 亚洲一区影音先锋| 国产欧美一区二区精品婷婷| 色老综合老女人久久久| 国产精品一区二区x88av| 偷拍一区二区三区四区| 最新不卡av在线| 久久久午夜精品| 51午夜精品国产| 在线欧美小视频| 成人深夜福利app| 国产一区中文字幕| 麻豆免费看一区二区三区| 亚洲国产另类av| 亚洲视频狠狠干| 中文一区一区三区高中清不卡| 欧美一区二区三区爱爱| 欧美精品自拍偷拍动漫精品| 在线观看欧美黄色| 91在线国产福利| 99久久婷婷国产| 成人国产精品免费网站| 国产乱对白刺激视频不卡| 麻豆成人综合网| 美腿丝袜亚洲综合| 丝袜美腿亚洲一区二区图片| 亚洲亚洲精品在线观看| 亚洲永久免费视频| 亚洲二区在线视频| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲天堂精品在线观看| 国产精品久久久久久久浪潮网站| 国产亚洲欧美日韩日本| 国产人成亚洲第一网站在线播放| 久久人人爽爽爽人久久久| 日韩欧美高清一区| 欧美va亚洲va| 国产亚洲一本大道中文在线| 国产三级欧美三级日产三级99| 久久久亚洲国产美女国产盗摄| 久久婷婷色综合| 国产网站一区二区| 亚洲视频一区在线| 亚洲一区二区三区在线播放| 性久久久久久久久| 婷婷激情综合网| 久久99精品久久只有精品| 国产一区二区毛片| 成+人+亚洲+综合天堂| 色香蕉久久蜜桃| 欧美日韩精品一区二区三区蜜桃 | 欧美极品美女视频| 亚洲国产精品传媒在线观看| 国产精品第13页| 亚洲一二三四在线观看| 日韩电影免费在线观看网站| 国内精品在线播放| 白白色亚洲国产精品| 欧美色成人综合| 精品国产91九色蝌蚪| 国产精品成人在线观看| 亚洲国产精品久久久久秋霞影院 | 秋霞国产午夜精品免费视频| 久久精品999| 菠萝蜜视频在线观看一区| 99亚偷拍自图区亚洲| 欧美精品色综合| 久久久精品免费网站| 亚洲精品视频免费观看| 蜜臀精品一区二区三区在线观看| 国产sm精品调教视频网站| 欧美三级电影一区| 国产视频一区在线观看| 亚洲成人av在线电影| 国产成人精品综合在线观看| 色哟哟一区二区三区| 精品少妇一区二区三区在线视频| 国产精品亲子伦对白| 五月婷婷久久丁香| 成人中文字幕在线| 欧美一区二区免费| 18涩涩午夜精品.www| 黄页视频在线91| 欧美三级在线看| 中文字幕亚洲一区二区av在线 | 麻豆精品一区二区综合av| 成人av在线一区二区三区| 3atv在线一区二区三区| 国产欧美日韩另类一区| 奇米综合一区二区三区精品视频| youjizz国产精品| 久久奇米777| 男人的天堂久久精品| 色哟哟一区二区三区| 亚洲国产成人午夜在线一区| 麻豆精品一区二区| 欧美性videosxxxxx| 亚洲欧洲日产国产综合网| 激情偷乱视频一区二区三区| 欧美日本乱大交xxxxx| 一区二区三区四区高清精品免费观看 | 蜜臀99久久精品久久久久久软件| 在线国产亚洲欧美| 中文欧美字幕免费| 国产精品影视在线| 欧美草草影院在线视频| 丝袜亚洲另类欧美| 欧美日韩卡一卡二| 洋洋av久久久久久久一区| 北岛玲一区二区三区四区| 国产女人18毛片水真多成人如厕| 免播放器亚洲一区| 欧美日韩电影在线播放| 亚洲高清免费在线| 欧美伊人久久久久久午夜久久久久| 日韩一区在线播放| 97se亚洲国产综合自在线不卡| 国产精品麻豆一区二区| 成人性色生活片| 中文字幕一区二| 色婷婷av久久久久久久| 亚洲综合在线视频| 欧美视频日韩视频| 秋霞成人午夜伦在线观看| 日韩三级视频在线看|