각 밀리초를 처리하는 함수를 만드는 방법은 무엇입니까? - 페이지 3

 
Dmitry Fedoseev :

어린 시절에 TV에 관한 책을 읽지 않았다면 초당 24 프레임이면 충분합니다.)))

실제로 아날로그 CRT TV는 인터레이스 스캐닝 방식을 사용했지만, 그 당시에는 주어진 대역폭에서 전체 프레임을 구동할 수 없었기 때문에 먼저 짝수 라인을 내주고 홀수 라인을 내놓았고 튜브의 잔광으로 인해 깜박임이 발생하지 않았습니다. 보이는. 책을 읽을 뿐만 아니라 학생 시절 TV 수리도 잘 했다.))

 
Alexey Volchanskiy :

실제로 아날로그 CRT TV는 인터레이스 스캐닝 방식을 사용했지만, 그 당시에는 주어진 대역폭에서 전체 프레임을 구동할 수 없었기 때문에 먼저 짝수 라인을 내주고 홀수 라인을 내놓았고 튜브의 잔광으로 인해 깜박임이 발생하지 않았습니다. 보이는. 책을 읽을 뿐만 아니라 학생 시절 TV 수리도 잘 했다.))

몇 프레임이 필요한지 모르겠습니다. 나는 그런 책을 읽지 않았다. 그러나 가장 중요한 것은 - 이제 내가 한 모든 것이 잘 작동합니다. 물론, 아직 완전히 파악한 것은 아니지만, 이미 집착할 것이 있습니다.
 
Nikolay Demko :

ChartRedraw 함수 (차트 다시 그리기)의 비용은 40밀리초이므로 16밀리초 후에 타이머를 업데이트하는 것은 의미가 없습니다.

40밀리초는 초당 25프레임에 해당하며 이는 인간이 지각하는 속도와 같습니다.

글쎄요, 아니요, 니콜라이는 물론 덜합니다. 내 컴퓨터에서는 COLOR_FORMAT_ARGB_NORMALIZE로 2밀리초 미만이고 COLOR_FORMAT_XRGB_NOALPHA로 1밀리초 미만입니다.

그리고 첨부된 예제 스크립트( TestSpeedCanv.ex5 )에서 볼 수 있듯이 30밀리초(초당 32프레임)의 프레임 지연은 눈에 절대적으로 충분합니다. 그건 그렇고, 모든 비디오는이 주파수로 촬영됩니다. 슬로우 모션 재생이 필요할 때 더 자주 이륙하십시오.

파일:
 
Реter Konow :

타이머 기능의 최대 주파수는 15-16mc입니다.

응 그게 맞아. (주파수만 아니라 주기. 최대 주파수 = 64Hz)

설명을 추가하겠습니다.

타이머 기간 단계 = 15.625밀리초.

저것들. EventSetMillisecondTimer(1) 명령 및 EventSetMillisecondTimer(10) 명령을 사용하면 실제 기간은 15.625ms가 됩니다.

EventSetMillisecondTimer(21) 명령 및 EventSetMillisecondTimer(30) 명령을 사용하면 실제 기간은 31.25ms가 됩니다.

EventSetMillisecondTimer(95) 명령 및 EventSetMillisecondTimer(105) 명령을 사용하면 실제 기간은 109.375ms가 됩니다.

등.

파일:
 
Alexey Volchanskiy :

실제로 아날로그 CRT TV는 인터레이스 스캐닝 방식을 사용했지만, 그 당시에는 주어진 대역폭에서 전체 프레임을 구동할 수 없었기 때문에 먼저 짝수 라인을 내주고 홀수 라인을 내놓았고 튜브의 잔광으로 인해 깜박임이 발생하지 않았습니다. 보이는. 책을 읽을 뿐만 아니라 학생으로 TV 수리도 잘 했어요))

예, 625줄과 그 모든 것입니다. 최초의 집에서 만든 게임(컴퓨터 게임이 아닌 - 별도의 마이크로 회로에 조립됨)에서는 일반적으로 312개의 라인이 사용되었습니다. 어린 시절 플레이: 하키, 테니스 ...
 
Alexey Volchanskiy :

실제로 아날로그 CRT TV는 인터레이스 스캐닝 방식을 사용했지만, 그 당시에는 주어진 대역폭에서 전체 프레임을 구동할 수 없었기 때문에 먼저 짝수 라인을 내주고 홀수 라인을 내놓았고 튜브의 잔광으로 인해 깜박임이 발생하지 않았습니다. 보이는. 책을 읽을 뿐만 아니라 학생 시절 TV 수리도 잘 했다.))

그래서 무엇? 비디오에서 초당 24프레임이면 자연스럽고 균일한 움직임의 효과를 제공하기에 충분하다고 가르치지 않았습니까? 그리고 깜박임 문제는 모니터(TV) 문제입니다.

 
Dmitry Fedoseev :

그래서 무엇? 동영상에서 초당 24프레임이면 자연스럽고 균일한 움직임의 효과를 제공하기에 충분하다고 가르치지 않았습니까? 그리고 깜박임 문제는 모니터(TV) 문제입니다.

이제 휴대폰에도 50fps 비디오가 있습니다)

24fps와 50fps로 동일한 빠른 동작을 촬영하고 비교

추신. Charlie Chaplin은 15fps로 촬영했습니다.

 
Alexey Volchanskiy :

실제로 아날로그 CRT TV는 인터레이스 스캐닝 방식을 사용했지만, 그 당시에는 주어진 대역폭에서 전체 프레임을 구동할 수 없었기 때문에 먼저 짝수 라인을 내주고 홀수 라인을 내놓았고 튜브의 잔광으로 인해 깜박임이 발생하지 않았습니다. 보이는. 책을 읽을 뿐만 아니라 학생 시절 TV 수리도 잘 했다.))

예, 하지만 이 절반 프레임은 동일한 프레임이 아니라 서로 다릅니다.
덕분에 컴퓨터에서는 움직임이 25fps보다 더 부드러워졌습니다.

 
Taras Slobodyanik :

이제 휴대폰에도 50fps 비디오가 있습니다)

24fps와 50fps로 동일한 빠른 동작을 촬영하고 비교

추신. Charlie Chaplin은 15fps를 촬영했습니다. 충분함)

놀라운 지식의 깊이! ...그리고 지각의 미묘함! 일반적으로 모든 사람은 Charlie Chaplin의 영화에서 바보와 부자연스러운 움직임을 봅니다.

 
Nikolai Semko :

응 그게 맞아. (주파수만 아니라 주기. 최대 주파수 = 64Hz)

설명을 추가하겠습니다.

타이머 기간 단계 = 15.625밀리초.

저것들. EventSetMillisecondTimer(1) 명령 및 EventSetMillisecondTimer(10) 명령을 사용하면 실제 기간은 15.625ms가 됩니다.

EventSetMillisecondTimer(21) 명령 및 EventSetMillisecondTimer(30) 명령을 사용하면 실제 기간은 31.25ms가 됩니다.

EventSetMillisecondTimer(95) 명령 및 EventSetMillisecondTimer(105) 명령을 사용하면 실제 기간은 109.375ms가 됩니다.

등.

수정해주셔서 감사합니다, 니콜라스.

정확한 기간 측정은 하지 않았지만 일부 기간의 누락이 있음을 확인했습니다. 주파수가 이상적이지 않습니다. 특히 작은 기간 값(16-25ms) 범위에서. 즉, 16ms를 설정하면 일시 중지가 32밀리초가 되는 경우가 많습니다.

주기의 빈도에 실패와 같은 것이 있습니다. 일종의 전자 부정맥.


따라서 기간을 40ms(사람이 인지하기에 충분함)로 설정하고 타이머가 일부 기간을 건너뛰면 어떻게 될까요? 그러면 초당 24프레임이 아니라 18-24프레임이 됩니다. 타이머가 건너뛸 기간 수에 따라 다릅니다. 가장 좋은 옵션은 25ms의 타이머 기간이라고 생각합니다. 제가 원래 설치한 것입니다.