opengl渲染器无法使用英特尔高清显卡2500

时间:2013-10-14 21:14:42

标签: ilnumerics

我试图将OpenGL驱动程序与ILNumerics可视化一起使用是不成功的。我正在尝试按照快速入门指南进行基本可视化 - 每次启动应用程序时,我都会收到错误消息“找不到或未激活兼容的硬件加速驱动程序”,并显示错误报告“尝试读取或写入受保护的内存。”通常表明其他记忆是腐败的“。图形驱动程序回退到GDI,这非常慢。

我已针对此问题尝试了所有建议的修复程序。我安装了最新的Intel HD图形驱动程序,并运行了OpenGL Extensions查看器,表明支持OpenGL 4.0。 ILNumerics文档表明需要3.1+,我的系统似乎支持。

所以我在这里不知所措。有没有办法在这块英特尔卡上使用硬件渲染?

2 个答案:

答案 0 :(得分:2)

我一直在尝试使用ILNumerics OpenGL驱动程序,但使用的是Intel HD4000。我得到相同的错误,调试日志显示ILNumerics在glDrawElements调用时崩溃。

我在初始化ilPlotCube时找到了解决方法,以便OpenGL驱动程序不会崩溃。我正在使用NuGet的Window Forms ilPanel控件和ilNumerics 3.2.2.0。

  • 在ilPanel_load事件中,创建一个ilPlotCube并将x轴刻度设置为对数。将plotcube添加到场景中。
  • 将ilPoint元素添加到plotcube。我用随机数据填写它。
  • 对我来说,这运行并且使用OpenGL驱动程序加载绘图控件而不会崩溃。

    void ilPanel1_Load(object sender, EventArgs e)
    {                     
        var pc = new ILPlotCube(twoDMode: false);
        // Set an axis scale to logarithmic so the GL driver will not crash
        pc.ScaleModes.XAxisScale = AxisScale.Logarithmic;
    
        // Create a new scene
        var scene = new ILScene();  
        scene.Add(pc);            
        this.ilPanel1.Scene = scene;
    
        // Add points to the scene so the GL driver will not crash
        this.AddPoints();
    }
    
    /// <summary>
    /// Add an ILPoints object so GL driver will not crash
    /// </summary>
    private void AddPoints()
    {
        var pc = ilPanel1.Scene.First<ILPlotCube>();
    
        ILArray<float> A = ILMath.tosingle(ILMath.rand(3, 1000));
        var points = new ILPoints
        {
            Positions = A,
            Colors = A,
            Size = 2,
        };
    
        pc.Add(points);
        this.points = points;
    }
    

如果控件使用OpenGL驱动程序成功加载,则从场景中删除points元素。根据需要设置轴刻度。添加另一个图表元素,用于绘制您想要绘制的实际内容。

        // Remove the ILPoints shape
        if (this.points != null && ilPanel1.Scene.Contains(points))
        {
            ilPanel1.Scene.Remove(this.points);
            this.points = null;
        }

        // Set the axis scale back to linear
        var pcsm = ilPanel1.Scene.First<ILPlotCube>().ScaleModes;
        pcsm.XAxisScale = AxisScale.Linear;

        // Add actual plots here

答案 1 :(得分:1)

英特尔高清显卡经常会导致OpenGL出现问题。你应该在英特尔bugtracker上提交一个bug报告,并使用支持OpenGL 3.1的显卡 - 真的。