![]() |
如何使用Matlab Psychtoolbox(OpenGL)放大/拉伸纹理?
更新:这似乎只是某些计算机上的问题。正常,直观的代码似乎可以在我的家用计算机上正常工作,但是工作中的计算机有麻烦。
家用电脑:(没有问题) [LIST][*] Windows XP专业版SP3[*] AMD Athlon 64 X2 3800+双核2.0 GHz[*] NVIDIA GeForce 7800 GT[*] 2 GB内存[/LIST]工作计算机:(此问题适用于此计算机) [LIST][*] Windows XP专业版SP3[*]英特尔奔腾4 2.8 Ghz(我认为是双核)[*]英特尔82945G Express芯片组家族[*] 1 GB内存[/LIST][B]原始帖子: [/B] 我正在尝试使用Matlab中的Psychtoolbox通过以下代码将非常简单的纹理应用于屏幕的一部分: 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 % (ie 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 现在,我希望看到这个(四个相等大小的正方形): [URL="https://i.stack.imgur.com/prDb5.png"][IMG]https://i.stack.imgur.com/prDb5.png[/IMG][/URL] 但是我得到了这个(右侧和底部被切除,左上角的正方形太大): [URL="https://i.stack.imgur.com/ztuqH.png"][IMG]https://i.stack.imgur.com/ztuqH.png[/IMG][/URL] 显然,目标矩形比源矩形大很多,因此需要放大纹理。我希望这会像第一张图片一样对称地发生,这也是我所需要的。为什么这没有发生,我该怎么办? 我还尝试使用[128 0 1152 1024]作为目标矩形(因为它是屏幕中心的正方形)。在这种情况下,所有边都是1024,这使每个涉及的矩形的2的幂。这无济于事。增大棋盘格大小会导致类似的情况,其中最右边和最下面的一侧无法正确显示。 就像我说的,我使用Psychtoolbox,但我知道它在后台使用了OpenGL。我对OpenGL也不太了解,但是也许有人会在不了解Matlab的情况下提供帮助。我不知道。 谢谢你的时间! 回答: 在不了解Psychtoolbox的情况下,但是在MATLAB中处理了很多图形和用户界面之后,我要做的第一件事就是摆弄[B]Screen[/B]的第四个输入(“源”输入)。尝试将每个角移动半像素和整个像素值。例如,我要尝试的第一件事是: Screen('DrawTexture', win, tex, [0 0 2.5 2.5], [100 100 200 200], 0, 0); 如果那似乎什么都没做,那么我接下来尝试: Screen('DrawTexture', win, tex, [0 0 3 3], [100 100 200 200], 0, 0); 我提出此建议的理由:我有时注意到图中的图像或GUI控件看起来好像有一个像素偏移,我只能推测是在缩放或定位它们时存在某种舍入误差。 那是我能给的最好的建议。希望能帮助到你! [url=https://stackoverflow.com/questions/798992]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 23:39。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.