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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? ogles_demo_01.cpp

?? 此程序需要Brew sdk2.1版本以上,是關(guān)于OpenGL的手機(jī)編程.
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*=================================================================================
FILE:       ogles_demo_01.cpp
  
DESCRIPTION: This file is provide as a standard sample Brew source file. 
             Please refer to this OpenGL(R)ES brew sample application as a 
             reference on how to use the standard OpenGL-ES and EGL APIs.
                          
ABSTRACT: The ogles_demo_01 application (very simple, draw a triangle)

AUTHOR: QUALCOMM
                        
        Copyright (c) 2004 QUALCOMM Incorporated.
               All Rights Reserved.
            QUALCOMM Proprietary/GTDR
=================================================================================*/

/*-------------------------------------------------------------------------------*
 *                      I N C L U D E   F I L E S                                *
 *-------------------------------------------------------------------------------*/

#include "ogles_demo_01.h"


/*-------------------------------------------------------------------------------*
 *       FOR OEM REFERENCE ONLY, USED ONLY FOR BUILDING STATIC APPLICATION       *
 *       Brew developers do not need this code snippet in their appliations      *
 *-------------------------------------------------------------------------------*/
#if defined(BREW_STATIC_APP)
extern "C"
{
int   ogles_demo_01_CreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj);
static int  ogles_demo_01_Load(IShell *ps, void * pHelpers, IModule ** pMod);

// Constant Data...
static const AEEAppInfo gai_ogles_demo_01 = { AEECLSID_OGLES_DEMO_01, OGLES_DEMO_01_RES_FILE, IDS_APPNAME, 0, 0, 0, 0, AFLAG_GAME };

PFNMODENTRY ogles_demo_01_GetModInfo(IShell * ps, AEECLSID ** ppClasses, AEEAppInfo ** pApps, uint16 * pnApps, uint16 * pwMinPriv)
{
   *pApps = (AEEAppInfo *)&gai_ogles_demo_01;
   *pnApps = 1;
   return((PFNMODENTRY)ogles_demo_01_Load);
}

static int ogles_demo_01_Load(IShell *ps, void * pHelpers, IModule ** pMod)
{
	return( AEEStaticMod_New((int16)(sizeof(AEEMod)),ps,pHelpers,pMod,ogles_demo_01_CreateInstance,NULL) );
}
}
#endif  //BREW_STATIC_APP


/*-------------------------------------------------------------------------------*
 *                          B E G I N   P R O G R A M                            *
 *-------------------------------------------------------------------------------*/

/*===========================================================================
FUNCTION: CreateInstance
  
DESCRIPTION:
   This function will create an instance for the ogles_demo_01 application 
  
PROTOTYPE:
   int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj)
      
PARAMETERS:
   none
            
DEPENDENCIES
  none
              
RETURN VALUE
  none
                
===========================================================================*/
#if defined(BREW_STATIC_APP)
int ogles_demo_01_CreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj)
#else
int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj)
#endif
{
	*ppObj = NULL;
	
	if(ClsId == AEECLSID_OGLES_DEMO_01){
		if(  AEEApplet_New(sizeof(ogles_demo_01), ClsId, pIShell, po, (IApplet**)ppObj,
			(AEEHANDLER)ogles_demo_01::HandleEvent,(PFNFREEAPPDATA)ogles_demo_01::Destroy)== TRUE )
		{
			
			return AEE_SUCCESS;
		}
	}
	return EFAILED;
}


/*===========================================================================
FUNCTION: ogles_demo_01::Init
  
DESCRIPTION:
   This function will initalize the ogles_demo_01 application 
  
PROTOTYPE:
  boolean ogles_demo_01::Init()
      
PARAMETERS:
   none
            
DEPENDENCIES
  none
              
RETURN VALUE
  TRUE: if initialize was successful
  FALSE: if error occured
                
===========================================================================*/
boolean ogles_demo_01::Init()
{

	DBGPRINTF("_X_INIT ROUTINE STARTED");
	// IGL and IEGL
	if( ISHELL_CreateInstance(m_applet.m_pIShell, AEECLSID_GL, (void **)&m_pIGL) != SUCCESS ){
		return FALSE;
	}else 
	{
#if !defined(BREW_STATIC_APP)
		// To use the standard OpenGL|ES APIs must call IGL_Init()
		IGL_Init(m_pIGL);
#endif
	}

	if( ISHELL_CreateInstance(m_applet.m_pIShell, AEECLSID_EGL, (void **)&m_pIEGL) != SUCCESS ){
		return FALSE;
	}else
	{
#if !defined(BREW_STATIC_APP)
		// To use the standard EGL APIs must call IEGL_Init()
	   IEGL_Init(m_pIEGL);
#endif
	}


	// File I/O
	if( ISHELL_CreateInstance( m_applet.m_pIShell, AEECLSID_FILEMGR, (void **)(&m_pIFileMgr) ) != SUCCESS )
	{
		CleanUp();	
		return FALSE;
	}

	// device frame buffer info
	if( IDISPLAY_GetDeviceBitmap(m_applet.m_pIDisplay, &m_pDDBitmap) != SUCCESS )
	{
		CleanUp();		
		return FALSE;
	}
	if( IBITMAP_GetInfo(m_pDDBitmap, &m_DDBitmapInfo, sizeof(AEEBitmapInfo)) != SUCCESS )
	{
		CleanUp();
		return FALSE;
	}

    m_pMenuCtl = NULL;
	BuildMenu(GetScreenWidth(),GetScreenHeight());
	

	// Setup GL/EGL 
	SetupEGL(); 
	SetupGL();

	// Set the main menu to be active
	IMENUCTL_SetActive( m_pMenuCtl, TRUE );
	m_eState =MM_MAINMENU;

    return TRUE;
}


/*===========================================================================
FUNCTION: ogles_demo_01::Destroy
  
DESCRIPTION:
   This function provides a wrapper for the Brew exit routine. 
  
PROTOTYPE:
  void ogles_demo_01::Destroy(ogles_demo_01* p)
      
PARAMETERS:
   none
            
DEPENDENCIES
  static fucntion
              
RETURN VALUE
  none
                
===========================================================================*/
void ogles_demo_01::Destroy(ogles_demo_01* p)
{
	p->CleanUp();
}


/*===========================================================================
FUNCTION: ogles_demo_01::CleanUp
  
DESCRIPTION:
   This function frees all resource for the application upon exit. 
  
PROTOTYPE:
  void ogles_demo_01::CleanUp()
      
PARAMETERS:
   none
            
DEPENDENCIES
  none
              
RETURN VALUE
  none
                
===========================================================================*/
void ogles_demo_01::CleanUp()
{

	if (m_pDDBitmap)  IBITMAP_Release( m_pDDBitmap );
	if (m_pIFileMgr) IFILEMGR_Release( m_pIFileMgr );
	if (m_pMenuCtl)  IMENUCTL_Release( m_pMenuCtl  );


	if( eglMakeCurrent( EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT ) == EGL_FALSE || eglGetError() != EGL_SUCCESS ){}
	if( eglDestroyContext( m_eglDisplay, m_eglContext ) == EGL_FALSE || eglGetError() != EGL_SUCCESS ){}
	if( eglDestroySurface( m_eglDisplay, m_eglSurface ) == EGL_FALSE || eglGetError() != EGL_SUCCESS ){}
	if( eglTerminate( m_eglDisplay ) == EGL_FALSE || eglGetError() != EGL_SUCCESS ){}


	// MUST CALL IGL/IEGL RELEASE LAST, NO EGL OR GL calls will work after you release the interfaces.
	if (m_pIEGL)         IEGL_Release( m_pIEGL     );
	if (m_pIGL)           IGL_Release( m_pIGL      );

		

}


/*===========================================================================
FUNCTION: ogles_demo_01::BuildMenu
  
DESCRIPTION:
   All events to the ogles_demo_01 application are handled in this function. 
  
PROTOTYPE:
  boolean ogles_demo_01::BuildMenu(int screen_width,int screen_height)
      
PARAMETERS:
   screen_width: device screen width
   screen_height: device screen height
            
DEPENDENCIES
  none
              
RETURN VALUE
  TRUE: If the build was built successfully 
  FALSE: If an error occured
                
===========================================================================*/
boolean ogles_demo_01::BuildMenu(int screen_width,int screen_height)
{

	AEERect qrc;
	CtlAddItem ai;

	if (m_pMenuCtl == NULL)
	if (ISHELL_CreateInstance(m_applet.m_pIShell, AEECLSID_MENUCTL, (void **)&(m_pMenuCtl)) != SUCCESS )
	{
		return FALSE;
	}

	// Get Menu Area
	SETAEERECT( &qrc, 0, 0, screen_width, screen_height );

	// Set Menu Area
	IMENUCTL_SetRect( m_pMenuCtl, &qrc );
	
	// Set Title
	IMENUCTL_SetTitle( m_pMenuCtl, OGLES_DEMO_01_RES_FILE, IDS_MM_TITLE, NULL );
	
	// Add Items in the Menu (Common to all)
	ai.pText = NULL;
	ai.pImage = NULL;
	ai.pszResImage = ai.pszResText = OGLES_DEMO_01_RES_FILE;
	ai.wFont = AEE_FONT_NORMAL;
	ai.dwData = 0;

	// Quick Test To draw a simple triangle
	ai.wText = IDS_TRI;
	ai.wImage = IDB_TRI;
	ai.wItemID = IDS_TRI;
	IMENUCTL_AddItemEx( m_pMenuCtl, &ai );


	IMENUCTL_EnableCommand(m_pMenuCtl, TRUE);
	
	return TRUE;
	
}






/*===========================================================================
FUNCTION: ogles_demo_01::HandleEvent
  
DESCRIPTION:
   All events to the ogles_demo_01 application are handled in this function. 
  
PROTOTYPE:
  boolean ogles_demo_01::HandleEvent( ogles_demo_01 *p, AEEEvent event, uint16 wParam, uint32 dwParam )
      
PARAMETERS:
   p: pointer to a ogles_demo_01 application instance
   event: the event that needs to be handled
   wParam,dwParam:   Event specific data.
            
DEPENDENCIES
  none
              
RETURN VALUE
  TRUE: If the event has been processed 
  FALSE: If the event was not vaild or processed
                
===========================================================================*/
boolean ogles_demo_01::HandleEvent( ogles_demo_01 *p, AEEEvent event, uint16 wParam, uint32 dwParam )
{
	
	switch (event) 
	{
	case EVT_APP_START:
		{
			// intialize the applet
			if( p->Init() == FALSE ) return FALSE;
			return TRUE;
			break;
		}
		
	case EVT_APP_SUSPEND:
		DBGPRINTF("Suspend Called");
		IMENUCTL_SetActive( p->m_pMenuCtl,FALSE);
		ISHELL_CancelTimer( p->m_applet.m_pIShell, NULL, (void *)p );
		p->CleanUp();
		return TRUE;
		
	case EVT_APP_RESUME:
		DBGPRINTF("Resume Called");
		p->Init();
		IMENUCTL_SetActive( p->m_pMenuCtl,TRUE);
		return TRUE;
		
	case EVT_APP_NO_SLEEP:
		return TRUE;
		
	case EVT_COMMAND:
		return p->CmdEvent(wParam);
		break;
		
		
	case EVT_KEY_PRESS:
		p->m_key_state = 1;
		p->m_key_wParam = wParam;	
		if (p->KeyEvent(wParam))
		{
			return IMENUCTL_HandleEvent(p->m_pMenuCtl, EVT_KEY, wParam, dwParam);
		}
		else
		{
			return TRUE;
		}		
		break;
		
	case EVT_KEY_RELEASE:	
		p->m_key_state =0;
		p->m_key_wParam = wParam;
		return TRUE;
		
		break;
		
	case EVT_KEY:
		if (p->m_eState == MM_EXIT)
		{
			if (p->KeyEvent(wParam))
			{
				return IMENUCTL_HandleEvent(p->m_pMenuCtl, EVT_KEY, wParam, dwParam);
			}
			else
			{
				return TRUE;
			}
			
		}
		break;
		
		
	default:

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品视频一区二区不卡| 亚洲欧美国产毛片在线| 日韩一区二区三区视频在线观看| 中文字幕中文在线不卡住| 欧美精品一区二区高清在线观看| 国产一区免费电影| 日本三级韩国三级欧美三级| 日本一区中文字幕| 奇米四色…亚洲| 久久超级碰视频| 国产一区二区三区香蕉| 国产高清精品久久久久| 风流少妇一区二区| 成人动漫中文字幕| 一本色道亚洲精品aⅴ| 在线免费精品视频| 91.com视频| 精品久久久久久最新网址| 精品少妇一区二区三区| 欧美高清在线一区| 亚洲精选视频在线| 午夜久久久久久久久久一区二区| 国产欧美一区二区三区在线看蜜臀 | 成人高清视频免费观看| 成人av免费在线| 色婷婷综合久久久| 91精品国产乱码| 久久免费偷拍视频| 综合久久久久久| 日韩av不卡在线观看| 黄页视频在线91| 91婷婷韩国欧美一区二区| 欧美午夜一区二区| 精品免费视频.| 亚洲视频中文字幕| 男人的天堂亚洲一区| 国产白丝精品91爽爽久久| 在线观看国产精品网站| 欧美videos中文字幕| 亚洲欧美日韩综合aⅴ视频| 丝袜国产日韩另类美女| 国产在线视频一区二区三区| 91免费看`日韩一区二区| 欧美福利电影网| 国产性色一区二区| 香蕉影视欧美成人| 国产东北露脸精品视频| 精品污污网站免费看| 久久久久97国产精华液好用吗| 日韩欧美的一区| 亚洲美女电影在线| 久久精品国产久精国产爱| 粉嫩aⅴ一区二区三区四区| 在线一区二区视频| 久久久久国色av免费看影院| 亚洲第一精品在线| 不卡一区二区三区四区| 色妞www精品视频| 欧美高清精品3d| 国产精品免费丝袜| 日本伊人色综合网| 日本道色综合久久| 久久奇米777| 日韩电影免费在线| 91麻豆高清视频| 久久综合九色欧美综合狠狠| 亚洲国产一区二区三区| 成人毛片老司机大片| 欧美videos中文字幕| 亚洲成人黄色影院| 成人av电影在线网| 精品国产乱码久久久久久蜜臀| 久久久久9999亚洲精品| 日本午夜精品视频在线观看 | 国产精品中文字幕日韩精品| 91网站在线播放| 精品成人a区在线观看| 午夜视黄欧洲亚洲| 91久久精品一区二区三区| 久久精品男人天堂av| 免费国产亚洲视频| 正在播放一区二区| 亚洲国产综合色| 色综合色狠狠综合色| 国产精品毛片a∨一区二区三区| 一区二区三区四区精品在线视频| 香蕉加勒比综合久久| 91同城在线观看| 国产精品国产三级国产a| 国产成人精品亚洲777人妖| 精品国产青草久久久久福利| 日韩一区精品视频| 欧美日韩在线播放| 亚洲综合精品久久| 91国模大尺度私拍在线视频| 亚洲欧洲在线观看av| 成人一区二区三区在线观看| 久久―日本道色综合久久| 极品销魂美女一区二区三区| 日韩一区二区三区精品视频| 美女视频黄免费的久久| 日韩三级视频在线看| 日韩精品乱码免费| 欧美一区二区播放| 老司机免费视频一区二区| 日韩亚洲欧美综合| 久久国产三级精品| 26uuu国产日韩综合| 国产精品69久久久久水密桃| 国产农村妇女精品| 波多野结衣中文字幕一区| 中文字幕中文在线不卡住| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 久久99国产精品尤物| 精品欧美黑人一区二区三区| 经典一区二区三区| 日本一区二区成人| 99精品国产热久久91蜜凸| 国产精品久久久久三级| 91福利在线导航| 日韩电影网1区2区| 久久一区二区视频| 99久久综合色| 亚洲国产精品精华液网站 | 国产亚洲欧美一区在线观看| 国产精品亚洲一区二区三区在线| 欧美写真视频网站| 丝袜国产日韩另类美女| 精品国产一区二区三区久久久蜜月 | 不卡一区二区中文字幕| 一区二区三区在线免费| 欧美久久久影院| 国内精品国产成人国产三级粉色 | 在线播放中文字幕一区| 青青草原综合久久大伊人精品| 91色视频在线| 青青草视频一区| 亚洲国产成人私人影院tom | 欧美精品一二三| 国产在线看一区| 亚洲免费大片在线观看| 日韩午夜激情电影| 99免费精品视频| 免费欧美在线视频| 亚洲国产成人在线| 制服丝袜国产精品| 大桥未久av一区二区三区中文| 国产亚洲短视频| 欧美亚洲图片小说| 国产一区二区导航在线播放| 中文字幕一区二区三区精华液| 国产福利一区二区三区| 亚洲一区二区成人在线观看| 精品国产百合女同互慰| 成人黄色av电影| 日韩国产一二三区| 国产精品久久三| 欧美一区三区四区| 99r国产精品| 久久精品二区亚洲w码| 亚洲男人的天堂在线观看| 日韩美女视频一区二区在线观看| 日韩二区三区四区| 中文字幕永久在线不卡| 日韩小视频在线观看专区| 91色九色蝌蚪| 国产精品88av| 奇米影视一区二区三区小说| 亚洲男女一区二区三区| 国产偷国产偷精品高清尤物| 欧美日韩精品欧美日韩精品一综合| 日韩影视精彩在线| 亚洲精品成人精品456| 日韩欧美中文字幕公布| 色久优优欧美色久优优| 国产精品自拍毛片| 麻豆精品一区二区| 亚洲一区二区三区免费视频| 国产精品久久久久aaaa樱花| 精品蜜桃在线看| 欧美一区二区三区喷汁尤物| 在线观看免费亚洲| 99久久国产综合精品女不卡| 国产精品自在在线| 精品亚洲国内自在自线福利| 日韩精品色哟哟| 偷窥少妇高潮呻吟av久久免费 | 免费在线观看精品| 午夜久久久久久久久久一区二区| 欧美一区三区四区| 欧美日韩一级片网站| 91麻豆精东视频| 粉嫩av亚洲一区二区图片| 国产一区二区三区综合| 麻豆精品国产91久久久久久| 秋霞午夜av一区二区三区| 丝袜美腿一区二区三区| 亚洲h动漫在线| 天天av天天翘天天综合网色鬼国产| 亚洲国产欧美一区二区三区丁香婷 |