slot 0.0.1
A real time UI render framework
载入中...
搜索中...
未找到
UIObject.h
浏览该文件的文档.
1//
2// Created by zhou_zhengming on 2026/5/17.
3//
4
5#pragma once
6#include "GameObject.h"
7
8#include <cstddef>
9
10namespace z8
11{
14 // 与所有 b0 Shader 共享相同前缀,后续字段才能在同一根签名下保持稳定偏移。
16 DirectX::XMFLOAT4 Color = {0.35f, 0.35f, 0.38f, 1.0f};
17 // left/top/right/bottom 像素裁剪框;由 Layout 逐层求交后写入。
18 DirectX::XMFLOAT4 ClipRect = {-100000.0f, -100000.0f,
19 100000.0f, 100000.0f};
20 DirectX::XMFLOAT4 BorderColor = {0.0f, 0.0f, 0.0f, 0.0f};
21 // left/top/right/bottom 屏幕像素边界让 Shader 能按固定像素宽度绘制边框。
22 DirectX::XMFLOAT4 RectBounds{};
23 float BorderWidth = 0.0f;
24 float CornerRadius = 0.0f;
25 float VisualType = 0.0f;
26 float ImageKind = 0.0f;
27};
28static_assert(offsetof(UIObjectConst, Color) == 128,
29 "UI color must follow the shared transform matrices.");
30static_assert(sizeof(UIObjectConst) == 208,
31 "UIObjectConst must match asset/shader/Core/Const.hlsl b0 layout.");
32
38class UIObject : public GameObjectImpl<UIObjectConst>{
39public:
40 UIObject();
41 void SetPosition(float x, float y, float w, float h);
42 void SetScale(float x, float y);
43 void SetColor(const DirectX::XMFLOAT4& color) { Const.Color = color; }
44 const DirectX::XMFLOAT4& GetColor() const { return Const.Color; }
45 void SetClipRect(const DirectX::XMFLOAT4& clipRect) {
47 }
48 const DirectX::XMFLOAT4& GetClipRect() const { return Const.ClipRect; }
49 void SetBorder(const DirectX::XMFLOAT4 &color, float width) {
52 }
53 const DirectX::XMFLOAT4 &GetBorderColor() const {
54 return Const.BorderColor;
55 }
56 float GetBorderWidth() const { return Const.BorderWidth; }
57 float GetCornerRadius() const { return Const.CornerRadius; }
58 void SetCornerRadius(float radius) { Const.CornerRadius = radius; }
59 void SetImageKind(float kind) {
60 Const.VisualType = 1.0f;
62 }
63 void Update(Timer*) override;
64};
65}
66
Definition Color.h:19
包含常量缓冲区的物体
Definition GameObject.h:74
UIObjectConst Const
Definition GameObject.h:76
资源的强类型引用,同时覆盖持久化 ID 与运行时索引两种边界。
Definition ResourceRef.h:36
Definition Timer.h:9
屏幕 UI 层的物体
Definition UIObject.h:38
const DirectX::XMFLOAT4 & GetClipRect() const
Definition UIObject.h:48
void SetColor(const DirectX::XMFLOAT4 &color)
Definition UIObject.h:43
const DirectX::XMFLOAT4 & GetBorderColor() const
Definition UIObject.h:53
const DirectX::XMFLOAT4 & GetColor() const
Definition UIObject.h:44
void SetPosition(float x, float y, float w, float h)
Definition UIObject.cpp:21
void SetCornerRadius(float radius)
Definition UIObject.h:58
void SetClipRect(const DirectX::XMFLOAT4 &clipRect)
Definition UIObject.h:45
float GetCornerRadius() const
Definition UIObject.h:57
void SetImageKind(float kind)
Definition UIObject.h:59
void SetScale(float x, float y)
Definition UIObject.cpp:29
void Update(Timer *) override
Definition UIObject.cpp:35
void SetBorder(const DirectX::XMFLOAT4 &color, float width)
Definition UIObject.h:49
float GetBorderWidth() const
Definition UIObject.h:56
UIObject()
Definition UIObject.cpp:16
世界矩阵 描述坐标系,左手坐标系 使用 DirectX12 坐标系的描述
Definition Application.h:15
普通和 UI 顶点着色器共享的对象变换 ABI。
Definition GameObject.h:24
Definition UIObject.h:13
DirectX::XMFLOAT4 ClipRect
Definition UIObject.h:18
DirectX::XMFLOAT4 BorderColor
Definition UIObject.h:20
float BorderWidth
Definition UIObject.h:23
float VisualType
Definition UIObject.h:25
DirectX::XMFLOAT4 Color
Definition UIObject.h:16
ObjectTransformConst Matrices
Definition UIObject.h:15
float ImageKind
Definition UIObject.h:26
float CornerRadius
Definition UIObject.h:24
DirectX::XMFLOAT4 RectBounds
Definition UIObject.h:22