Android Build Tools
This commit is contained in:
119
Android/android-ndk-r27d/sources/android/ndk_helper/GLContext.h
Normal file
119
Android/android-ndk-r27d/sources/android/ndk_helper/GLContext.h
Normal file
@ -0,0 +1,119 @@
|
||||
/*
|
||||
* Copyright 2013 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <EGL/egl.h>
|
||||
#include <GLES2/gl2.h>
|
||||
#include <android/log.h>
|
||||
|
||||
#include "JNIHelper.h"
|
||||
|
||||
namespace ndk_helper
|
||||
{
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Constants
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
// Class
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
/******************************************************************
|
||||
* OpenGL context handler
|
||||
* The class handles OpenGL and EGL context based on Android activity life cycle
|
||||
* The caller needs to call corresponding methods for each activity life cycle events as it's done in sample codes.
|
||||
*
|
||||
* Also the class initializes OpenGL ES3 when the compatible driver is installed in the device.
|
||||
* getGLVersion() returns 3.0~ when the device supports OpenGLES3.0
|
||||
*
|
||||
* Thread safety: OpenGL context is expecting used within dedicated single thread,
|
||||
* thus GLContext class is not designed as a thread-safe
|
||||
*/
|
||||
class GLContext
|
||||
{
|
||||
private:
|
||||
//EGL configurations
|
||||
ANativeWindow* window_;
|
||||
EGLDisplay display_;
|
||||
EGLSurface surface_;
|
||||
EGLContext context_;
|
||||
EGLConfig config_;
|
||||
|
||||
//Screen parameters
|
||||
int32_t screen_width_;
|
||||
int32_t screen_height_;
|
||||
int32_t color_size_;
|
||||
int32_t depth_size_;
|
||||
|
||||
//Flags
|
||||
bool gles_initialized_;
|
||||
bool egl_context_initialized_;
|
||||
bool es3_supported_;
|
||||
float gl_version_;
|
||||
bool context_valid_;
|
||||
|
||||
void InitGLES();
|
||||
void Terminate();
|
||||
bool InitEGLSurface();
|
||||
bool InitEGLContext();
|
||||
|
||||
GLContext( GLContext const& );
|
||||
void operator=( GLContext const& );
|
||||
GLContext();
|
||||
virtual ~GLContext();
|
||||
public:
|
||||
static GLContext* GetInstance()
|
||||
{
|
||||
//Singleton
|
||||
static GLContext instance;
|
||||
|
||||
return &instance;
|
||||
}
|
||||
|
||||
bool Init( ANativeWindow* window );
|
||||
EGLint Swap();
|
||||
bool Invalidate();
|
||||
|
||||
void Suspend();
|
||||
EGLint Resume( ANativeWindow* window );
|
||||
|
||||
int32_t GetScreenWidth()
|
||||
{
|
||||
return screen_width_;
|
||||
}
|
||||
int32_t GetScreenHeight()
|
||||
{
|
||||
return screen_height_;
|
||||
}
|
||||
|
||||
int32_t GetBufferColorSize()
|
||||
{
|
||||
return color_size_;
|
||||
}
|
||||
int32_t GetBufferDepthSize()
|
||||
{
|
||||
return depth_size_;
|
||||
}
|
||||
float GetGLVersion()
|
||||
{
|
||||
return gl_version_;
|
||||
}
|
||||
bool CheckExtension( const char* extension );
|
||||
};
|
||||
|
||||
} //namespace ndkHelper
|
||||
Reference in New Issue
Block a user