I guess I still do not understand the difference between hardware and software images. The wiki pages have not helped clarify it for me at all.
I also don't understand why QB64 wouldn't support copying a hardware image -- internally it should be just as simple as copying a software image, no?
Why would being immutable affect copying the image, when copying does not alter the original?
What does "refreshing it on screen" mean?
"it'll show for a fraction of second and go away"
Does this mean it will only display for the current screen refresh?
"If you really need more than one identical copy of an image in hardware mode, use _COPYIMAGE on the original software version - twice."
I am loading the images from disk as hardware images, there are no original software images to my knowledge.
My objective is to leave the original image alone, while applying alpha blending for screen display.
This is the code that I was going to be trying, but because of not being able to copy the hardware image I haven't been able to test if it actually works yet:
Translucent_Copy
= _COPYIMAGE(Objects
(Object_ID
).Handle
) Offset_Current = Image_Memory.OFFSET
Offset_End = Offset_Start + (Objects(Object_ID).Width_Orig * Objects(Object_ID).Height_Orig * 4)
IF Offset_Start
= Offset_End
THEN
Offset_Current = Offset_Current + 4
_PUTIMAGE (Objects
(Object_ID
).X
+ Offset_X#
(Objects
(Object_ID
).
Width, Objects
(Object_ID
).Orient_X
), Objects
(Object_ID
).Y
+ Offset_Y#
(Objects
(Object_ID
).Height
, Objects
(Object_ID
).Orient_Y
))-(Objects
(Object_ID
).X
+ Objects
(Object_ID
).
Width - 1 + Offset_X#
(Objects
(Object_ID
).
Width, Objects
(Object_ID
).Orient_X
), Objects
(Object_ID
).Y
+ Objects
(Object_ID
).Height
- 1 + Offset_Y#
(Objects
(Object_ID
).Height
, Objects
(Object_ID
).Orient_Y
)), Translucent_Copy
, , , _SMOOTH
Should I be creating a new software image, then reading the hardware image pixel data from memory and writing the alpha blended version onto the software image, or how should I go about this?
Are there any OpenGL functions I can call directly for displaying a hardware image with proper alpha blending (respecting the original image's preexisting alpha values), i.e. display the original hardware image at 0.50 or 0.84 opacity?
Edit:
The wiki references Galleon's OpenGL demo from three pages with the link
/gl_package.zip]http://www.[abandoned, outdated and now likely malicious qb64 dot net website - don’t go there]/gl_package.zip, but this link doesn't work. Any working link for the demo? I was curious to see what OpenGL functionality there is.
Where can I read up on what library functions are internally available to QB64 cross-platform, for use with DECLARE?