PCM is an internal class with the C API (projectm_pcm_*) providing
the public interface. Exporting these methods caused symbols to leak
into the shared library even when ENABLE_CXX_INTERFACE was off.
Fixes#937
for some unknown reason I used "-l:<lib>" in the .pc files while it should just be "-l<lib>". This would prevent libprojectM (and the playlist lib) from being linked in projects using pkgconfig.
Previously, if the TextureManager was recreated, e.g. when changing the texture paths, all loaded textures were deleted, even if currently in use by a preset. Storing textures and samplers as shared pointers instead of weak pointers will make sure the objects are kept alive until the preset is unloaded.
Signed-off-by: Kai Blaschke <kai.blaschke@kb-dev.net>
Since this might be vendor-specific behavior, a new API function to configure the X/Y texel offsets has been added.
Signed-off-by: Kai Blaschke <kai.blaschke@kb-dev.net>
All waves were rendered upside-down, breaking presets requiring the wave to be at the top or bottom due to warp movement. Using the flipped transformation matrix for drawing will take care of this globally.
Also fixed two small mistakes regarding operators.
Signed-off-by: Kai Blaschke <kai.blaschke@kb-dev.net>
Only custom waves set the point size to 2, default waveforms still render the 2x2 pattern when using dots. Other draw calls aren't affected as they only draw lines/triangles, but it's good practice to not leave the uniform in an undefined state.
Signed-off-by: Kai Blaschke <kai.blaschke@kb-dev.net>
The new combined function no longer returns the image size, so we need to load the image ourselves, store the size and then pass the buffer to SOIL_create_OGL_texture().
Since earlier projectM versions had values in these args which were way higher than they should've been, they were divided by 100. Since the audio processing refactor, this is no longer required, but these divisions were overlooked and thus shaders got only 1% of the actual magnitude expected.
Signed-off-by: Kai Blaschke <kai.blaschke@kb-dev.net>
Now using the generated grid vertices and indices directly, drawing the warp mesh in a single draw call. This will increase the number of drawn vertices, but all GPUs made in the past decade can easily deal with 100K triangles or more.