how can figure renderer be changed in Matlab 2025a?

403 visualizaciones (últimos 30 días)
Oleg S
Oleg S el 19 de Jun. de 2025
Editada: James Richard hace alrededor de 11 horas
Hi all,
I have recently updaged to 2025a from 2024b and immediately noticed a rather degraded figure quality. They look like some very pixelated plots from the 90s. Even the buttons on the axes within the figure are pixely and clipped. Matlab's main window looks fine.
rendererinfo tells me that the GPU (RendererDevice) used for figures is the internal Intel UHD Graphics, despite Windows expliciely set to use the dedicated NVIDIA GPU for Matlab 2025a.
gpuDevice is set to NVIDIA, I know this is for computing on gpu, not rendering figures, but it does tell me that Matlab can see the NVIDIA GPU.
I could not find any information on how to change the RendererDevice through commands or settings - is this a bug or a known issue?
Has anyone encountered this? Are there any solutions or workarounds?
Here's a screenshot from 2025a:
2025a version
and here's the same figure in 2024b:
Note the much smoother lines in 2024b and axes controls not clipped and not pixelated. Both figures were set to same size (Position) and screenshot on the same screen.
  3 comentarios
Oleg S
Oleg S el 24 de Jun. de 2025
Hi Benjamin,
Thanks for quick answer!
Here's the output from rendererinfo:
GraphicsRenderer: 'WebGL'
Vendor: 'Google Inc. (Intel)'
Version: 'WebGL 2.0 (OpenGL ES 3.0 Chromium)'
RendererDevice: 'ANGLE (Intel, Intel(R) UHD Graphics (0x00004688) Direct3D11 vs_5_0 ps_5_0, D3D11)'
Details: [1×1 struct]
I have a workstation with one monitor connected with resolution 3440x1440. The laptop screen is 1920x1200. I do see the same issue regardless whether the external monitor is connected, or if I move the figure window between screens.
Scaling is 125% for native and 100% for external, both recommended by Windows. I have tried to set both to 125% and 100% (with Matlab restarts in-between) - no effect.
Setting linejoin to "chamfer" did something. Immediately after the figure rendered much smoother, including axes controls icons (!). However, I cannot replicate the effect. The figure looked fine on external monitor (with 100% scaling) but pixelated on the native screen (125% scaling). I then restarted Matlab and retraced, but now on my native screen it looks fine while on the external it's pixelated (no changes to either scaling).
The axes controls icons are pixelated as soon as the axes are created, even if the axes are empty.
I attach some test data.
The code I used for plotting is:
figure;
tlH = tiledlayout("horizontal", TileSpacing = "tight");
tlV(1) = tiledlayout(tlH, "vertical", TileSpacing = "none"); tlV(1).Layout.Tile = 1;
tlV(2) = tiledlayout(tlH, "vertical", TileSpacing = "none"); tlV(2).Layout.Tile = 2;
for snr = 1:2
for vv = 1:6
ax(vv, snr) = nexttile(tlV(snr));
hold(ax(vv, snr), "on");
grid(ax(vv, snr), "on");
plot(ax(vv, snr), data, '.-');
legend;
end
end
linkaxes(ax)
Tried with and without the marker.
Benjamin Kraus
Benjamin Kraus el 30 de Sept. de 2025 a las 20:06
I'm sorry I dropped the ball on this.
A colleague of mine has tried to reproduce this issue using the reproduction steps you mentioned, but they cannot reproduce the issue. They would like to learn more about this issue you are having.
If you are still having this issue and are interested in engaging directly with my colleague, please send me a message directly (via MATLAB Answers) with your email address (or perferred contact method), and I will give that information to my colleague.

Iniciar sesión para comentar.

Respuestas (4)

James Richard
James Richard el 3 de Oct. de 2025 a las 9:34
Editada: James Richard el 3 de Oct. de 2025 a las 10:02
MATLAB R2025a is build on top of CEF that uses ANGLE.
---
Although with ANGLE we could choose the backend (e.g., D3D11, OpenGL, or Vulkan) to run WebGL 2.0.
But just like any Chromium-based browser, there are no direct flags or switches to choose a specific GPU to use.
It is handled by external settings, such as those of the operating system, driver, or environment variables.
P.S. Perhaps it would be possible to use a DLL hook as a last resort, but that is beyond a layman.
  2 comentarios
Oleg S
Oleg S el 3 de Oct. de 2025 a las 13:35
James, thanks for the hint - I found the bugger.
So, I've had Matlab.exe set to run on the dedicated GPU in both Windows Settings -> Graphics settings, and NVIDIA Control Panel. This has worked for me since 2012 when I first started using NVIDIA Optimus gpu switcher.
However, for 2025 edition that setting did absolutely nothing for the figures. Why? Because apparently Matlab now graciously delegates figure graphics to a process called "matlabwindowhelper.exe", and that one is for reasons beyond my understanding is not linked into the whole "this is Matlab, actually" family, in fact it is not deemed worty to even be listed it in the graphics settings by Windows.
Forcing that to run on dedicated GPU in NVIDIA Control Panel changed the rendererinfo output:
GraphicsRenderer: 'WebGL'
Vendor: 'Google Inc. (NVIDIA)'
Version: 'WebGL 2.0 (OpenGL ES 3.0 Chromium)'
RendererDevice: 'ANGLE (NVIDIA, NVIDIA RTX A4500 Laptop GPU (0x000024BA) Direct3D11 vs_5_0 ps_5_0, D3D11)'
Details: [1×1 struct]
Hopefully 3D plots will be faster now.
HOWEVER, the plot controls are still clipped and pixelated, and the line-plots are not as smooth as they were in the 2024 edition. But perhaps it is a WebGL issue rather than Matlab issue?
James Richard
James Richard hace alrededor de 19 horas
Editada: James Richard hace alrededor de 11 horas
Okay, this one is interesting.
RTX A4500 is a modern 2021 card, there shouldn't be any bug.
Perhaps try R2025a Update 1 or R2025b that uses higher version of CEF?
---
Also, have you tried the other ANGLE backend?
For example to use OpenGL, you could set the startup options with the system (not user!) environment variable of
MW_CEF_STARTUP_OPTIONS
with the value of
--use-angle=OpenGL
and also try the Vulkan backend with
--use-angle=Vulkan

Iniciar sesión para comentar.


Ray
Ray hace alrededor de 19 horas
Hi Oleg,
This is a known issue with MATLAB R2025a/b, You can switch the GPU for graphics rendering through the following steps:
  1. Open Windows Settings System Display Graphics Settings
  2. Under "Custom options for apps", Click "Browse" and navigate to: C:\Program Files\MATLAB\R2025a\bin\win64\matlabwindowhelper.exe (Path may differ on Win32 systems)
  3. Click "Options" and select "High performance" with your Nvidia GPU
  4. Save the settings
We’re aware of this and are preparing an External Bug Report so users can follow updates. We’re also working on a mitigation to guide users in selecting the GPU they want MATLAB to use for graphics.

Suman
Suman el 20 de Jun. de 2025
Editada: Suman el 20 de Jun. de 2025
For plotting and MATLAB graphics, you cannot currently choose which GPU is used from within MATLAB. MATLAB makes a call to the system through OpenGL and uses the device that the system provides.
Please make sure you have NVIDIA Opengl drivershttps://www.nvidia.com/en-us/drivers/ installed on your system.
Then you can follow the steps mentioned here to switch the default graphics card: https://www.mathworks.com/matlabcentral/answers/322105-how-can-i-change-the-opengl-renderer
Hope that helps!
  1 comentario
Walter Roberson
Walter Roberson el 20 de Jun. de 2025
The question is specifically about R2025a. As of R2025a, OpenGL is no longer used and the opengl() command has no effect. From the release notes:
The following options for querying or setting the graphics renderer have no effect. MATLAB no longer uses OpenGL® technology to render graphics, and you no longer need to set the renderer in your graphics workflows.
Calling the opengl function has no effect. To query the graphics renderer, use the rendererinfo function instead.
The Renderer property of a figure has no effect.
The MATLAB startup options -softwareopengl, -nosoftwareopengl, -softwareopenglmesa, and -noopengl have no effect.
The opengl function, Renderer property, and startup options will be removed in a future release.

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 20 de Jun. de 2025
The figure renderer cannot be changed in R2025a. This is a fundamental change in R2025a, that OpenGL is no longer used and WebGL is used instead.
  2 comentarios
Benjamin Kraus
Benjamin Kraus el 20 de Jun. de 2025
@Walter Roberson: Despite the wording of the question title, I think @Oleg S was asking whether you can change what graphics card is used by MATLAB, not the value of the Renderer property on figures.
Oleg S
Oleg S el 24 de Jun. de 2025
To clarify, the figure renderer ("painters" etc) is not the issue. I did try to change them though, to no effect.
I suppose I was confused myself between the renderer device and the renderer, my bad.

Iniciar sesión para comentar.

Categorías

Más información sobre Graphics Performance en Help Center y File Exchange.

Productos


Versión

R2025a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by