如何解决“屏幕('DrawDots')中请求的不支持的磅值”错误?

时间:2019-02-05 18:00:00

标签: matlab psychtoolbox

我有一个程序,需要使用DrawDots函数:

[minSmoothPointSize, maxSmoothPointSize, minAliasedPointSize, maxAliasedPointSize] =
Screen('DrawDots', windowPtr, xy [,size] [,color] [,center] [,dot_type][, lenient]);

我的代码行如下所示:Screen('DrawDots', scr,[x,y],r*2,color,[],2)

但是,当我运行代码时,出现以下与此函数有关的错误:

PTB-ERROR: You requested a point size of 49.200000 units, which is not in the range (1.000000 to 20.000000) supported by your graphics hardware.
Error in function DrawDots:     Usage error
Unsupported point size requested in Screen('DrawDots').

我正在其中运行的计算机是全新的,但只有集成的图形卡(Intel UHD Graphics 630)。但是,该代码可以在其他质量较低的集成显卡的计算机上正常运行(Intel HD Graphics 620),因此我想知道是否还有其他问题。

我曾尝试将Matlab切换为从OpenGL而非图形卡本身运行,但这没有用,并且出现了相同的错误。而且,当操作系统设置为较低的屏幕分辨率时,我尝试运行该程序,但这也行不通。我在已测试代码的所有PC上运行Matlab 2016b。

任何有关如何解决此问题的建议将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:2)

可以尝试的两个建议:

1)使用Psychtoolbox Shader实现(在DrawDots调用的最终参数中使用“ 3”,而不是“ 2”):

Screen('DrawDots', scr,[x,y],r*2,color,[],3)

2)改用FillOval函数,尽管每个点需要4个参数(因为FillOval也可以绘制非圆形的椭圆),所以请注意指定坐标时的区别:

 Screen('FillOval', scr, color, CenterRectOnPointd([0 0 r*2 r*2], x, y));

我不确定您是要在一个呼叫中绘制单个点还是多个点,但是DrawDotsFillOval在多个点的参数如何上也略有不同指定。