отображать тот же текст на экране, не переворачивая экран с другими формами / изображениями, используя PsychToolBox MATLAB - PullRequest
0 голосов
/ 16 октября 2019

Есть ли способ, чтобы определенный текст / форма / изображение оставалось на экране перед другими объектами, не переворачивая остальные объекты на экране и за его пределами? Например, я хочу, чтобы фиксация перекрестия всегда оставалась на экране, не меняясь с изображениями позади него.

Другими словами, может ли "Экран ('Flip', window)" переворачивать только определенные фигуры, но не все, что на экране?

Спасибо!

1 Ответ

0 голосов
/ 16 октября 2019

Вы можете указать, что кадр не должен очищаться после переворачивания, установив для флага не очищать значение 1:

Screen('Flip', wPtr, [], 1);

Однако с этим вы можете наложить новые объекты на кадре, но если вы хотите удалить какой-либо из них, вы должны удалить их все - следующий вызов клипа без установленного в 1 флага не очистки удалит все:

try
    screenNum= max(Screen('Screens'));
    Screen('Preference', 'SkipSyncTests', 1);
    [wPtr, wRect]=Screen('OpenWindow', screenNum, 0);

    % draw fixation, indicate that the frame buffer should not be cleared
    DrawFormattedText(wPtr, '+', 'center', 'center', 255);
    Screen('Flip', wPtr, [], 1);
    WaitSecs(1);

    % overlay a purple oval, in addition to the fixation
    Screen('FillOval', wPtr, [128 0 128], [0 0 100 100])
    Screen('Flip', wPtr, []);
    WaitSecs(1);

    % display an orange oval, this will be presented without the fixation
    % unless the previous purple oval is also retained
    Screen('FillOval', wPtr, [128 128 0], [100 100 200 200])
    Screen('Flip', wPtr, []);
    WaitSecs(1);

    sca;

catch e
    sca;
   rethrow(e) 
end

Если вам нужночасто рисуйте крест фиксации с добавлением и удалением других объектов, другой вариант - сохранить фиксацию как текстуру, которую легче перерисовать в каждом кадре.

...