Обновление: это кажется проблемой только на некоторых компьютерах. Кажется, что нормальный, интуитивно понятный код отлично работает на моем домашнем компьютере, но у компьютера на работе проблемы.
Домашний компьютер: (без проблем)
- Windows XP Professional SP3
- AMD Athlon 64 X2 3800+, двухъядерный 2,0 ГГц
- NVIDIA GeForce 7800 GT
- 2 ГБ ОЗУ
Рабочий компьютер: (этот вопрос относится к этому компьютеру)
- Windows XP Professional SP3
- Intel Pentium 4 2,8 ГГц (я думаю, двухъядерный)
- Семейство наборов микросхем Intel 82945G Express
- 1 ГБ ОЗУ
Исходное сообщение:
Я пытаюсь применить очень простую текстуру к части экрана, используя Psychtoolbox в Matlab со следующим кодом:
win = Screen('OpenWindow', 0, 127); % open window and obtain window pointer
tex = Screen('MakeTexture', win, [255 0;0 255]); % get texture pointer
% draw texture. Args: command, window pointer, texture pointer, source
% (i.e. the entire 2x2 matrix), destination (a 100x100 square), rotation
% (none) and filtering (nearest neighbour)
Screen('DrawTexture', win, tex, [0 0 2 2], [100 100 200 200], 0, 0);
Screen('Flip', win); % flip the buffer so the texture is drawn
KbWait; % wait for keystroke
Screen('Close', win); % close screen
Теперь я ожидаю увидеть это (четыре квадрата одинакового размера):
Но вместо этого я получаю это (правая и нижняя стороны обрезаются, а верхний левый квадрат слишком велик):
Очевидно, что прямоугольник назначения намного больше исходного прямоугольника, поэтому текстуру необходимо увеличить. Я ожидаю, что это произойдет симметрично, как на первом рисунке, и это тоже то, что мне нужно. Почему этого не происходит и что я могу с этим поделать?
Я также пытался использовать [128 0 1152 1024] в качестве прямоугольника назначения (так как это квадрат в центре моего экрана). В этом случае все стороны равны 1024, что делает каждый участвующий прямоугольник степенью 2. Это не помогает.
Увеличение размера шахматной доски приводит к аналогичной ситуации, когда правая и нижняя стороны отображаются неправильно.
Как я уже сказал, я использую Psychtoolbox, но я знаю, что он использует OpenGL под капотом. Я тоже мало знаю об OpenGL, но, возможно, кто-то, кто знает, может помочь, не зная Matlab. Я не знаю.
Спасибо за ваше время!