[windowPtr,rect]=Screen('OpenWindow',windowPtrOrScreenNumber,[color],[rect],[pixelSize],[numberOfBuffers],[stereomode],[multisample],[imagingmode],[specialFlags],[clientRect]);
Screen函数为PTB工具箱中最重要的函数,现以此解释相关参数:
- windowPtr返回窗口句柄:窗口句柄是创建窗口时返回的窗口指针。
Screen('函数字符串',参数列表)
:“函数字符串”是文本型的函数名称,eg:'OpenWindow','Flip','CloseAll'等,必须至于单引号内。
- 必须设置的参数为
windowPtrOrScreenNumber
,可以不用设置的参数有color
,rect
等,因为默认颜色为白色,默认窗口页面的大小为整个屏幕(与显示器分辨率有关)。等号前面[windowPtr,rect]
的内容为指向页面的指针和创建页面的大小尺寸,也是可选的,即可接受页面指针和页面尺寸,也可只接收页面指针。
- windowPtrOrScreenNumber:窗口句柄或屏幕序号(支持多个显示器),序号0为覆盖两个显示器屏幕的页面(两个显示器分辨率须一致,两个显示器组合起来共同显示同一个画面);序号1指第一个显示器,序号2指第二个显示器。
- [color]颜色:通用形式为[R,G,B],默认值为白色。
- [rect]矩形结构:[left top right bottom],分别表示矩形的左上角和右下角坐标,对一个窗口而言,其左上角坐标始终(0,0),因此右下角坐标就相当于窗口的宽度和高度。至少包含一个像素。
- PixelSize:像素的深度,以位数来表示的存储一个像素所需的位数,默认值为当前显示器的设置,该值越高,表示某个像素的颜色值越丰富;可取值为8、16、32。
- NumberOfBuffers:缓冲区数,一般取值为2,可以将需要呈现的刺激,先写入缓冲区中,适当的时候再通过页面切换技术Flip将缓冲区中的内容一次性快速呈现在屏幕上。
- Stereomode:是否立体模式,默认值为0.
- Multisample:如果设置该参数为大于0的值,则表示系统会进行反锯齿优化,即呈现的刺激更平滑,但需要耗费较多的内存资源,同时可能会降低刷新频率。
- Imagingmode:图像处理模式,该参数用于控制是否使用PTB借助OpenGL等插件所实现的图像处理功能。
- SpecialFlags:特殊标识。
- ClientRect:用于制定绘制区域的大小,当使用该参数时,会建立相应的虚拟的帧缓冲,显示将该缓冲中的内容进行缩放处理,假设创建的窗口尺寸为300×200,如果设置clientRect为[0 0 150 100],会使绘制的内容在水平和垂直方向上放大两倍;如果设置ClientRect为[0 0 600 200],会使绘制的内容在水平方向压缩为一半,垂直方向保持不变。
- 时间单位:PTB-3中的时间单位为秒,如果要获得毫秒,则×1000。
- [optional arguments]: Brackets in the function list, e.g. [color],
indicate optional arguments, not matrices. Optional arguments must be in order, without omitting earlier ones, but you can use the empty matrix [] as a place holder, with the same effect as omitting it.如果想省略某个参数值,可以使用[]占位符来表示使用相应位置参数的默认值。
示例:
新建一黑色视窗,并在2号监视器上全屏显示。显示图片o_1000005.bmp,暂停2s后,显示图片o_1000006.bmp,暂停2s后,关闭视窗。
[winPt,winRect]=Screen('OpenWindow',2,[0 0 0]); %新建一个视窗,并在2号监视器(显示器)上全屏显示,背景为黑色
I1=imread('o_1000005.bmp');
I2=imread('o_1000006.bmp');
b1=Screen('MakeTexture',winPt,I1); %将图片I1读取到b1中备用
b2=Screen('MakeTexture',winPt,I2);
Screen('DrawTexture',winPt,b1); %将b1读取到刚刚新建的视窗中(还未显示)
Screen('Flip',winPt); %切换为b1图片
WaitSecs(2); %暂停2s
Screen('DrawTexture',winPt,b2);
Screen('Flip',winPt);
WaitSecs(2);
Screen('CloseAll'); %关闭所有视窗
参考:
Psychtoolbox 3 精确时间控制(1)
Wiki: Textures, Windows, Screens
Psychtoolbox-3 FAQ
Psychtoolbox-3 Cookbook