UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
Gl_interop_swapchain Class Reference
Collaboration diagram for Gl_interop_swapchain:
Collaboration graph

Public Member Functions

 Gl_interop_swapchain (const Gl_interop_swapchain &)=delete
 
 Gl_interop_swapchain (Gl_interop_swapchain &&)=default
 
 Gl_interop_swapchain (XrSession session, const XrSwapchainCreateInfo *info)
 
 Gl_interop_swapchain (XrSession session, int64_t swapchain_format, uint32_t w, uint32_t h)
 
XrSwapchain get ()
 
Framebuffer & get_framebuffer (size_t idx)
 
GLuint get_texture (size_t idx)
 
Gl_interop_swapchain & operator= (const Gl_interop_swapchain &)=delete
 
Gl_interop_swapchain & operator= (Gl_interop_swapchain &&)=default
 

Private Member Functions

void init ()
 

Private Attributes

std::vector< Framebuffer > framebuffers
 
std::vector< XrSwapchainImageOpenGLKHR > images
 
Openxr_swapchain xr_swapchain
 

Detailed Description

Definition at line 288 of file openxr_gl.cpp.

Constructor & Destructor Documentation

◆ Gl_interop_swapchain() [1/4]

Gl_interop_swapchain::Gl_interop_swapchain ( XrSession session,
const XrSwapchainCreateInfo * info )
inline

Definition at line 290 of file openxr_gl.cpp.

290 :
291 xr_swapchain(session, info)
292 {
293 init();
294 }
Openxr_swapchain xr_swapchain

References init().

Here is the call graph for this function:

◆ Gl_interop_swapchain() [2/4]

Gl_interop_swapchain::Gl_interop_swapchain ( XrSession session,
int64_t swapchain_format,
uint32_t w,
uint32_t h )
inline

Definition at line 296 of file openxr_gl.cpp.

299 :
300 xr_swapchain(session, swapchain_format, w, h)
301 {
302 init();
303 }

References init().

Here is the call graph for this function:

◆ Gl_interop_swapchain() [3/4]

Gl_interop_swapchain::Gl_interop_swapchain ( const Gl_interop_swapchain & )
delete

◆ Gl_interop_swapchain() [4/4]

Gl_interop_swapchain::Gl_interop_swapchain ( Gl_interop_swapchain && )
default

Member Function Documentation

◆ get()

XrSwapchain Gl_interop_swapchain::get ( )
inline

Definition at line 313 of file openxr_gl.cpp.

313{ return xr_swapchain.get(); }
XrSwapchain get()

References Openxr_swapchain::get(), and xr_swapchain.

Here is the call graph for this function:

◆ get_framebuffer()

Framebuffer & Gl_interop_swapchain::get_framebuffer ( size_t idx)
inline

Definition at line 309 of file openxr_gl.cpp.

309 {
310 return framebuffers[idx];
311 }
std::vector< Framebuffer > framebuffers

References framebuffers.

◆ get_texture()

GLuint Gl_interop_swapchain::get_texture ( size_t idx)
inline

Definition at line 305 of file openxr_gl.cpp.

305 {
306 return images[idx].image;
307 }
std::vector< XrSwapchainImageOpenGLKHR > images

References images.

Referenced by init().

◆ init()

void Gl_interop_swapchain::init ( )
inlineprivate

Definition at line 321 of file openxr_gl.cpp.

321 {
322 uint32_t length = xr_swapchain.get_length();
323 images.resize(length);
324 framebuffers.resize(length);
325
326 for(auto& image : images){
327 image.type = XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_KHR;
328 image.next = nullptr;
329 }
330
331 XrResult result = xrEnumerateSwapchainImages(xr_swapchain.get(),
332 length, &length,
333 (XrSwapchainImageBaseHeader *)(images.data()));
334
335 if(!XR_SUCCEEDED(result)){
336 throw std::runtime_error("Failed to enumerate swapchain images");
337 }
338
339 for(size_t i = 0; i < length; i++){
340 framebuffers[i].attach_texture(get_texture(i));
341 }
342 }
GLuint get_texture(size_t idx)
uint32_t get_length()

References framebuffers, Openxr_swapchain::get(), Openxr_swapchain::get_length(), get_texture(), images, and xr_swapchain.

Referenced by Gl_interop_swapchain(), and Gl_interop_swapchain().

Here is the call graph for this function:

◆ operator=() [1/2]

Gl_interop_swapchain & Gl_interop_swapchain::operator= ( const Gl_interop_swapchain & )
delete

◆ operator=() [2/2]

Gl_interop_swapchain & Gl_interop_swapchain::operator= ( Gl_interop_swapchain && )
default

Member Data Documentation

◆ framebuffers

std::vector<Framebuffer> Gl_interop_swapchain::framebuffers
private

Definition at line 345 of file openxr_gl.cpp.

Referenced by get_framebuffer(), and init().

◆ images

std::vector<XrSwapchainImageOpenGLKHR> Gl_interop_swapchain::images
private

Definition at line 346 of file openxr_gl.cpp.

Referenced by get_texture(), and init().

◆ xr_swapchain

Openxr_swapchain Gl_interop_swapchain::xr_swapchain
private

Definition at line 344 of file openxr_gl.cpp.

Referenced by get(), and init().


The documentation for this class was generated from the following file: