Files
XCEngine/engine/include/XCEngine/RHI/OpenGL/OpenGLFence.h
ssdfasd af718279ff feat(RHI): 实现 RHIFence 抽象基类
- 新增 RHIFence 抽象基类
- D3D12Fence 继承 RHIFence
- OpenGLFence 继承 RHIFence
- 文档更新 RHIFence 差异处理策略
2026-03-17 17:36:17 +08:00

46 lines
885 B
C++

#pragma once
#include <GLFW/glfw3.h>
#include <cstdint>
#include "../RHIFence.h"
namespace XCEngine {
namespace RHI {
enum class FenceStatus {
Signaled,
Unsignaled,
Error
};
class OpenGLFence : public RHIFence {
public:
OpenGLFence();
~OpenGLFence() override;
bool Initialize(bool signaled = false);
void Shutdown() override;
void Signal() override;
void Signal(uint64_t value) override;
void Wait(uint64_t value) override;
void Reset();
bool IsSignaled() const override;
FenceStatus GetStatus() const;
uint64_t GetCompletedValue() const override;
uint64_t GetCurrentValue() const { return m_fenceValue; }
void* GetNativeHandle() override { return m_sync; }
private:
void* m_sync;
uint64_t m_fenceValue;
uint64_t m_completedValue;
bool m_signaled;
};
} // namespace RHI
} // namespace XCEngine