EglPlatformContext.h#
↰ Parent directory (EGL
)
Contains the declaration of the PlatformContext class, the main wrapper for the Platform specific part of a Graphics context.
Includes#
PVRCore/math/Rectangle.h
PVRCore/stream/Stream.h
PVRCore/strings/StringFunctions.h
PVRUtils/EGL/EglPlatformHandles.h
map
Included By#
Namespaces#
Classes#
Functions#
Typedefs#
Source Code#
#pragma once
#include "PVRCore/stream/Stream.h"
#include "PVRCore/math/Rectangle.h"
#include "PVRCore/strings/StringFunctions.h"
#if TARGET_OS_IPHONE
#include "PVRUtils/EAGL/EaglPlatformHandles.h"
#else
#include "PVRUtils/EGL/EglPlatformHandles.h"
#endif
#include <map>
namespace pvr {
namespace platform {
class EglContext_
{
public:
EglContext_()
: _platformContextHandles(), _swapInterval(-2), _initialized(false), _preInitialized(false), _apiType(Api::Unspecified), _maxApiVersion(Api::Unspecified), _attributes(0),
_isDiscardSupported(false), _parentContext(0)
{}
virtual ~EglContext_() { release(); }
void release();
Api getMaxApiVersion();
bool isApiSupported(Api api);
void swapBuffers();
void makeCurrent();
const NativePlatformHandles_& getNativePlatformHandles() const { return *_platformContextHandles; }
NativePlatformHandles_& getNativePlatformHandles() { return *_platformContextHandles; }
std::string getInfo();
bool isInitialized() const { return (_platformContextHandles.get() != 0) && _initialized; }
Api getApiVersion();
void init(OSWindow window, OSDisplay display, DisplayAttributes& attributes, Api minVersion = Api::Unspecified, Api maxVersion = Api::Unspecified);
uint32_t getOnScreenFbo();
std::unique_ptr<EglContext_> createSharedContextFromEGLContext();
private:
EglContext_(const EglContext_& rhs); // deleted
NativePlatformHandles _platformContextHandles;
NativeDisplayHandle _displayHandle;
int8_t _swapInterval;
bool _initialized;
bool _preInitialized;
Api _apiType;
Api _maxApiVersion;
DisplayAttributes* _attributes;
bool _isDiscardSupported;
platform::EglContext_* _parentContext;
// Must be called after the context has been active in order to query the driver for resource limitations.
void populateMaxApiVersion();
};
} // namespace platform
} // namespace pvr
namespace pvr {
typedef std::unique_ptr<platform::EglContext_> EglContext;
std::unique_ptr<platform::EglContext_> createEglContext();
} // namespace pvr