문제

업데이트 : 이것은 일부 컴퓨터에서만 문제가되는 것 같습니다. 정상적이고 직관적 인 코드는 내 가정용 컴퓨터에서 잘 작동하는 것처럼 보이지만 직장의 컴퓨터에는 문제가 있습니다.

가정용 컴퓨터 : (문제 없음)

  • Windows XP Professional SP3
  • AMD ATHLON 64 X2 3800+ 듀얼 코어 2.0GHz
  • Nvidia Geforce 7800 Gt
  • 2GB RAM

작업 컴퓨터 : (이 질문은이 컴퓨터에 적용됩니다)

  • Windows XP Professional SP3
  • Intel Pentium 4 2.8 GHz (듀얼 코어, 생각)
  • 인텔 82945G Express 칩셋 패밀리
  • 1GB RAM

원본 게시물 :

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
% (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

이제 나는 이것 (4 개의 동일 크기의 사각형)을 볼 것으로 기대합니다.

Expected result

그러나 대신 나는 이것을 얻습니다 (오른쪽과 하단 측면은 잘리고 왼쪽 정사각형이 너무 큽니다) :

Actual result

분명히 대상 사각형은 소스 사각형보다 훨씬 크므로 텍스처를 확대해야합니다. 나는 이것이 첫 번째 그림에서처럼 대칭 적으로 일어날 것으로 기대하며 이것이 또한 내가 필요한 것입니다. 왜 이런 일이 일어나지 않으며 그것에 대해 무엇을 할 수 있습니까?

또한 [128 0 1152 1024]를 대상 사각형으로 사용하려고 시도했습니다 (화면 중앙의 정사각형이므로). 이 경우, 모든 측면은 1024로, 각각의 관련 사각형을 2의 전력으로 만듭니다. 이것은 도움이되지 않습니다. 바둑판의 크기를 늘리면 오른쪽과 병적 측면이 올바르게 표시되지 않는 비슷한 상황이 발생합니다.

내가 말했듯이, 나는 Psychtoolbox를 사용하지만, 그것이 후드 아래에서 OpenGL을 사용한다는 것을 알고 있습니다. 나는 OpenGL에 대해 많이 모르지만 아마도 Matlab을 모르면 도울 수있는 사람이 어쩌면 어쩌면 누군가를 도울 수 있습니다. 모르겠어요.

시간 내 줘서 고마워!

도움이 되었습니까?

해결책

Psychtoolbox에 대해 많은 것을 알지 못했지만 Matlab에서 그래픽과 사용자 인터페이스를 많이 다루는 것은 첫 번째로 시도하는 것은 네 번째 입력으로 바이올린으로 만드는 것입니다. 화면 ( "소스"입력). 각 모서리를 반 픽셀과 전체 픽셀 값으로 바꾸십시오. 예를 들어, 내가 시도 할 첫 번째는 다음과 같습니다.

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 컨트롤이 픽셀로 꺼져있는 것처럼 보일 수 있다는 것을 알았습니다.

그것이 제가 줄 수있는 최고의 조언입니다. 도움이되기를 바랍니다!

다른 팁

나는 잘 모르지만 (읽기 : 어떤 것도), 나는 OpenGL에서 질감이 매우 까다로워진다는 것을 알고 있습니다. 마지막으로, OpenGL은 텍스처 파일이 제곱이되고 2 개의 전원이어야합니다 (예 : 128 x 128, 256 x 256, 512 x 512).

그렇지 않은 경우 OpenGL 은이 조건을 충족하는 데 필요한 적절한 흰색 픽셀로 파일을 패드해야하지만, 실행중인 시스템에 따라 crapshoot 일 수 있습니다.

바둑판 질감이 이러한 요구 사항에 맞는지 확인하는 것이 좋습니다.

또한, 나는 당신의 코드가 게시 된 것을 확인할 수는 없지만 OpenGL은 질감의 모서리를 텍스처에 의도하는 물체의 모서리에 매핑하기를 기대합니다.

또 다른 조언은 가장 가까운 이웃 대신 선형 필터를 사용해보십시오. 계산적으로 무겁지만 이미지가 더 나은 결과를 초래합니다. 이것은 아마도 결국 중요하지 않을 것입니다.

이 도움은 Matlab이 아니지만 유용하기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top