summaryrefslogtreecommitdiffstats
path: root/vgui_surface030_vtable_identification.md
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-11-04 00:16:09 +0100
committersalmonik <salmonik@tuta.io>2026-11-04 00:16:09 +0100
commit4f384f94504a2027febc8b5cc3e2b3e3034c0b23 (patch)
tree68491e9e1accbfc822e46187312d1d57a7fb66ed /vgui_surface030_vtable_identification.md
parentSkybox image: upload via procedural texture, not CreateTextureFromBits (diff)
downloadhl2h-4f384f94504a2027febc8b5cc3e2b3e3034c0b23.tar.gz
hl2h-4f384f94504a2027febc8b5cc3e2b3e3034c0b23.zip
Skybox image: decode PNG ourselves to avoid symbol interposition
client.so, engine.so and vguimatsurface.so all export their own png_create_read_struct. Loading the system libpng16 made its internal calls bind to the game's older libpng, whose png_struct layout differs, so png_safe_warning read a NULL error_ptr and crashed. Replace libpng with a small PNG reader: zlib's uncompress (dlopen'ed) plus the five PNG row filters, supporting 8-bit non-interlaced RGB/RGBA/gray/palette images with tRNS alpha for palettes. Output verified byte-identical to libpng for the skybox.png in use.
Diffstat (limited to 'vgui_surface030_vtable_identification.md')
0 files changed, 0 insertions, 0 deletions