/// /// @file RenderTarget.h /// /// @brief The header for the RenderTarget struct. /// /// @author /// /// This file is a part of Ultralight, a next-generation HTML renderer. /// /// Website: /// /// Copyright (C) 2022 Ultralight, Inc. All rights reserved. /// #pragma once #include #include #include namespace ultralight { #pragma pack(push, 1) /// /// @brief Rendering details for a View, to be used with your own GPUDriver /// /// When using your own GPUDriver, each View is rendered to an offscreen texture that you can /// display on a 3D quad in your application. This struct provides all the details you need to /// display the corresponding texture in your application. /// struct UExport RenderTarget { /// /// Whether this target is empty (null texture) /// bool is_empty; /// /// The viewport width (in device coordinates). /// uint32_t width; /// /// The viewport height (in device coordinates). /// uint32_t height; /// /// The GPUDriver-specific texture ID (you should bind the texture using your implementation of /// GPUDriver::BindTexture before drawing a quad). /// uint32_t texture_id; /// /// The texture width (in pixels). This may be padded. /// uint32_t texture_width; /// /// The texture height (in pixels). This may be padded. /// uint32_t texture_height; /// /// The pixel format of the texture. /// BitmapFormat texture_format; /// /// UV coordinates of the texture (this is needed because the texture may be padded). /// Rect uv_coords; /// /// The GPUDriver-specific render buffer ID. /// uint32_t render_buffer_id; RenderTarget(); }; #pragma pack(pop) } // namespace ultralight