我有一个程序,需要使用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。
任何有关如何解决此问题的建议将不胜感激。谢谢。
答案 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));
我不确定您是要在一个呼叫中绘制单个点还是多个点,但是DrawDots
和FillOval
在多个点的参数如何上也略有不同指定。