Hi,

I don’t have much ES2 experience, so I cannot really answer 1). But I think I 
can somewhat answer 2) based on Windows OpenGL knowledge.

This might be a situation similar to how Windows handles GL contexts. When you 
create a context in modern GL (3.0 and onwards, aka. Core) you must acquire 
some newer GL/WGL calls which can create such context. These calls are GL 
extensions, so to get them you need to be able to call `wglGetProcAddress()`. 
To be able to call `wglGetProcAddress()` on Windows you need to first make any 
GL context current. Core WGL exposes calls to create a 1.1 Context, but they 
require a window.

As such, usual path to get a 3.0 Context on Windows is as follows:
- Create a dummy/invisible window
- Use a dummy window to create 1.1 Context (aka false context)
- Make 1.1 false context current
- Fetch necessary functions via `wglGetProcAddress()`
- Create a proper 3.0 Context and make It current

For reference, Khronos Wiki mentions this briefly: 
https://www.khronos.org/opengl/wiki/Creating_an_OpenGL_Context_(WGL)#Create_a_False_Context

I think on Linux and with GLX such behavior is not required (AFAIK 
glXGetProcAddress could fetch GL/GLX extensions without a current context), but 
to keep it consistent on all platforms ES2 seems to follow this path regardless.

BRs,
Lukasz

From: openjfx-dev <openjfx-dev-r...@openjdk.org> On Behalf Of Thiago Milczarek 
Sayão
Sent: Friday, 20 October 2023 22:38
To: openjfx-dev <openjfx-dev@openjdk.org>
Subject: Exploring the prism es2 land - couple of questions

Hi,

I have some questions on prism es2.

1) Why is a Context created on each platform GLFactory if there is a GLContext?

2) What is the use of the Dummy Window?

I'm working on using EGL instead of GLX, so it will work on Wayland.

Thanks.

Reply via email to