Add OpenGLFence
This commit is contained in:
@@ -134,6 +134,7 @@ add_library(XCEngine STATIC
|
|||||||
include/XCEngine/RHI/OpenGL/OpenGLPipelineState.h
|
include/XCEngine/RHI/OpenGL/OpenGLPipelineState.h
|
||||||
include/XCEngine/RHI/OpenGL/OpenGLCommandList.h
|
include/XCEngine/RHI/OpenGL/OpenGLCommandList.h
|
||||||
include/XCEngine/RHI/OpenGL/OpenGLSwapChain.h
|
include/XCEngine/RHI/OpenGL/OpenGLSwapChain.h
|
||||||
|
include/XCEngine/RHI/OpenGL/OpenGLFence.h
|
||||||
src/RHI/OpenGL/OpenGLDevice.cpp
|
src/RHI/OpenGL/OpenGLDevice.cpp
|
||||||
src/RHI/OpenGL/OpenGLShader.cpp
|
src/RHI/OpenGL/OpenGLShader.cpp
|
||||||
src/RHI/OpenGL/OpenGLBuffer.cpp
|
src/RHI/OpenGL/OpenGLBuffer.cpp
|
||||||
@@ -142,6 +143,7 @@ add_library(XCEngine STATIC
|
|||||||
src/RHI/OpenGL/OpenGLPipelineState.cpp
|
src/RHI/OpenGL/OpenGLPipelineState.cpp
|
||||||
src/RHI/OpenGL/OpenGLCommandList.cpp
|
src/RHI/OpenGL/OpenGLCommandList.cpp
|
||||||
src/RHI/OpenGL/OpenGLSwapChain.cpp
|
src/RHI/OpenGL/OpenGLSwapChain.cpp
|
||||||
|
src/RHI/OpenGL/OpenGLFence.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(XCEngine PUBLIC
|
target_include_directories(XCEngine PUBLIC
|
||||||
|
|||||||
30
engine/include/XCEngine/RHI/OpenGL/OpenGLFence.h
Normal file
30
engine/include/XCEngine/RHI/OpenGL/OpenGLFence.h
Normal 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
|
||||||
43
engine/src/RHI/OpenGL/OpenGLFence.cpp
Normal file
43
engine/src/RHI/OpenGL/OpenGLFence.cpp
Normal 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
|
||||||
Reference in New Issue
Block a user