Hello Guest

Using bgfx and opengl. [solved]

  • 6 Replies
  • 605 Views
Using bgfx and opengl. [solved]
« on: March 07, 2018, 19:42:08 »
Good afternoon! Let's say I have a game that uses OpenGL. But can I use bgfx and opengl at the same time for rendering or not?
For example: I draw a cube on opengl, and another 3D figure using bgfx?
« Last Edit: March 15, 2018, 15:52:00 by Misterpin »

Re: Using bgfx and opengl.
« Reply #1 on: March 07, 2018, 19:44:31 »
I using GLFW for window and input.

*

Online spasi

  • *****
  • 2028
    • WebHotelier
Re: Using bgfx and opengl.
« Reply #2 on: March 07, 2018, 20:01:19 »
It should be possible. There's the bgfx_get_internal_data() function that returns this structure:

Code: [Select]
struct bgfx_internal_data_t {
    bgfx_caps_t * caps;
    void * context;
}

If you initialized bgfx with the OpenGL renderer (BGFX_RENDERER_TYPE_OPENGL), then the context pointer is the OpenGL context handle. You can grab it and, for example, create another OpenGL context that shares objects with the bgfx context (you'll need the platform-specific WGL/GLX/GLX bindings for that).

Note: I just noticed that there's a bug in the bindings and the context pointer is not exposed in the BGFXInternalData class. A workaround for now:

Code: [Select]
BGFXInternalData id = bgfx_get_internal_data();
long ctx = memGetAddress(id.address() + POINTER_SIZE);

Re: Using bgfx and opengl.
« Reply #3 on: March 08, 2018, 08:04:30 »
That is, you can initialize bgfx and render?

*

Online spasi

  • *****
  • 2028
    • WebHotelier
Re: Using bgfx and opengl.
« Reply #4 on: March 08, 2018, 08:18:04 »
Yes, you first initialize GLFW with glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API), then initialize bfgx which creates the context. You get the context handle with bgfx_get_internal_data(), then you can do the custom rendering. Fair warning: it's more than likely that you'll have to study bgfx internals if you want to render to the same context as bgfx, without messing its state. Creating a new context with object sharing should be simpler. Depends on what exactly you're trying to do of course.

Re: Using bgfx and opengl.
« Reply #5 on: March 08, 2018, 09:08:30 »
Thank you! I would like to ask a small question. Soon there was a release of LWJGL 3.2? I hope this should be a great update!

*

Online spasi

  • *****
  • 2028
    • WebHotelier
Re: Using bgfx and opengl.
« Reply #6 on: March 08, 2018, 11:54:42 »
There's currently no reason to push for a 3.2 release. The release schedule is going well lately and there are fresh updates almost every weekly if you follow the nightly snapshots.

Also, a few notes on versioning:

- This library is called LWJGL 3, but it's a rewrite of LWJGL 2 that came before it. I.e. it's not really the 3rd major release of the LWJGL library, but completely new.
- So, we're currently at LWJGL v3.1.6, but you can think of it as LWJGL3 v1.6.
- I'm saving 3.2/3.3/etc. for major API-incompatible changes. It's like semantic versioning, but shifted to the right by a version number.
- I'm saving 4.0 for whenever Project Panama becomes available. LWJGL 3.x and 4.0 will be maintained in parallel, at least for a while.