blob: 71aebef3947aeeffcff9c3555629e2c85aa95d89 [file] [log] [blame]
#ifndef ANDROID_DVR_RENDER_TEXTURE_PARAMS_H_
#define ANDROID_DVR_RENDER_TEXTURE_PARAMS_H_
#include <private/dvr/types.h>
namespace android {
namespace dvr {
// Encapsulates information about the render texture, includes the size
// of the render texture, and the left/right viewport which define the
// portion each eye is rendering onto. This struct will be passed to
// PresentFrame every frame before the client actually drawing the scene.
struct RenderTextureParams {
RenderTextureParams() {}
RenderTextureParams(vec2i target_texture_size,
const Range2i& eye_viewport_bounds_left,
const Range2i& eye_viewport_bounds_right,
const FieldOfView& eye_fov_left,
const FieldOfView& eye_fov_right)
: texture_size(target_texture_size) {
eye_viewport_bounds[kLeftEye] = eye_viewport_bounds_left;
eye_viewport_bounds[kRightEye] = eye_viewport_bounds_right;
eye_fov[kLeftEye] = eye_fov_left;
eye_fov[kRightEye] = eye_fov_right;
}
explicit RenderTextureParams(vec2i target_texture_size,
const FieldOfView& eye_fov_left,
const FieldOfView& eye_fov_right) {
texture_size = target_texture_size;
eye_viewport_bounds[0] = Range2i::FromSize(
vec2i(0, 0), vec2i(texture_size[0] / 2, texture_size[1]));
eye_viewport_bounds[1] =
Range2i::FromSize(vec2i(texture_size[0] / 2, 0),
vec2i(texture_size[0] / 2, texture_size[1]));
eye_fov[kLeftEye] = eye_fov_left;
eye_fov[kRightEye] = eye_fov_right;
}
// The render texture size.
vec2i texture_size;
// The viewport bounds on the render texture for each eye.
Range2i eye_viewport_bounds[2];
// The field of view for each eye in degrees.
FieldOfView eye_fov[2];
};
} // namespace dvr
} // namespace android
#endif // ANDROID_DVR_RENDER_TEXTURE_PARAMS_H_