2012-07-31 2 views
0

안녕하세요 최근에 저는 수직 리트 렉션을 기다리는 것이 엄격히 요구되는 동기화 부분을 프로그래밍하고있었습니다. 그래서 Privileged 명령어를 사용하여 _inp (0x3DA) & 0x08을 사용했습니다. 그러나이 명령은 권한이 있으며 이전 XP 컴퓨터에서 제대로 작동하려면 port95NT.exe를 설치해야합니다. 이제 Win7이 나오면 런타임 경고가 발생하여 실행을 방해하고 64 비트 시스템에 port95NT.exe를 설치할 수 없습니다. 그럼 64 비트 Win7에서 수직 리트 레이스로 새로운 프레임의 시작을 감지 할 수있는 다른 아이디어가 있습니까?win7에서 프로그래밍 수직 리 트레이스

+1

수직 귀선 측정의 개념이 더 이상 사용되지 않습니까? 현대 평면 패널 그런 식으로 작동하지 않습니다. 일관된 이미지가 표시되도록하려면 몇 가지 규칙을 따라야하지만 더 이상 수직 리 트레이스가 아닙니다. – ddyer

+0

와우 !! 수직 retrace ... 나는 이것을 대략 15 년간 보지 않았다! – paddy

+0

네, 맞습니다. 지금은 Win98을 실행하는 컴퓨터를 다루기 시작 했으니까요. 롤. 귀하의 조언을 주셔서 감사합니다! – user1566599

답변

3

Microsoft는 DirectX와 같은 API를 설계하여 개발자가 이와 같은 하드웨어 수준의 작업을 망칠 필요가 없었습니다. 최신 Windows 버전은 더 이상 해당 하드웨어 포트에 직접 액세스 할 수 없습니다.

사용 가능한 툴킷이있는 경우 WaitForVerticalBlank()을 DirectDraw API에서 시도 할 수 있습니다. Direct3D를 사용하는 경우 D3DPRESENT_INTERVAL_ONEPresent()으로 설정하면 수직 동기화 직후까지 업데이트를 강제로 적용 할 수 있습니다.

+0

와우, 매우 흥미롭고 정말로 knowledgable, 대단히 감사합니다! – user1566599

0

우선 현대 평면 패널은 그런 식으로 작동합니다. 각 픽셀은 정기적으로 새로 고쳐야합니다. 행/열 스트로브 및 수직 재생 빈도가 있습니다. CRTS와 같이 실제로 "블랭킹"이 없지만 행/열 값이 원래 위치로 되돌아가는 수직 리 트레이스가 있습니다. 이중 (또는 삼중) 버퍼링 시스템의 경우 프레임이 찢어지지 않도록이 간격 동안 버퍼를 교체해야합니다. 또한, 전문적인 비디오 어플리케이션은 매끄러운 프레임 전환을 제공하기 위해 프레임 동기화되거나, 카메라 및 기타 스튜디오 장비와 함께 "건널"을 위해 동기화되어야합니다.

+0

SO에 대해 덜 모욕적이라고 생각하십시오. – user1596138