【发布时间】:2019-05-16 16:17:39
【问题描述】:
我有兴趣从 psychtoolbox 迁移到 shady 以进行刺激演示。我查看了在线文档,但我不太清楚如何复制我目前在 matlab 中所做的事情。
我做的其实很简单。对于每次试验,
我从磁盘加载单个图像(我离线进行亮度线性化),其中包含我计划在该试验中显示的所有帧(刺激为 1000x1000 像素,我呈现 25 帧,因此图像是 5000x5000px。我只使用 BW 图像,所以我每个像素只有一个 int8 值)。
我将整个图像从 CPU 传输到 GPU
在某些时候(外部控制)我将第一帧复制到视频缓冲区并呈现它
在其他某个点(外部控制),我触发了 剩余 24 帧(将图像的相关部分复制到每个视频帧的视频缓冲区,然后调用 flip())。
通过让另一台机器通过 TCP/IP 与刺激呈现代码进行通信来实现外部控制。在控制PC向演示PC发送命令并执行后,演示PC需要向控制PC发送回确认消息。我需要发送三个 ACK 消息,一个当屏幕上出现第一帧时,一个当屏幕上出现第二帧时,一个当屏幕上出现第 25 帧时(这样控制 PC 可以轻松验证是否丢帧)。 在 matlab 中,我通过调用阻塞方法 flip() 来呈现一个帧,当它返回时,我将 ACK 发送到控制 PC。
就是这样。我该怎么做?有我应该看的例子吗?
【问题讨论】:
-
关于发送 ACK 的问题确实是一个单独的(正交)问题。简短的回答是安装
AnimationCallback,如shady.readthedocs.io/en/release/auto/… 和shady.readthedocs.io/en/release/source/… 所述。动画回调在翻转后立即进行评估,您可以在那里实现自己的有状态w.framesCompleted相关逻辑。如果您提出单独的问题,我可以提供更多详细信息/建议,但请先尝试一下。 -
谢谢你,我试试看。
标签: python graphics neuroscience shady