대형 디스플레이 내에서 작은 디스플레이를 에뮬레이션하는 방법은 무엇입니까?

대형 디스플레이 내에서 작은 디스플레이를 에뮬레이션하는 방법은 무엇입니까?

저는 23.8인치 모니터를 사용하고 있습니다. xrandr의 출력 =

Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
HDMI-2 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 527mm x 296mm panning 1920x1080+0+0
   1920x1080     60.00*+  50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.88  
   1600x900      60.00  
   1280x1024     75.02    60.02  
   1280x800      59.91  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    60.00  
   832x624       74.55  
   800x600       75.00    60.32  
   720x576       50.00  
   720x576i      50.00  
   720x480       60.00    59.94  
   720x480i      60.00    59.94  
   640x480       75.00    60.00    59.94  
   720x400       70.08  

내 모니터에서 더 작은 크기의 디스플레이(~15인치)를 다음과 같이 에뮬레이션하고 싶습니다.

|----------|-----|
|          |     |
|  X       |  Y  |
|          |     |
|      ~15 |     |
|-----------     |
|            23.8|
-----------------

X 영역은 일반 모니터처럼 동작해야 하며 Y 영역은 비어 있어야 합니다(검은색 화면).

xrandr을 사용하려고 하는데 성공하지 못했습니다. 위와 같이 화면을 자르고 X 영역에 전체 화면 콘텐츠(더 작은 해상도)를 표시하는 방법에 대한 아이디어가 있습니까?

도움을 주시면 감사하겠습니다.

답변1

xrandr(GPU에 지시하여) 무엇이든 적용할 수 있습니다.변환 행렬존재하다동차 좌표g h i(2D의 경우 이는 일반적으로 항상 [0 0 1]로 끝나는 3x3 행렬입니다 .)

--transform a,b,c,d,e,f,g,h,i
출력에 적용할 변환 행렬을 지정합니다. 이중선형 필터의 자동 선택. 수학적 형식은 다음과 같습니다.

a b c
d e f
g h i

변환은 동차 좌표를 기반으로 합니다. 출력 픽셀의 좌표 벡터를 곱한 행렬은 그래픽 버퍼에 있는 픽셀의 변환된 좌표 벡터를 제공합니다. [...]

이는 축소된 디스플레이에서 더 큰 실제 프레임 버퍼로 전환하는 데 1 이상을 곱해야 함을 의미합니다. 따라서 프레임 버퍼를 23.8/15보다 작은 디스플레이로 축소하려면 2x2 상한을 23.8/15 매트릭스의 왼쪽 부분으로 곱해야 다음을 얻을 수 있습니다.

1.5867   0     0
0     1.5867   0
0        0     1

이를 달성한 후에는 이전 가상 화면 크기(예: 프레임 버퍼 크기)를 변경하지 않고 수동으로 유지해야 합니다. 그렇지 않으면 디스플레이를 덮을 수 있을 만큼 더 크게 계산됩니다 --fb 1920x1080.

--fb widthxheight
화면을 지정된 크기로 재구성합니다. 모든 모니터 구성은 이 치수를 준수해야 합니다. 이 옵션이 제공되지 않으면 xrandr은 구성된 출력 세트를 수용할 수 있는 가장 작은 화면 크기를 계산합니다. 이 옵션은 해당 동작을 재정의하는 방법을 제공합니다.

이 설정은 모니터별이 아닌 전역적입니다.

이는 다음을 제공합니다:

$ xrandr --output HDMI-2 --transform 1.5867,0,0,0,1.5867,0,0,0,1 --fb 1920x1080

여러 효과(예: 번역)를 적용하려는 경우를 대비하여 일반적인 경우를 보여주고 있습니다. 행렬을 곱하고 최종 결과 행렬만 제공하면 됩니다. 실제로 이 변환은 매우 간단합니다. 전용 옵션이 있습니다:

--scale xxy
출력 이미지의 크기를 변경합니다. 1보다 큰 값은 화면이 압축되어(출력 모드의 크기보다 화면 크기가 더 커짐), 1보다 작은 값은 확대된 출력이 됩니다. 이 옵션은 실제로 이 옵션의 단축 버전입니다 --transform.

결국 그것은 단지 :

$ xrandr --output HDMI-2 --scale 1.5867x1.5867 --fb 1920x1080

결과가 더 이상 디스플레이를 덮지 않으므로 경고가 나타납니다.

xrandr: specified screen 1920x1080 not large enough for output HDMI-2 (3047x1714+0+0)

출력 모드는 변경되지 않습니다(명시적으로 지정할 수 있음 --mode 1920x1080 --rate 60.00).

관련 정보