我在心理上使用blendMode="add"
- ufortunatelly GratingStim
只有在窗口中没有绘制文本时,对比才有效。一旦绘制了文本 - 跟随GratingStims对比看起来好像从中减去了1(看一下截图)。我没有遇到avg blendMode这个问题,但我真的需要blendMode="add"
。
这是GratingStim在绘制文本之前的样子:
这是它绘制一些文字的方式:
在向窗口绘制文本之后,任何后面的GratingStim都会像这样呈现对比度。只打开另一个窗口有帮助 我想这可以通过向pyglet中注入一些着色器来解决,但我不知道该怎么做(related issue on github)。
以下代码重现了这个问题:
from psychopy import visual, event, core
win = visual.Window(monitor='testMonitor', useFBO=True,
blendMode='add', units='deg')
g = visual.GratingStim(win, tex='sin', mask='gauss', size=4.5, pos=(0,6))
t = visual.TextStim(win=win, text='Hello blendMode="add"!')
draw_order = [[g], [g, t], [g, t]]
for draw_now in draw_order:
for stim in draw_now:
stim.draw()
win.flip()
event.waitKeys()
core.quit()
我正在使用Windows - 我在Windows 7和Windows 8上都存在这个问题。
答案 0 :(得分:2)
好的,我的 guess 是pyglet文本渲染器正在执行一些改变blendmode规则的代码,这样当文本被绘制时,它的左边是错误的状态。现在正在做
win.blendMode = 'add'
在绘制文本刺激之后为我解决了问题
答案 1 :(得分:0)
设置visual.Window(wynType='pygame')
而不是默认winType='pyglet'
。在您的示例中:
win = visual.Window(monitor='testMonitor', useFBO=True,
blendMode='add', units='deg', winType='pygame')
为什么这可以解决问题,我不完全确定。我通过查看TextStim.draw
方法的源代码得出了这个猜测,其中对pyglet执行了一大堆GL调用,但没有为pygame执行。