Add OpenGLFence

This commit is contained in:
2026-03-16 18:48:12 +08:00
parent 377f43260b
commit aee4ae88db
3 changed files with 75 additions and 0 deletions

View File

@@ -134,6 +134,7 @@ add_library(XCEngine STATIC
include/XCEngine/RHI/OpenGL/OpenGLPipelineState.h
include/XCEngine/RHI/OpenGL/OpenGLCommandList.h
include/XCEngine/RHI/OpenGL/OpenGLSwapChain.h
include/XCEngine/RHI/OpenGL/OpenGLFence.h
src/RHI/OpenGL/OpenGLDevice.cpp
src/RHI/OpenGL/OpenGLShader.cpp
src/RHI/OpenGL/OpenGLBuffer.cpp
@@ -142,6 +143,7 @@ add_library(XCEngine STATIC
src/RHI/OpenGL/OpenGLPipelineState.cpp
src/RHI/OpenGL/OpenGLCommandList.cpp
src/RHI/OpenGL/OpenGLSwapChain.cpp
src/RHI/OpenGL/OpenGLFence.cpp
)
target_include_directories(XCEngine PUBLIC

View File

@@ -0,0 +1,30 @@
#pragma once
#include <GLFW/glfw3.h>
#include <cstdint>
namespace XCEngine {
namespace RHI {
class OpenGLFence {
public:
OpenGLFence();
~OpenGLFence();
bool Initialize();
void Shutdown();
void Signal();
void Wait();
void Reset();
bool IsSignaled() const;
private:
unsigned int m_fence;
int64_t m_fenceValue;
bool m_signaled;
};
} // namespace RHI
} // namespace XCEngine

View File

@@ -0,0 +1,43 @@
#define GLFW_INCLUDE_NONE
#include "XCEngine/RHI/OpenGL/OpenGLFence.h"
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <thread>
#include <chrono>
namespace XCEngine {
namespace RHI {
OpenGLFence::OpenGLFence() : m_fence(0), m_fenceValue(0), m_signaled(false) {
}
OpenGLFence::~OpenGLFence() {
}
bool OpenGLFence::Initialize() {
return true;
}
void OpenGLFence::Shutdown() {
}
void OpenGLFence::Signal() {
glFinish();
m_signaled = true;
m_fenceValue++;
}
void OpenGLFence::Wait() {
glFinish();
}
void OpenGLFence::Reset() {
m_signaled = false;
}
bool OpenGLFence::IsSignaled() const {
return m_signaled;
}
} // namespace RHI
} // namespace XCEngine