OpenGLRenderer: Use a single context with WebGL

This commit is contained in:
SirLynix
2022-12-06 09:06:38 +01:00
committed by Jérôme Leclercq
parent ea5c5240fc
commit 5b3703347f
16 changed files with 68 additions and 136 deletions

View File

@@ -25,8 +25,8 @@ namespace Nz::GL
EGLLoader(const Renderer::Config& config);
~EGLLoader();
std::unique_ptr<Context> CreateContext(const OpenGLDevice* device, const ContextParams& params, Context* shareContext) const override;
std::unique_ptr<Context> CreateContext(const OpenGLDevice* device, const ContextParams& params, WindowHandle handle, Context* shareContext) const override;
std::shared_ptr<Context> CreateContext(const OpenGLDevice* device, const ContextParams& params, Context* shareContext) const override;
std::shared_ptr<Context> CreateContext(const OpenGLDevice* device, const ContextParams& params, WindowHandle handle, Context* shareContext) const override;
inline EGLDisplay GetDefaultDisplay() const;
ContextType GetPreferredContextType() const override;

View File

@@ -31,8 +31,8 @@ namespace Nz::GL
Loader() = default;
virtual ~Loader();
virtual std::unique_ptr<Context> CreateContext(const OpenGLDevice* device, const ContextParams& params, Context* shareContext = nullptr) const = 0;
virtual std::unique_ptr<Context> CreateContext(const OpenGLDevice* device, const ContextParams& params, WindowHandle handle, Context* shareContext = nullptr) const = 0;
virtual std::shared_ptr<Context> CreateContext(const OpenGLDevice* device, const ContextParams& params, Context* shareContext = nullptr) const = 0;
virtual std::shared_ptr<Context> CreateContext(const OpenGLDevice* device, const ContextParams& params, WindowHandle handle, Context* shareContext = nullptr) const = 0;
virtual ContextType GetPreferredContextType() const = 0;

View File

@@ -102,7 +102,7 @@ namespace Nz::GL
inline void Shader::DestroyHelper(OpenGLDevice& /*device*/, const Context& context, GLuint objectId)
{
// context.glDeleteShader(objectId);
context.glDeleteShader(objectId);
}
}

View File

@@ -24,8 +24,8 @@ namespace Nz::GL
WGLLoader(const Renderer::Config& config);
~WGLLoader() = default;
std::unique_ptr<Context> CreateContext(const OpenGLDevice* device, const ContextParams& params, Context* shareContext) const override;
std::unique_ptr<Context> CreateContext(const OpenGLDevice* device, const ContextParams& params, WindowHandle handle, Context* shareContext) const override;
std::shared_ptr<Context> CreateContext(const OpenGLDevice* device, const ContextParams& params, Context* shareContext) const override;
std::shared_ptr<Context> CreateContext(const OpenGLDevice* device, const ContextParams& params, WindowHandle handle, Context* shareContext) const override;
ContextType GetPreferredContextType() const override;

View File

@@ -65,9 +65,7 @@ namespace Nz::GL
Fallback fallbacks; //< m_ omitted
std::unordered_set<std::string> m_supportedPlatformExtensions;
static EMSCRIPTEN_WEBGL_CONTEXT_HANDLE s_handle;
static size_t s_handleCounter;
bool m_ownsDisplay;
EMSCRIPTEN_WEBGL_CONTEXT_HANDLE m_handle;
};
}

View File

@@ -10,8 +10,7 @@ namespace Nz::GL
inline WebContext::WebContext(const OpenGLDevice* device, const WebLoader& loader) :
Context(device),
m_loader(loader),
//m_handle(0),
m_ownsDisplay(false)
m_handle(0)
{
}

View File

@@ -21,8 +21,8 @@ namespace Nz::GL
friend SymbolLoader;
public:
std::unique_ptr<Context> CreateContext(const OpenGLDevice* device, const ContextParams& params, Context* shareContext) const override;
std::unique_ptr<Context> CreateContext(const OpenGLDevice* device, const ContextParams& params, WindowHandle handle, Context* shareContext) const override;
std::shared_ptr<Context> CreateContext(const OpenGLDevice* device, const ContextParams& params, Context* shareContext) const override;
std::shared_ptr<Context> CreateContext(const OpenGLDevice* device, const ContextParams& params, WindowHandle handle, Context* shareContext) const override;
ContextType GetPreferredContextType() const override;