Как исправить ошибку «Не поддерживается размер точки, запрошенный на экране (« DrawDots »)»? - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть программа, которая требует использования функции 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, а не саму видеокарту, но это не сработало, и я получил ту же ошибку.И я попытался запустить программу, когда ОС была установлена ​​на более низкое разрешение экрана, но это также не сработало.Я запускаю Matlab 2016b на всех компьютерах, на которых я тестировал код.

Любые предложения о том, как обойти эту проблему, будут высоко оценены.Спасибо.

1 Ответ

0 голосов
/ 06 февраля 2019

Два предложения:

1) Используйте реализацию шейдера Psychtoolbox (используйте «3» вместо «2» в конечном параметре для вызова DrawDots):

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));

I 'Я не уверен, пытаетесь ли вы построить одну точку или несколько точек в одном вызове, но DrawDots и FillOval также немного отличаются в том, как заданы параметры нескольких точек.

...