def __init__(self): self.layers = list() self.width = 100 self.height = 100 self.frame_index = 0 self.textureSwapChain = None self.rift = Rift() Rift.initialize() self.rift.init() # TODO: Yuck initialize() init()
def __init__(self): Rift.initialize() self.rift = Rift() self.rift.init() self.frame = 0 self.mirror = True self.eyeRenderDescs = (ovr.EyeRenderDesc * 2)() self.eyeOffsets = (ovr.Vector3f * 2)() self.projections = (ovr.Matrix4f * 2)() self.textureSizes = (ovr.Sizei * 2)() self.fovPorts = (ovr.FovPort * 2)() self.poses = (ovr.Posef * 2)() self.bufferSize = ovr.Sizei() self.viewScale = ovr.ViewScaleDesc() self.viewScale.HmdSpaceToWorldScaleInMeters = 1.0 for eye in range(0, 2): self.fovPorts[eye] = self.rift.hmdDesc.DefaultEyeFov[eye] self.eyeRenderDescs[eye] = self.rift.get_render_desc( eye, self.fovPorts[eye]) self.eyeOffsets[eye] = self.eyeRenderDescs[eye].HmdToEyeOffset self.projections[eye] = Rift.get_perspective( self.fovPorts[eye], 0.01, 1000) self.textureSizes[eye] = self.rift.get_fov_texture_size( eye, self.fovPorts[eye]) self.viewScale.HmdToEyeOffset[eye] = self.eyeOffsets[eye] self.bufferSize.w = self.textureSizes[0].w + self.textureSizes[1].w self.bufferSize.h = max(self.textureSizes[0].h, self.textureSizes[1].h) # TODO make the Rift wrapper class manage the layers and provide an API for enabling and disabling them # Initialize our single full screen Fov layer. layer = ovr.LayerEyeFov() layer.Header.Type = ovr.LayerType_EyeFov layer.Header.Flags = ovr.LayerFlag_TextureOriginAtBottomLeft # OpenGL convention layer.Fov[0] = self.fovPorts[0] layer.Fov[1] = self.fovPorts[1] viewportSize = ovr.Sizei(self.bufferSize.w / 2, self.bufferSize.h) viewportPos = ovr.Vector2i(0, 0) layer.Viewport[0] = ovr.Recti(viewportPos, viewportSize) viewportPos = ovr.Vector2i(self.bufferSize.w / 2, 0) layer.Viewport[1] = ovr.Recti(viewportPos, viewportSize) self.layer = layer
def __init__(self): Rift.initialize() self.rift = Rift() self.rift.init() self.frame = 0 self.mirror = True self.eyeRenderDescs = (ovr.EyeRenderDesc * 2)() self.eyeOffsets = (ovr.Vector3f * 2)() self.projections = (ovr.Matrix4f * 2)() self.textureSizes = (ovr.Sizei * 2)() self.fovPorts = (ovr.FovPort * 2)() self.poses = (ovr.Posef * 2)() self.bufferSize = ovr.Sizei() self.viewScale = ovr.ViewScaleDesc() self.viewScale.HmdSpaceToWorldScaleInMeters = 1.0 for eye in range(0, 2): self.fovPorts[eye] = self.rift.hmdDesc.DefaultEyeFov[eye] self.eyeRenderDescs[eye] = self.rift.get_render_desc(eye, self.fovPorts[eye]); self.eyeOffsets[eye] = self.eyeRenderDescs[eye].HmdToEyeOffset self.projections[eye] = Rift.get_perspective(self.fovPorts[eye], 0.01, 1000) self.textureSizes[eye] = self.rift.get_fov_texture_size(eye, self.fovPorts[eye]) self.viewScale.HmdToEyeOffset[eye] = self.eyeOffsets[eye] self.bufferSize.w = self.textureSizes[0].w + self.textureSizes[1].w self.bufferSize.h = max ( self.textureSizes[0].h, self.textureSizes[1].h ) # TODO make the Rift wrapper class manage the layers and provide an API for enabling and disabling them # Initialize our single full screen Fov layer. layer = ovr.LayerEyeFov() layer.Header.Type = ovr.LayerType_EyeFov layer.Header.Flags = ovr.LayerFlag_TextureOriginAtBottomLeft # OpenGL convention layer.Fov[0] = self.fovPorts[0] layer.Fov[1] = self.fovPorts[1] viewportSize = ovr.Sizei(self.bufferSize.w / 2, self.bufferSize.h) viewportPos = ovr.Vector2i(0, 0) layer.Viewport[0] = ovr.Recti(viewportPos, viewportSize) viewportPos = ovr.Vector2i(self.bufferSize.w / 2, 0) layer.Viewport[1] = ovr.Recti(viewportPos, viewportSize) self.layer = layer