Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Stuttering cause by change in position of the view.
Qt 6.11 is out! See what's new in the release blog

Stuttering cause by change in position of the view.

Scheduled Pinned Locked Moved Unsolved General and Desktop
5 Posts 2 Posters 2.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Offline
    P Offline
    Pistrix
    wrote on last edited by
    #1

    Hello,

    (Forewarning: I'm fairly new to coding and even newer to Qt) I'm currently working on a project with a friend. We are building a game using Qt Widgets Application. The game involves moving a character (QGrpahicsRectItem) across the screen. We have a "platform" (another rect item) which the character "walks" upon. We recently added a feature so that as the character moves horizontally the view tracks him using the centerOn() command. For my friend who is using linux, this works beautifully. For me however, on windows, as soon as I start to move to the right so that the view has to track me, a weird stuttering occurs. This stuttering only occurs when the view is being moved. So if I stand still and just jump up (there is a function for that), it runs normally. But anytime the the view's position is changed, the stuttering occurs.

    What do I mean by stuttering? Essentially it looks like my character is moving in slow motion. It's as if the program is sleeping a split second before every interval of motion.

    And again, this only happens on my computer.

    Any guidance towards fixing this would be highly appreciated =)

    Thanks in advance.

    JonBJ 1 Reply Last reply
    0
    • P Pistrix

      Hello,

      (Forewarning: I'm fairly new to coding and even newer to Qt) I'm currently working on a project with a friend. We are building a game using Qt Widgets Application. The game involves moving a character (QGrpahicsRectItem) across the screen. We have a "platform" (another rect item) which the character "walks" upon. We recently added a feature so that as the character moves horizontally the view tracks him using the centerOn() command. For my friend who is using linux, this works beautifully. For me however, on windows, as soon as I start to move to the right so that the view has to track me, a weird stuttering occurs. This stuttering only occurs when the view is being moved. So if I stand still and just jump up (there is a function for that), it runs normally. But anytime the the view's position is changed, the stuttering occurs.

      What do I mean by stuttering? Essentially it looks like my character is moving in slow motion. It's as if the program is sleeping a split second before every interval of motion.

      And again, this only happens on my computer.

      Any guidance towards fixing this would be highly appreciated =)

      Thanks in advance.

      JonBJ Offline
      JonBJ Offline
      JonB
      wrote on last edited by
      #2

      @Pistrix
      The first suggestion would be to ensure your Windows graphics card drivers are up-to-date. My understanding is that QGraphics... stuff will want to use hardware acceleration.

      1 Reply Last reply
      1
      • P Offline
        P Offline
        Pistrix
        wrote on last edited by
        #3

        Thanks for the reply!

        My drivers are up to date. I actually use my computer for some gaming and have no issues at all (Mostly R6 Siege on low end graphics). When I first ran into this issue I was certain it was just to much information for my computer to be handling for whatever reason. But then my friend with the lower end laptop in terms of GPU and CPU ran it without any issue, I began to wonder if it was a Qt/windows setting that was affecting Qt.

        I tried searching all over various forums for a similar issue and the closest I got was some issues with VSync needing to be turned off, though that trail lead me no where as well.

        I truly don't think this is a problem with the quality of my computer as I have put it through far worse and it performed far better.

        Any other ideas?

        JonBJ 1 Reply Last reply
        0
        • P Pistrix

          Thanks for the reply!

          My drivers are up to date. I actually use my computer for some gaming and have no issues at all (Mostly R6 Siege on low end graphics). When I first ran into this issue I was certain it was just to much information for my computer to be handling for whatever reason. But then my friend with the lower end laptop in terms of GPU and CPU ran it without any issue, I began to wonder if it was a Qt/windows setting that was affecting Qt.

          I tried searching all over various forums for a similar issue and the closest I got was some issues with VSync needing to be turned off, though that trail lead me no where as well.

          I truly don't think this is a problem with the quality of my computer as I have put it through far worse and it performed far better.

          Any other ideas?

          JonBJ Offline
          JonBJ Offline
          JonB
          wrote on last edited by JonB
          #4

          @Pistrix
          Since I can't imagine this is "supposed to happen", do you have a simple, cut-down code case for us to see, just in case you're doing something "odd" in your code?

          (Also, do you happen to have access to a different Windows PC to test it on, to see whether the behaviour does have something to do with your setup?)

          1 Reply Last reply
          0
          • P Offline
            P Offline
            Pistrix
            wrote on last edited by
            #5

            @JonB

            Alrighty, I don't have another windows computer to test it on at the moment, though I might be able to this weekend. As far as a cut down code goes, I don't have one and the program is rather large with quite a few headers. The best I could come up with linking you the github.

            I can try and explain how the program works a bit clearer. We have a rect item that is of class type Character. There are member functions MoveRight, MoveLeft, MoveUP (jump), and gravity(). Each of these functions is linked using slots and timers. We have one timer that is linked to each of these functions. By pressing "D" or "A" bool for moving left and right are activated so that the Characters position is updated. To keep the view centered on the character, all I did is have the centerOn(Character) command added to the gravity member function so that everytime gravity is called (hence also moving left and right) the view follows. And it works in the sense that the view does track the Character only with a delay.

            It's as if the view position and the Character position can't both be updates so there is pause as it switches from updating the view and updating the character position.

            Let me know if you want the github link.

            1 Reply Last reply
            0

            • Login

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups
            • Search
            • Get Qt Extensions
            • Unsolved