Jump to page: 1 2
Thread overview
Indexed graphics for retro engine?
Sep 19, 2019
Shadowblitz16
Sep 19, 2019
Shadowblitz16
Sep 19, 2019
Shadowblitz16
Sep 19, 2019
Mike Parker
Sep 19, 2019
Shadowblitz16
Sep 19, 2019
Mike Parker
Sep 19, 2019
Shadowblitz16
Sep 19, 2019
rikki cattermole
Sep 19, 2019
norm
Sep 20, 2019
Shadowblitz16
Sep 20, 2019
Gregor Mückl
Sep 20, 2019
Adam D. Ruppe
Sep 20, 2019
Shadowblitz16
September 19, 2019
Is there a way to make a indexed graphics library that can handle importing and exporting true color images?

I would guess something like this could be simulated with pointers and references right?
September 19, 2019
oh I would also like to be able to draw indexed images shapes as well.
September 19, 2019
*indexed color images and shapes
September 19, 2019
On Thursday, 19 September 2019 at 03:47:05 UTC, Shadowblitz16 wrote:
> Is there a way to make a indexed graphics library that can handle importing and exporting true color images?

I don't see why not.

>
> I would guess something like this could be simulated with pointers and references right?

If you want to, say, take a 24-bit or 32-bit and treat it as an 8-bit image, you'll probably want to actually do a conversion rather than a simulation. In which case you'd probably be better off just using an existing C library like FreeImage. You can find a binding here:

https://github.com/BindBC/bindbc-freeimage

Otherwise, you'll want to hit up a graphics programming forum for resources on image conversion. Two possibilities:

https://www.reddit.com/r/GraphicsProgramming/

https://www.gamedev.net/forums/forum/5-graphics-and-gpu-programming/


September 19, 2019
On Thursday, 19 September 2019 at 05:22:37 UTC, Mike Parker wrote:
> On Thursday, 19 September 2019 at 03:47:05 UTC, Shadowblitz16 wrote:
>> Is there a way to make a indexed graphics library that can handle importing and exporting true color images?
>
> I don't see why not.
>
>>
>> I would guess something like this could be simulated with pointers and references right?
>
> If you want to, say, take a 24-bit or 32-bit and treat it as an 8-bit image, you'll probably want to actually do a conversion rather than a simulation. In which case you'd probably be better off just using an existing C library like FreeImage. You can find a binding here:
>
> https://github.com/BindBC/bindbc-freeimage
>
> Otherwise, you'll want to hit up a graphics programming forum for resources on image conversion. Two possibilities:
>
> https://www.reddit.com/r/GraphicsProgramming/
>
> https://www.gamedev.net/forums/forum/5-graphics-and-gpu-programming/

I wanted to do 4bpp 16 color graphics.
and I didn't want to load anything unnecessary in the image like the palette but instead supply it myself as a Color[16];
September 19, 2019
On Thursday, 19 September 2019 at 18:25:05 UTC, Shadowblitz16 wrote:

> I wanted to do 4bpp 16 color graphics.
> and I didn't want to load anything unnecessary in the image like the palette but instead supply it myself as a Color[16];

I see. In that case, I suggest you find some tutorials on software rendering in C or C++ and adapt them to D. Most of the modern stuff out there is going to be targeting 24-bit or 32-bit graphics. You might find some older tutorials on indexed 8-bit rendering that you can adapt to 4-bit. Nothing to it but storing the palette indices in a byte array.
September 19, 2019
On Thursday, 19 September 2019 at 19:16:03 UTC, Mike Parker wrote:
> On Thursday, 19 September 2019 at 18:25:05 UTC, Shadowblitz16 wrote:
>
>> I wanted to do 4bpp 16 color graphics.
>> and I didn't want to load anything unnecessary in the image like the palette but instead supply it myself as a Color[16];
>
> I see. In that case, I suggest you find some tutorials on software rendering in C or C++ and adapt them to D. Most of the modern stuff out there is going to be targeting 24-bit or 32-bit graphics. You might find some older tutorials on indexed 8-bit rendering that you can adapt to 4-bit. Nothing to it but storing the palette indices in a byte array.

can I do this in D and draw them to a 32bpp bitmap pixel by pixel?
I would prefer do do this on the gpu but I don't know how.
September 20, 2019
On 20/09/2019 8:47 AM, Shadowblitz16 wrote:
> On Thursday, 19 September 2019 at 19:16:03 UTC, Mike Parker wrote:
>> On Thursday, 19 September 2019 at 18:25:05 UTC, Shadowblitz16 wrote:
>>
>>> I wanted to do 4bpp 16 color graphics.
>>> and I didn't want to load anything unnecessary in the image like the palette but instead supply it myself as a Color[16];
>>
>> I see. In that case, I suggest you find some tutorials on software rendering in C or C++ and adapt them to D. Most of the modern stuff out there is going to be targeting 24-bit or 32-bit graphics. You might find some older tutorials on indexed 8-bit rendering that you can adapt to 4-bit. Nothing to it but storing the palette indices in a byte array.
> 
> can I do this in D and draw them to a 32bpp bitmap pixel by pixel?
> I would prefer do do this on the gpu but I don't know how.

I've done a quick lookup in my red book (seventh edition so 3.1).

For OpenGL the choice between RGBA mode vs indexed happens by the system windowing library (context creation) not OpenGL itself. This means without writing a windowing library yourself, you won't get indexed mode and even then you would be stuck with it for whatever window you draw to.

Also for x86 cpu's anything less than 32bpp is going to be inefficient. You may as well map your indexed image straight into RGBA8 on load.

As for book recommendations here is one for DOS: https://www.amazon.com/Black-Art-Game-Programming-High-Speed/dp/1571690042

You will only want the first five chapters or so, but it should cover the material you need and have some more for when you are interested in 3d.
September 19, 2019
On Thursday, 19 September 2019 at 20:47:45 UTC, Shadowblitz16 wrote:
> On Thursday, 19 September 2019 at 19:16:03 UTC, Mike Parker wrote:
>> On Thursday, 19 September 2019 at 18:25:05 UTC, Shadowblitz16 wrote:
>>
>>> I wanted to do 4bpp 16 color graphics.
>>> and I didn't want to load anything unnecessary in the image like the palette but instead supply it myself as a Color[16];
>>
>> I see. In that case, I suggest you find some tutorials on software rendering in C or C++ and adapt them to D. Most of the modern stuff out there is going to be targeting 24-bit or 32-bit graphics. You might find some older tutorials on indexed 8-bit rendering that you can adapt to 4-bit. Nothing to it but storing the palette indices in a byte array.
>
> can I do this in D and draw them to a 32bpp bitmap pixel by pixel?
> I would prefer do do this on the gpu but I don't know how.

I'd create a fragment shader to convert each pixel to 8 bit. There are many examples on the web about creating fragment shaders and 2d opengl scenes, i.e. a 2d scene where OpenGL coordinates are integer pixel coordinates. Once you get that you then just implement the conversion routine.

Using the shader you can render the image as a textured quad and send the colour look up table down as an additional 1d texture. This way you can have several D arrays for each colour table and simply swap the texture buffer pointer to instantly switch colours.

You can also get cool effects this way when you move to 3d using 8 bit colour tables.

September 20, 2019
On Thursday, 19 September 2019 at 23:32:13 UTC, norm wrote:
> On Thursday, 19 September 2019 at 20:47:45 UTC, Shadowblitz16 wrote:
>> [...]
>
> I'd create a fragment shader to convert each pixel to 8 bit. There are many examples on the web about creating fragment shaders and 2d opengl scenes, i.e. a 2d scene where OpenGL coordinates are integer pixel coordinates. Once you get that you then just implement the conversion routine.
>
> Using the shader you can render the image as a textured quad and send the colour look up table down as an additional 1d texture. This way you can have several D arrays for each colour table and simply swap the texture buffer pointer to instantly switch colours.
>
> You can also get cool effects this way when you move to 3d using 8 bit colour tables.

the issue with using openGL is its complex and hard to get working with a widget library
« First   ‹ Prev
1 2