Open3D (C++ API)  0.19.0
Public Member Functions | Data Fields
open3d::visualization::rendering::SharedImageDesc Struct Reference

#include <GaussianSplatVulkanInteropContext.h>

Public Member Functions

bool IsValid () const
 

Data Fields

VkImage vk_image = VK_NULL_HANDLE
 
VkDeviceMemory vk_memory = VK_NULL_HANDLE
 Dedicated exportable alloc. More...
 
std::uint32_t gl_memory_object = 0
 glCreateMemoryObjectsEXT result More...
 
std::uint32_t gl_texture = 0
 GL texture name; pass to Filament. More...
 
std::uint32_t width = 0
 Dimensions and format (stored for resize/recreate checks). More...
 
std::uint32_t height = 0
 
VkInteropImageFormat format = VkInteropImageFormat::kRGBA16F
 
VkImageLayout current_layout = VK_IMAGE_LAYOUT_UNDEFINED
 

Detailed Description

Describes a single GPU image that is owned by Vulkan but visible to OpenGL via the EXT_memory_object mechanism.

Lifetimesemantics:

  1. CreateSharedColorImage() / CreateSharedDepthImage() allocates the Vulkan image with a dedicated exportable allocation and simultaneously imports it into OpenGL, returning a fully-initialised SharedImageDesc.
  2. The gl_texture name (uint32_t) is passed to FilamentResourceManager::CreateImportedTexture() exactly as today.
  3. DestroySharedImage() first deletes the GL memory-object and texture, then the Vulkan image and memory.

Member Function Documentation

◆ IsValid()

bool open3d::visualization::rendering::SharedImageDesc::IsValid ( ) const
inline

Field Documentation

◆ current_layout

VkImageLayout open3d::visualization::rendering::SharedImageDesc::current_layout = VK_IMAGE_LAYOUT_UNDEFINED

Vulkan image layout currently assumed by the Vulkan side. Updated after each VkImageMemoryBarrier.

◆ format

VkInteropImageFormat open3d::visualization::rendering::SharedImageDesc::format = VkInteropImageFormat::kRGBA16F

◆ gl_memory_object

std::uint32_t open3d::visualization::rendering::SharedImageDesc::gl_memory_object = 0

glCreateMemoryObjectsEXT result

OpenGL objects wrapping the exported memory. These have a lifetime equal to vk_memory; destroy them before vkFreeMemory.

◆ gl_texture

std::uint32_t open3d::visualization::rendering::SharedImageDesc::gl_texture = 0

GL texture name; pass to Filament.

◆ height

std::uint32_t open3d::visualization::rendering::SharedImageDesc::height = 0

◆ vk_image

VkImage open3d::visualization::rendering::SharedImageDesc::vk_image = VK_NULL_HANDLE

◆ vk_memory

VkDeviceMemory open3d::visualization::rendering::SharedImageDesc::vk_memory = VK_NULL_HANDLE

Dedicated exportable alloc.

◆ width

std::uint32_t open3d::visualization::rendering::SharedImageDesc::width = 0

Dimensions and format (stored for resize/recreate checks).


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