[vlc-devel] [PATCH v2 4/8] opengl: use vlc_viewpoint_to_4x4 to compute view matrix

Alexandre Janniaux ajanni at videolabs.io
Wed Mar 6 20:01:42 CET 2019


Do you mean moving vlc_viewpoint_reverse so that it avoids the copy 
above?
If so, ok, fixed locally.

Or a vlc_viewpoint_reverse(dst*, src*)?

On 2019-03-06 16:44, Rémi Denis-Courmont wrote:
> Le keskiviikkona 6. maaliskuuta 2019, 17.31.34 EET Alexandre Janniaux a 
> écrit
> :
>> ---
>>  modules/video_output/opengl/vout_helper.c | 8 ++++++++
>>  1 file changed, 8 insertions(+)
>> 
>> diff --git a/modules/video_output/opengl/vout_helper.c
>> b/modules/video_output/opengl/vout_helper.c index 
>> 30283419a3..0964a2fd22
>> 100644
>> --- a/modules/video_output/opengl/vout_helper.c
>> +++ b/modules/video_output/opengl/vout_helper.c
>> @@ -104,6 +104,7 @@ struct prgm
>>          GLfloat YRotMatrix[16];
>>          GLfloat XRotMatrix[16];
>>          GLfloat ZoomMatrix[16];
>> +        GLfloat ViewMatrix[16];
>>      } var;
>> 
>>      struct { /* UniformLocation */
>> @@ -162,6 +163,7 @@ struct vout_display_opengl_t {
>>      bool supports_npot;
>> 
>>      /* View point */
>> +    vlc_viewpoint_t vp;
>>      float f_teta;
>>      float f_phi;
>>      float f_roll;
>> @@ -279,6 +281,10 @@ static void 
>> getViewpointMatrixes(vout_display_opengl_t
>> *vgl, getXRotMatrix(vgl->f_phi, prgm->var.XRotMatrix);
>>          getZRotMatrix(vgl->f_roll, prgm->var.ZRotMatrix);
>>          getZoomMatrix(vgl->f_z, prgm->var.ZoomMatrix);
>> +
>> +        vlc_viewpoint_t vp = vgl->vp;
>> +        vlc_viewpoint_reverse(&vp);
> 
> AFAICT, this could use a non-destructive function and save one useless 
> copy.
> 
>> +        vlc_viewpoint_to_4x4(&vp, prgm->var.ViewMatrix);
>>      }
>>      else
>>      {
>> @@ -288,6 +294,7 @@ static void 
>> getViewpointMatrixes(vout_display_opengl_t
>> *vgl, memcpy(prgm->var.XRotMatrix, identity, sizeof(identity));
>> memcpy(prgm->var.ZoomMatrix, identity, sizeof(identity)); }
>> +
>>  }
>> 
>>  static void getOrientationTransformMatrix(video_orientation_t 
>> orientation,
>> @@ -1053,6 +1060,7 @@ int
>> vout_display_opengl_SetViewpoint(vout_display_opengl_t *vgl, 
>> vgl->f_phi  =
>> RAD(p_vp->pitch);
>>      vgl->f_roll = RAD(p_vp->roll);
>> 
>> +    vgl->vp = *p_vp;
>> 
>>      if (fabsf(f_fovx - vgl->f_fovx) >= 0.001f)
>>      {



More information about the vlc-devel mailing list