Added GLES 1.x spinning cube-rendering code to eglbringuptest
The coordinate, color and index data are uploaded to server-side
buffers by the CGLES1Cube::KhrSetup function. CGLES1Cube::KhrPaint
just sets the view matrix and issues a draw command.
Which demo to display can be selected by passing its name on the
command line, e.g.
eglbringuptest vgline
eglbringuptest gles1cube
If no name is provided, the application defaults to vgline.
/*
* Copyright (c) 2009 Symbian Foundation Ltd
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Symbian Foundation Ltd - initial contribution.
*
* Contributors:
*
* Description:
* Tiger app container class
*/
#ifndef TIGERCONTAINER_H
#define TIGERCONTAINER_H
// INCLUDES
#include <coecntrl.h>
#include "tiger.h"
#include <akndef.h>
#include <eglosnativewindowtype.h>
// CLASS DECLARATION
/**
* Container control class that handles the OpenGL ES initialization and deinitializations.
* Also uses the CTiger class to do the actual OpenGL ES rendering.
*/
class CTicker;
class CTigerContainer : public CCoeControl, MCoeControlObserver
{
public: // Constructors and destructor
/**
* EPOC default constructor. Initializes the OpenGL ES for rendering to the window surface.
* @param aRect Screen rectangle for container.
*/
void ConstructL(const TRect& aRect);
/**
* Destructor. Destroys the CPeriodic, CTiger and uninitializes OpenGL ES.
*/
virtual ~CTigerContainer();
private: // Functions from base classes
/**
* Method from CoeControl that gets called when the display size changes.
* If OpenGL has been initialized, notifies the renderer class that the screen
* size has changed.
*/
void SizeChanged();
/**
* Handles a change to the control's resources. This method
* reacts to the KEikDynamicLayoutVariantSwitch event (that notifies of
* screen size change) by calling the SetExtentToWholeScreen() again so that
* this control fills the new screen size. This will then trigger a call to the
* SizeChanged() method.
* @param aType Message UID value, only KEikDynamicLayoutVariantSwitch is handled by this method.
*/
void HandleResourceChange(TInt aType);
/**
* Method from CoeControl. Does nothing in this implementation.
*/
TInt CountComponentControls() const;
/**
* Method from CCoeControl. Does nothing in this implementation.
*/
CCoeControl* ComponentControl(TInt aIndex) const;
/**
* Method from CCoeControl. Does nothing in this implementation.
* All rendering is done in the DrawCallBack() method.
*/
void Draw(const TRect& aRect) const;
/**
* Method from MCoeControlObserver that handles an event from the observed control.
* Does nothing in this implementation.
* @param aControl Control changing its state.
* @param aEventType Type of the control event.
*/
void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);
void RenderBitmap(CWindowGc& aGc, CFbsBitmap* aBitmap) const;
void CopyAndRender(CWindowGc& aGc) const;
TInt FlipVertical(CFbsBitmap& aBitmap) const;
private: //data
CTiger* iTiger;
};
#endif
// End of File