overview of developing opengl es applications on …...•bada is samsung’s smartphone platform...

30
© Copyright Khronos Group, 2010 - Page 1 Overview of developing OpenGL ES Applications on bada Sungyul Choe Samsung Electronics

Upload: others

Post on 02-Jun-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 1

Overview of developing OpenGL ES Applications on bada

Sungyul ChoeSamsung Electronics

Page 2: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 2

Contents

• bada: Smartphone platform

• OpenGL ES on bada

• bada-specific details

• Summary

Page 3: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 3

1

bada: Samsung Smartphone Platform

Page 4: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 4

Smartphone: Wave & WaveII

Wave : 1GHz Processor

Super AMOLED (3.3’’ WVGA)

5.0 Megapixel camera

HD video playback & recording

Bluetooth 3.0

Wi-Fi (802.11b/g/n)

Various sensors

Wave II : 1GHz Processor

Super LCD (3.7’’ WVGA)

5.0 Megapixel camera

HD video playback & recording

Bluetooth 3.0

Wi-Fi (802.11b/g/n)

Various sensors

Page 5: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 5

Wave family, more bada devices

Wave525 Wave575 Wave723Wave533

< 500MHz Processor

TFT LCD (3.2’’ WQVGA)

3.2 ~ 5.0 Megapixel camera

Bluetooth 3.0

Wi-Fi (802.11b/g/n)

Page 6: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 6

bada, Smartphone platform

• An execution environment for feature-rich apps and services

Page 7: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 7

bada features: Overview

Audio

GraphicsSensors

Sound

Weather

Input Output

Vibration

$2 $3In-App

purchasing

Remote contents

Service-centric

SNS Gateway

Face detection

Page 8: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 8

bada Development Environment

• bada IDE

- Eclipse based development environment

- C/C++ based development environment

Page 9: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 9

Application Life-cycle

Page 10: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 10

2

OpenGL ES on bada

Page 11: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 11

3D rendering in bada

• bada supports

- EGL- Manages contexts and drawing surfaces

- Rendering on every kind of controls

- OpenGL® ES 1.1/2.0- 1.1 – Fixed function hardware

- 2.0 – Fully programmable 3D graphics

Page 12: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 12

3D rendering in bada

• GlesCube - Sample application in SDK

- Initialize EGL

- Initialize GL

- Start timer

- Rendering loop- Draw a scene in regular interval

- Update screen

- Kill timer

- Release GL resources

Page 13: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 13

3D rendering in bada

• Initialize EGL

bool GlesCube::InitEGL()

{

EGLint numConfigs = 1;

EGLint eglConfigList[] = {/*…*/};

EGLint eglContextList[] = {/*…*/};eglBindAPI(EGL_OPENGL_ES_API);

eglDisplay = eglGetDisplay(

(EGLNativeDisplayType)EGL_DEFAULT_DISPLAY);

eglInitialize(eglDisplay, null, null);

eglChooseConfig(eglDisplay, eglConfigList,

&eglConfig, 1, &numConfigs);

eglSurface = eglCreateWindowSurface(eglDisplay,

eglConfig, (EGLNativeWindowType)pForm, null);

eglContext = eglCreateContext(__eglDisplay,

eglConfig, EGL_NO_CONTEXT, eglContextList);

...

}

Page 14: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 14

3D rendering in bada

• Initialize GL

bool GlesCube::InitGL()

{

GLuint fragShader = glCreateShader(GL_FRAGMENT_SHADER);

GLuint vertShader = glCreateShader(GL_VERTEX_SHADER);

......

glShaderSource(fragShader, 1, (const char**)&fragmentText, null);

glCompileShader(fragShader);

glShaderSource(vertShader, 1, (const char**)&vertexText, null);

glCompileShader(vertShader);

programObject = glCreateProgram();

glAttachShader(programObject, fragShader);

glAttachShader(programObject, vertShader);

glLinkProgram(programObject);

......

glUseProgram(programObject);

Page 15: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 15

3D rendering in bada

• Rendering loop

bool GlesCube::Draw()

{

eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext);

......

glViewport(0, 0, width, height);

......

glDrawElements(GL_TRIANGLES, numIndices,

GL_UNSIGNED_SHORT, indices);

glFinish();

eglSwapBuffers(eglDisplay, eglSurface);

......

return true;

}

Page 16: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 16

3D rendering in bada

• Release GL resources

void GlesCube::DestroyGL()

{

glDeleteProgram(programObject);

eglMakeCurrent(eglDisplay, null, null, null);

eglDestroyContext(eglDisplay, eglContext);

eglDestroySurface(eglDisplay, eglSurface);

eglTerminate(eglDisplay);

}

Page 17: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 17

3D rendering in bada

• Checks OpenGL ES version of device

• Result string

void Test1::CheckGLES(void)

{

String key(L"OpenGLESVersion");

String GLESVersion;

SystemInfo::GetValue(key,GLESVersion);

AppLog("%ls", GLESVersion.GetPointer());

}

Device Result

Wave/Wave II 1.1/2.0

Wave525

Page 18: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 18

Animation in bada

• Timer-based rendering loop

- Step 1: Create a timer

- Step 2: Implement event listener

- Step 3: Handle timer event

pTimer= new Timer;

pTimer->Construct(*this);

pTimer->Start(TIME_OUT);

class GlesCube11 :

public Osp::Base::Runtime::ITimerEventListener

......

void OnTimerExpired(Osp::Base::Runtime::Timer& timer);

void GlesCube11::OnTimerExpired(Timer& timer){

pTimer->Start(TIME_OUT);

Draw(); // draw something..}

Page 19: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 19

3

bada-specific details

Page 20: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 20

3D accelerator of Wave/Wave II

• POWERVR SGX

- Unified Shader Architecture

- Tile-based Deferred Rendering (TBDR)- Enhanced rendering performance

- Failed to pass conformance test for depth buffer

Simulator

(Good)

Target

(Not Good)

Page 21: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 21

3D accelerator of Wave/Wave II

• Hardware specific features

Visit http://www.imgtec.com

Page 22: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 22

3D rendering of bada Simulator

• bada simulator

- Supports EGL & OpenGL® ES 1.1/2.0

- Invokes wgl & OpenGL® APIs corresponding to

those of EGL & OpenGL® ES

- Emulates all bada APIs and almost all EGL & OpenGL® APIs

Page 23: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 23

3D rendering of bada Simulator

• Limitation

- Simulator functionalities depend on those of PC

- EGL Pixmap surface- OpenGL® does not support pixmap surface

- For simulator, you need to call eglUpdateBufferOSP to flush rendering results to Bitmap

eglSwapBuffers(eglDisplay, eglSurface);

eglUpdateBufferOSP(eglDisplay, pixmap_surface);

Page 24: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 24

OpenGL ES Extensions

• Using eglGetProcAddress function

- Extensions depends on the functionalities of GPU

- Step1: Declare function pointer

- Step2: Get function pointer

- Step3: Call the extension function

fp_glCurrentPaletteMatrixOES(index); // Gluint index

Typedef void (GL_APIENTRYP PFNGLCURRENTPALETTEMATRIXOESPROC)

(GLuint matrixpaletteindex);

PFNGLCURRENTPALETTEMATRIXOESPROC fp_glCurrentPaletteMatrixOES;

fp_glCurrentPaletteMatrixOES =

(PFNGLCURRENTPALETTEMATRIXOESPROC)

eglGetProcAddress("glCurrentPaletteMatrixOES");

Page 25: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 25

4

Summary

Page 26: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 26

Screenshot

TwinBlades: The Reaping Vanguard

<Press Start Studio, 2010>

Modern Combat: Sandstorm

<© 2009 Gameloft>

Page 27: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 27

Screenshot

Dark Shrine

<Hotdog Studio>

Need for Speed™ Shift

<Electronic Arts>

Page 28: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 28

Summary

• bada is Samsung’s smartphone platform

• bada supports OpenGL ES 1.1/2.0 standards

• Some bada-specific details

- Graphics hardware specific features

- OpenGL ES in simulators

- OpenGL ES extensions

Page 29: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 29

Find out more……

• bada SDK

- Latest is bada SDK 1.2

- IDE, Tutorials, Documentations, Sample codes and various resources

- Visit http://developers.bada.com/ !!!

• POWERVR Insider

- OpenGL ES 1.1/2.0 SDK

http://www.imgtec.com/powervr/insider/powervr-insider.asp

Page 30: Overview of developing OpenGL ES Applications on …...•bada is Samsung’s smartphone platform •bada supports OpenGL ES 1.1/2.0 standards •Some bada-specific details - Graphics

© Copyright Khronos Group, 2010 - Page 30

Thank you