使用mcc R2015b进行编译时,3D旋转速度很慢

时间:2015-09-28 09:25:28

标签: matlab 3d mcc

我在使用部署了R2015b的mcc编译器编译我的应用程序时出现了一个奇怪的问题,3D视图的旋转(即在工具栏中使用rotate3D按钮)现在非常慢,而编译完全相同时并非如此代码与R2013b。在R2013b或R2015b环境中运行应用程序时,两种情况下的旋转都非常流畅/平滑。

我尝试了一个更简单的代码,相当于我在我的应用程序中使用的3D:

function [] = TestCompiledRotationR2015b()
%[
    % Create random data
    azimuths = linspace(0, 359, 360) * pi / 180;
    elevations = linspace(0, 180, 181) * pi / 180;
    [A, E] = ndgrid(azimuths, elevations);
    Data = sin(7*(E-pi/2))./(7*(E-pi/2));
    Data(isnan(Data)) = 1;
    Data = Data .* abs(cos(0.5*A));

    ff = figure(42);
    X = cos(A) .* sin(E);
    Y = sin(A) .* sin(E);
    Z = cos(E);
    surf(X, Y, Z, abs(Data));

    % Set axes properties
    shading flat;   
    set(gca, 'DataAspectRatio', [1 1 1]);
    set(gca, 'Visible', 'off');
    xlim([-1 1]);
    ylim([-1 1]);
    zlim([-1 1]);

    uiwait(ff);
%]

我也试过更复杂的一个(使用GUI布局面板和卡片,我在我的应用程序中使用了很多)....我记录了'渲染器'的详细信息以防万一(opengl完全硬件加速编译和非编译模式)...但我没有重现我编译的应用程序中的慢速旋转。

所以在这里,我只是想知道你们中是否有人正在尝试相同的问题(只有在使用R2015b和仅使用某些应用程序编译时,3D速度很慢)......我认为我做错了,但为什么会这样在R2013b工作,为什么在R2015b环境中仍然没问题(即没有编译...只编译R2015b导致问题)是一个完全的谜。

**编辑**

我尝试在为编译模式和未编译模式移动鼠标大约1分钟时激活探查器,除了在编译模式下大幅减少的刷新率(在编译模式下~160次调用与环境模式下的4100次调用)之间没有什么特别之处

Profiler

1 个答案:

答案 0 :(得分:1)

好的,经过多次测试后,问题似乎都与我运行设计用于系统托盘的C#应用​​程序的matlab代码有关:

以下所有测试都可以:

  • 使用mcc -m TestLaunchMyApplication.m
  • 直接创建可执行文件
  • 创建csharedlib并从c
  • 中的基本主代码中调用它
  • 创建csharedlib并从基本c#winform app
  • 调用它

仅从系统托盘c#app调用'csharedlib'会导致问题。我尝试设计更简单的系统托盘应用程序,它工作正常,所以这是没有人的错,但我的并且需要修复对matlab代码的调用(可能是错误的线程或错误地接收鼠标事件的父级)。

问题已结束。