Hi everyone,
I used vive focus to render a still picture (that is, a picture) before my eyes. It can be displayed. But when I swing my head from side to side or up and down, the Judder occurs.
I tried to guess that it might be due to the head pose. So I used higher frequencies to update the HMD pose, and it worked(frequency is lower), but Judder still did.
Here is my rendering process:
In the render thread:...while(true){ if (app->handleInput()) break; if (app->renderFrame()) break; } In the update pose thread: ... while(true){ WVR_DevicePosePair_t mVRDevicePairs[WVR_DEVICE_COUNT_LEVEL_1]; WVR_GetSyncPose(WVR_PoseOriginModel_OriginOnHead, mVRDevicePairs, WVR_DEVICE_COUNT_LEVEL_1); }
bool MainApplication::renderFrame() { LOGENTRY(); if (!gMultiview) { mIndexLeft = static_cast<uint32_t>(WVR_GetAvailableTextureIndex(mLeftEyeQ)); mIndexRight = static_cast<uint32_t>(WVR_GetAvailableTextureIndex(mRightEyeQ)); } // for now as fast as possible renderStereoTargets(); if (!gMultiview) { // Left eye WVR_TextureParams_t leftEyeTexture = WVR_GetTexture(mLeftEyeQ, mIndexLeft); WVR_SubmitError e; updateHMDMatrixPose(); // update hmd pose to reduce judder e = WVR_SubmitFrame(WVR_Eye_Left, &leftEyeTexture, &(mVRDevicePairs[0].pose))); if (e != WVR_SubmitError_None) return true; // Right eye WVR_TextureParams_t rightEyeTexture = WVR_GetTexture(mRightEyeQ, mIndexRight); e = WVR_SubmitFrame(WVR_Eye_Right, &rightEyeTexture, &(mVRDevicePairs[0].pose))) if (e != WVR_SubmitError_None) return true; } updateTime(); // Clear // We want to make sure the glFinish waits for the entire present to complete, not just the submission // of the command. So, we do a clear here right here so the glFinish will wait fully for the swap. glClearColor(0, 0, 0, 1); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); usleep(1); return false; }
In the rendering process, I did not pass in HMDPoseMatrix to shader, so my image should be unrelated to HMDPose.
So what else could lead to Judder?
Here are the specifications of the various software tools I'm using:
Developer Kit Vive Focus Updated to 1.93.1400.2
Wave SDK Version is 3.0.2
Android Native SDK