masterfeizz / picaGL

38 stars 9 forks source link

[Feature request] Context creation #1

Open MrHuu opened 4 years ago

MrHuu commented 4 years ago

Intro:

First, I want to thank you for your research and development on PicaGL. While it may not be a fully completed GL implementation, with Xash3d and ioQuake you've proven it works.. great!

To my knowledge, PicaGL is currently the most up-to-date and usable GL implementation available for 3DS. While Citro3d may have some cool features, it's a lot of work to get heavily GL dependent software to run with Citro3d.

I would love to be able to implement PicaGL in some projects, so i started reading up on how to utilize GL in general and on specific platforms. Reading up on the GL specification, and studied the implementation of PicaGL in Xash3d and ioQuake. I've learned a few things.

To the point:

If i want to use GL, i have to:

From what i've learned, creating a context isn't part of < v3.1 versions of GL. Creating a context is handled by either an external API or a API included in a platform specific implementation of GL.

Both your ports have their own gl renderer which handle the context creation. After PicaGL init, 3DS specific values are manually added to a gl_config struct from which the engine is able to create a context.

Please correct me if i'm wrong.

Let's just say, i want to get ResidualVM on 3DS (i really do). ResidualVM's GL implementation relies on SDL, which in term relies on platform specific GL-API's to be able to create a context.

Unfortunately, most GL examples or engine's also rely on having an external API providing the context.

I've been trying to find out what values a valid context has to include, but i haven't found a clear specification on this part.

The actual issue / feature request:

Since PicaGL follows the GL specification quite well, this should make utilizing PicaGL even more approachable for amateurs like me.

Anyhow, thank you for your work on a couple of great 3DS ports and PicaGL itself.

masterfeizz commented 4 years ago

Thank you for bringing this up, I really need to improve on the context creation.

For now all you need to do is setup the lcd framebuffer and call pglInit, after that you should be able to use the standard openGL functions.

I will see if I can get SDL/SDL2 working with picaGL, that will help getting some new ports running.

I've attached a basic sample in an effort to compensate for the lack of documentation and examples.

sample.zip

hax0kartik commented 4 years ago

hey @masterfeizz, thank you for this really cool project. Any updates on porting sdl2? Only the "OES" functions seem to be missing https://github.com/spurious/SDL-mirror/blob/master/src/render/opengles/SDL_glesfuncs.h

MixedVictor commented 3 years ago

I will see if I can get SDL/SDL2 working with picaGL, that will help getting some new ports running.

could you try to port doom 3 to new 3ds? i really like that game so i think that would be possible only on new 3ds