Recent Posts

Pages: 1 [2] 3 4 ... 10
11
Eye Candies / BassBox64 version 3.00
« Last post by Patrice Terrier on December 29, 2025, 01:16:18 pm »
BassBox64 3.00 – New Version Highlights

  • Full VS2022 C/C++ source code project
  • Advanced Desktop Window Manager (DWM) integration
  • New skin theme based on DWM blur glass
  • Plugin-level blur mode with adjustable blur strength
  • Fully DPI-aware rendering (high-DPI and mixed-DPI setups)
  • Correct alpha composition and stable transparency
  • Native Windows 10 / 11 composited window support
  • Remanent histogram processing for persistent audio visuals
  • Smoother audio-to-visual response and temporal coherence
  • One-pass GLSL support from version 1.20 up to 3.30
  • Unified legacy / modern GLSL pipeline (no multipass overhead)
  • Enhanced texture support (formats, precision, alpha handling)
  • Improved OpenGL performance and rendering stability
  • Better multi-monitor and high refresh-rate handling
  • Tiny standalone executable built with TCLib
  • No Microsoft CRT dependency (reduced size and overhead)



Note: This version use exclusively 64-bit plugins, with brand new GLSL support (converted from Shadertoy).

Strongest Points of the New BassBox64 Version

Full Visual Studio 2022 Source Code Provided
The complete, build-ready VS2022 project is included, offering full transparency, long-term maintainability, and the ability to study, modify, or extend every subsystem of BassBox64.

Deep DWM Integration with Blur Glass UI
Native use of Windows DWM composition enables true blur-glass visuals, seamless desktop blending, and a modern, premium look that plugins can fully exploit.

Plugin-Level Blur with Fine Control
Blur is no longer a static UI effect: each plugin can control blur intensity dynamically, allowing glass, crystal, or frosted effects that enhance depth without hiding audio-reactive elements.

One-Pass GLSL Pipeline (1.20 → 3.30)
A unified single-pass GLSL architecture supports both legacy and modern shaders without multipass overhead, keeping performance high and code paths clean.

Remanent Histogram Audio Processing
Visualizations retain audio energy over time, producing smoother, more musical, and more expressive visuals than classic peak-based FFT displays.

True DPI Awareness and Modern Display Handling
Correct scaling and alignment across high-DPI, mixed-DPI, multi-monitor, and high-refresh-rate setups—no blurry scaling, no clipped viewports.

Enhanced Texture and Alpha Handling
Improved texture precision, format support, and alpha correctness ensure stable transparency and consistent visuals in both OpenGL and composited modes.

Tiny Standalone Executable (No CRT)
Built with TCLib and no Microsoft CRT dependency, the executable remains extremely small, fast to load, and free from runtime bloat.

Tight Audio-to-Visual Synchronization
Refined timing and smoothing logic deliver visuals that feel directly connected to the music, not just reactive but musically coherent.

Native 64-bit, Low-Latency Architecture
Pure C/C++ design focused on performance, predictability, and long-term maintainability—no frameworks, no unnecessary layers.

Context-sensitive blur control
when “Plugin fully visible” is disabled, the blur level can be adjusted interactively using the mouse wheel.

12
Pour la simulation de dés ChatGPT conseille le moteur de physique 3D "Bullet"

C'est un moteur de physique 3D prêt à l’emploi.
Son rôle n’est pas d’afficher, mais de calculer “comme dans la réalité” :

- gravité (les dés tombent),
- collisions (dé/sol, dé/dé),
- rebonds (restitution),
- frottements,
- rotations réalistes,
- arrêt quand tout est stable (“sleep”).

OpenGL et GDImage fait l’image ; Bullet fait les mouvements.
13
Bonjour Monsieur Lauzon

J'ai installé VS 2026 community, je n'ai pas trouvé de différence fondamentale pour ce qui concerne C++.

Il y a 2–3 points “pièges” avec GLUT sous Visual Studio 2022/2026, surtout en x64. Le plus important est de choisir une implémentation compatible (FreeGLUT recommandé) et de bien aligner architecture (x86/x64), lib et DLL.

1) Recommandation : utiliser FreeGLUT (plutôt que l’ancien “GLUT”)
Le GLUT historique (Mark Kilgard) est ancien et on trouve souvent des binaires incomplets ou seulement x86. FreeGLUT est l’alternative maintenue et plus simple à intégrer.

2) Le point critique : x64 vs x86

Si le projet est en x64, il faut freeglut.lib + freeglut.dll en x64.

En Win32, il faut les versions x86.
Ne mélangez jamais : une lib x86 avec un EXE x64 (erreur de link assurée).

3) Où mettre les fichiers
Typiquement :

Headers : GL\freeglut.h (et parfois GL\glut.h selon le package)

Lib : freeglut.lib (et éventuellement freeglut_static.lib si tu veux statique)

DLL : freeglut.dll (si lien dynamique)


Organisation conseillée (simple et propre) :

D:\Dev\libs\freeglut\include\GL\...
D:\Dev\libs\freeglut\lib\x64\freeglut.lib
D:\Dev\libs\freeglut\bin\x64\freeglut.dll


4) Réglages VS2022 (par projet)
Dans Project Properties (Configuration = Debug/Release, Platform = x64/Win32) :
C/C++ → General → Additional Include Directories

Ajouter :
D:\Dev\libs\freeglut\include

Linker → General → Additional Library Directories
Ajouter :
D:\Dev\libs\freeglut\lib\x64 (ou ...\lib\x86)


Linker → Input → Additional Dependencies
Ajouter au minimum :
freeglut.lib
opengl32.lib
glu32.lib (si vous utilisez GLU)
gdi32.lib (souvent nécessaire avec GLUT/FreeGLUT)
winmm.lib (parfois requis par FreeGLUT selon build)


5) DLL : où la mettre pour que ça lance
Si liés avec freeglut.lib (dynamique), il faut freeglut.dll :
soit dans le même dossier que l'.exe (le plus simple),
soit dans un dossier du PATH.


Piège classique : ça compile/link, puis au lancement Windows dit qu’il manque la DLL.
6) Un mini test de compilation
Inclure :
#include <windows.h>
#include <GL/freeglut.h>

Puis un main/WinMain simple qui fait glutInit, glutCreateWindow, glutMainLoop.
7) Cas particulier : conflit avec le pipeline OpenGL/Win32 existant

GLUT crée sa propre fenêtre et gère sa loop (glutMainLoop), ce qui peut être incompatible avec une architecture OpenGL standard.


En ce qui me concerne je n'utilise jamais GLUT, je préfère attaquer OpenGL directement, ainsi que les extensions WGL.

Le plus simple, est de partir d'un projet existant avec une boucle de message et une procédure de traitement standard, avec ou sans GDImage.

14
Bonjour M. Terrier,
J'ai changer d'ordinateur et j'ai installé visual studio 2026.
l'environnment semble très différent de VS2022.
Avez-vous des conseils pour la configuration de OpenGL et Glut car je ne retrouve pas les répertoires de base tel que décrit dans votre post "« Reply #8 on: December 24, 2024, 10:09:23 am »"
Merci à l'avance

Michel
15
Eye Candies / Re: BassBox Plugin 64-bit
« Last post by Patrice Terrier on November 24, 2025, 08:46:43 am »
New plugins are coming based on GLSL.
16
64-bit SDK programming / DWM Blur for Mica/Acrylic
« Last post by Patrice Terrier on October 30, 2025, 09:26:25 pm »
A compact demo of real DWM blur with an image overlay, gradient tint, and DPI-aware text rendering.
All packed in a stand-alone 24 KB /MT binary linked with TClib.lib.

Main Highlights
  • True DWM blur toggle (Right-Click) with instant switch — no transition flash.
  • Optional image overlay (Middle-Click), scaled and clipped to cover the client while preserving aspect.
  • Mouse-wheel–driven alpha control with speed-sensitive step (base 8 → up to 64).
  • DPI-aware (Per-Monitor-V2) rendering, sharp at any scaling.
  • Seamless maximize/restore via off-viewport reposition — no white flash or DWM fade.
  • Off-screen GDI+ compositing (double-buffered).
  • Two-color linear gradient overlay via GradientPaintDC, variable opacity / angle.
  • Private font collection with dynamic memory allocation (use-and-forget).
  • Text orientation: horizontal, bottom-up, or top-down, perfectly centered and clipped.
  • Black-theme caption bar with adaptive text color.
  • Custom small rounded corners replacing Windows 11’s exaggerated defaults.
  • Compatible with Windows 10 & 11 (Mica / Acrylic supported).

Controls
Mouse Right-Click Toggle DWM blur
Mouse Middle-Click Toggle overlay image
Mouse Wheel Adjust overlay alpha (speed-based)


Technical Notes
  • Pure Win32 / GDI+ C++ (Visual Studio 2022).
  • Static link /MT with TClib.lib → stand-alone 24 KB executable.
  • Direct-linked DPI APIs (SetThreadDpiAwarenessContext, GetDpiForWindow, etc.).
  • No external runtime or dependencies.
  • GDI+ text pipeline: DrawStringFormatedEx + BlurTextPlus.
  • Gradient painting handled by GradientPaintDC (two-color ARGB, any angle).
  • Caption bar color auto-adapts to Windows theme.
  • Custom region defines small uniform corner radius for balanced frame geometry.
  • Works seamlessly with DWM blur, Mica, or Acrylic on Windows 11.





Developer Notes

Project goal
To recreate the original Vista-style blur aesthetic with a modern, DPI-aware GDI+ implementation, packaged in a self-contained 24 KB binary (no runtime dependencies).
The design emphasizes simplicity, instant response, and pixel-perfect rendering at any scale.


Rendering architecture
  • All drawing is performed on an off-screen buffer created via GDI+ (Graphics object) to guarantee flicker-free updates.
  • Final presentation uses BitBlt to the window DC in WM_PAINT.
  • WM_ERASEBKGND always returns 1 to avoid background flashes.
  • Composition order:
    • DWM blur background (if enabled)
    • Background image (aspect-preserving cover fit, clipped to client)
    • Gradient overlay via GradientPaintDC (two-color linear fill with alpha)
    • Text and caption rendering (horizontal or rotated)


Image handling
  • Loaded once at WM_CREATE using GDI+ (GdipCreateBitmapFromFile).
  • Auto-fit logic computes the largest uniform scale to cover the client area while preserving aspect ratio.
  • Clipping handled with IntersectClipRect.
  • The image alpha channel is applied dynamically with GdipApplyImageAlpha(img, imgAlpha).


Alpha control
  • WM_MOUSEWHEEL adjusts imgAlpha with a base step of 8, automatically scaled for faster wheel spins (up to 64).
  • Alpha change triggers a re-composite via InvalidateRect (no erase).


Gradient overlay
  • Implemented by GradientPaintDC.
  • Simple two-color linear gradient (ARGB start → end), angle-based, with full opacity control.
  • Blended using SourceOver compositing on top of the image background.


Text engine
  • Uses custom DrawStringFormatedEx and BlurTextPlus for precise GDI+ text layout.
  • Supports three orientations: horizontal, bottom-up, and top-down.
  • Centered rotation around the text bounding box, with automatic clipping and no duplication artifacts.
  • Anti-aliased text rendering via TextRenderingHintAntiAlias.
  • Optional soft shadow or blur behind text.


Font management
  • Uses GDI+ Private Font Collection API (GdipPrivateAddFontFile / GdipPrivateAddMemoryFont).
  • Fonts are loaded dynamically, kept in memory only while needed ("use-and-forget").
  • Supports multiple concurrent fonts without leaks or persistent registry installs.


DPI awareness
  • Fully Per-Monitor-V2 compliant; no manifest required.
  • Enabled through direct calls to SetProcessDpiAwarenessContext and SetThreadDpiAwarenessContext.
  • Scale factor (dpi_scale) computed from GetDpiForSystem or GetDpiForWindow as fallback.


Window behavior
  • Maximize handling: the window is temporarily moved off-viewport (y = -5000) during SC_MAXIMIZE to suppress DWM transition flashes, then restored normally on SIZE_RESTORED.
  • Rounded corners: replaced the default Windows 11 exaggeration with a small, uniform radius using a custom region.
  • Caption bar: custom draw with adaptive color — black for dark theme, light for bright.
  • Theme changes: WM_SETTINGCHANGE updates caption and text colors automatically.


Performance & build
  • Compiled with Visual Studio 2022 /MT.
  • Linked with TClib.lib for minimal runtime footprint.
  • Final binary: approximately 24 KB stand-alone executable.
  • No heap allocations during painting (only during initialization).
  • Compatible with Windows 10 and 11, both light and dark modes.


  • The full VS2022 C/C++ 64-bit project is attached to this post.
17
FFcapture / FFcapture C++ version 3.00
« Last post by Patrice Terrier on October 25, 2025, 11:30:20 am »
FFcapture v3.00 — Release Candidate

Headline

New in 3.00: record a specific window or the full desktop with DPI-accurate coordinates.


How it works

During recording, the FFcapture window is minimized (iconized), so it never appears in the video.

Restoring FFcapture from the taskbar stops recording (clean Ctrl+Break handling preserved).


Other notes

Real-time capture stays on MP4 (x264) for zero dropped frames; .webm is available as a post-conversion step.

DPI helpers ensure correct sizing on high-DPI/multi-monitor setups.

Smaller binary size (French localization removed).


The full VS2022 C/C++ 64-bit project is attached to this post.
18
64-bit SDK programming / zTrace version 3.02 (DPI aware)
« Last post by Patrice Terrier on September 27, 2025, 07:36:27 pm »
Since I have a new laptop with a 2560x1600 resolution, I am slowly converting my utilities to become DPI aware.

The latest zTrace.dll version 3.02 is attached to this post, with full C/C++ VS 2022 source code.
The resulting DLL binary size is only 12 Kb.
19
Get ObjReader & Documentation / About OR Version 4.02
« Last post by Patrice Terrier on September 24, 2025, 03:39:47 pm »
ObjReader v4.02 released

New material directives, improved navigation, and multiple refinements to both the UI and the .orb workflow.
Make sure to use "File" -> "Load model..." and select the demo project to see the new features in context.

New in version 4.02:
  • Auto sync detection adjustment for audio-driven animations.
  • New directives: #inflate and #autorotate.
  • Zoom inertia to complement LMB orbit & RMB pan inertia.
  • Better keyboard handling for plus/minus keys when adjusting rotation speed.
  • .ORB improvements: higher compression + auto-refresh on .mtl changes.
  • UI/UX: new Save screenshot icon, polished toast animation, cleaner wireframe overlay, fixed list view scrollbar at first display.
  • Both orbtool and ORDLL64.dll updated in sync with OR v4.02.

See on top of this thread for new attachments.
20
Get ObjReader & Documentation / ORV_64 Version 3.20 - the .ORB challenge
« Last post by Patrice Terrier on August 26, 2025, 12:23:06 pm »
About ORV_64 v3.20
(sample app for embedding ObjReader via ORDLL64.dll.)



What it is
ORV_64 is a complete C/C++ (VS2022, x64) example that hosts the ObjReader engine through ORDLL64.dll.
The DLL exposes a focused C API, just enough to create a viewer window, load a model, animate it, and query stats.
So you can render ObjReader content inside your own application UI.

What ORDLL64.dll is
  • The embeddable runtime of ObjReader (Win64).
  • Owns the renderer, model loading (.orb, .obj/.mtl), animation timer, and optional audio sync.
  • You supply the top-level window and message loop; the DLL creates and manages its child viewport.

Why v3.10 matters,  native .ORB compatibility
  • Cuts startup time (no text parsing/reindexing).
  • Reduces disk size for large meshes.
  • Simplifies packaging: ship model.orb + textures in the same folder.
Your code can prefer .orb and automatically fall back to .obj when needed.

Typical integration flow
  • Create your main window (CreateWindowExW).
  • Call OR_CreateWindow(...) to create the viewer child HWND.
  • (Optional) OR_SetSwapInterval(TRUE) for V-sync, OR_TimerEnable(TRUE) to animate.
  • Load a file via:
Code: [Select]
OR_ProcessCommandLine(L"path\\to\\model.orb");
  • On WM_SIZE, resize the child window.
  • Populate your UI with getters (OR_Vertices(), OR_Triangles(), …).
  • Offer controls: OR_ViewReset(), OR_Get/SetAudioVolume(), OR_Screen_Shot().
  • On exit, call OR_CloseAll().
API at a glance (what you’ll actually use)
  • Create/host: OR_CreateWindow, OR_CloseAll
  • Open model: OR_ProcessCommandLine (accepts .orb and .obj)
  • Animation & timing: OR_TimerEnable, OR_GetAniTick
  • Display options: OR_SetSwapInterval, OR_ViewReset, OR_Screen_Shot
  • Info for UI:
    • OR_Version, OR_ObjFileName
    • OR_Vertices, OR_Triangles, OR_Indices
    • OR_Meshes, OR_Materials, OR_ObjSize, OR_LoadTime
    • OR_DetectGPU, OR_GPUinfo, OR_GPU, OR_CPU
  • Audio: OR_GetAudioVolume, OR_SetAudioVolume
Attachment
  • ORV_64 Version 3.20, is attached to this post.
Pages: 1 [2] 3 4 ... 10