Does it make sense having FPS higher than the monitor refresh rate?

312

Solution 1

Wikipedia: "A certain amount of discarded “headroom” frames are beneficial for the elimination of uneven (“choppy” or “jumpy”) output, and to prevent FPS from plummeting during the intense sequences when players need smooth feedback most.

Aside from frame rate, a separate but related factor unique to interactive applications such as gaming is latency. Excessive preprocessing can result in a noticeable delay between player commands and computer feedback, even when a full frame rate is maintained, often referred to as input lag.

Without realistic motion blurring, video games and computer animations do not look as fluid as film, even with a higher frame rate. When a fast moving object is present on two consecutive frames, a gap between the images on the two frames contributes to a noticeable separation of the object and its afterimage in the eye. Motion blurring mitigates this effect, since it tends to reduce the image gap when the two frames are strung together The effect of motion blurring is essentially superimposing multiple images of the fast-moving object on a single frame. Motion blurring makes the motion more fluid to the human eye, even as the image of the object becomes blurry on each individual frame.

A high frame rate still does not guarantee fluid movements, especially on hardware with more than one GPU. This effect is known as micro stuttering."

Hope that helps a little.

Solution 2

If the FPS rate of the game is higher than the monitor's refresh rate, some of the rendered frames are never shown and the time and processing power used rendering them is wasted.

Most rendering engines never go higher than the refresh rate because they synchronize with it to avoid graphical tearing when the rendered frame is changed in the middle of a screen refresh. This was called V-sync on CRT monitors and while plasma and LCD screens don't have vertical retrace periods the same principle still stands - the image must be updated between refreshes.

Share:
312
user2715101
Author by

user2715101

Updated on September 18, 2022

Comments

  • user2715101
    user2715101 almost 2 years

    I would like to add this pan recognizer not for whole screen it should be in specific area.

    - (void)panDetected:(UIPanGestureRecognizer *)panRecognizer
    {
        CGPoint translation = [panRecognizer translationInView:self.documentImageView];
        CGPoint imageViewPosition = self.documentImageView.center;
        imageViewPosition.x += translation.x;
        imageViewPosition.y += translation.y;
    
        self.documentImageView.center = imageViewPosition;
        [panRecognizer setTranslation:CGPointZero inView:self.view];
    }
    

    Can this pan recognizer be in this self.tableView.tableHeaderView.frame at the top ?

    - (void)setExtractedImageForTableView:(UIImage *)extractedImage 
      {   
            self.documentImageView.image = nil;
            self.documentImageView = nil;
            self.documentImageView = [[UIImageView alloc] initWithImage:extractedImage];
    
            self.documentImageView.userInteractionEnabled = YES;
    
            UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panDetected:)];
            [self.documentImageView addGestureRecognizer:panRecognizer];
    
            self.documentImageView.contentMode = UIViewContentModeScaleAspectFit;
            if (!CGSizeEqualToSize(extractedImage.size, CGSizeZero)) {
    
             self.documentImageView.frame = CGRectMake(CGRectGetMinX(self.view.frame), CGRectGetMinY(self.tableView.frame), CGRectGetWidth(self.view.frame), (extractedImage.size.height/extractedImage.size.width) * CGRectGetWidth(self.view.frame));
             self.tableView.tableHeaderView = self.documentImageView;
    
             [self.tableView setContentOffset:CGPointZero animated:YES];
             CGRect frame = self.documentImageView.frame;
             frame.size.height = self.documentImageView.frame.size.height + 100;
             self.tableView.frame = CGRectMake(0, 0, 200, 200);
             self.tableView.tableHeaderView.frame = frame;
         }
    }
    
    • Admin
      Admin almost 13 years
      Wikipedia on refresh rate: "On larger CRT monitors (17" or larger), most people experience mild discomfort unless the refresh is set to 72 Hz or higher. A rate of 100 Hz is comfortable at almost any size. However, this does not apply to LCD monitors."
    • Admin
      Admin almost 13 years
      Many games limit the rendering at 60fps. Since most LCD monitors max out at 60hz, it does not make much sense to go higher.
    • Admin
      Admin almost 13 years
      @rfausak I've edited my question according to your comment.
    • Admin
      Admin almost 13 years
      People can't process many images per second, but you can still perceive the difference between two frames at 60Hz when motion blurring is not present. See Wikipedia/frame_rate.
  • Lamar B
    Lamar B almost 13 years
    also, the minimum frame rate can be significantly lower than the average frame rate leading to a perceived lower overall frame rate.
  • user2715101
    user2715101 over 8 years
    cant i add as subview of tableView.tableHeaderView.frame ?
  • Abhishek
    Abhishek over 8 years
    if you have storyboard then you can drag UIView in TableView other wise you can add uiview as subview in tableview.tableHeaderView
  • user2715101
    user2715101 over 8 years
    okay after that how can i add gestureRecognizer of that view's subview? im harcoding btw not creating from storyboard.
  • Abhishek
    Abhishek over 8 years
    suppose this is your subview --- panView panView.userInteractionEnabled = Yes; [panView addGestureRecognizer:panRecognizer];
  • user2715101
    user2715101 over 8 years
    okay when i zoom .. its still covering whole screen :/ @abhishek
  • user2715101
    user2715101 over 8 years
    actually am i not doing the same in my setExtractedImageForTableView method?