mirror of
https://github.com/thunderbrewhq/thunderbrew
synced 2025-04-18 02:52:47 +03:00
feat(gx): handle scene lifecycle in d3d backend
This commit is contained in:
parent
9a15edb6e4
commit
69282c0c94
@ -750,6 +750,27 @@ void CGxDeviceD3d::IRsSendToHw(EGxRenderState which) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CGxDeviceD3d::ISceneBegin() {
|
||||||
|
if (this->m_context) {
|
||||||
|
// TODO
|
||||||
|
|
||||||
|
if (SUCCEEDED(this->m_d3dDevice->BeginScene())) {
|
||||||
|
this->m_inScene = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void CGxDeviceD3d::ISceneEnd() {
|
||||||
|
if (this->m_inScene) {
|
||||||
|
this->m_d3dDevice->EndScene();
|
||||||
|
this->m_inScene = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CGxDeviceD3d::ISetCaps(const CGxFormat& format) {
|
void CGxDeviceD3d::ISetCaps(const CGxFormat& format) {
|
||||||
// Texture stages
|
// Texture stages
|
||||||
|
|
||||||
@ -1243,6 +1264,27 @@ void CGxDeviceD3d::PoolSizeSet(CGxPool* pool, uint32_t size) {
|
|||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CGxDeviceD3d::ScenePresent() {
|
||||||
|
if (this->m_context) {
|
||||||
|
CGxDevice::ScenePresent();
|
||||||
|
this->ISceneEnd();
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
|
||||||
|
// TODO fixLag
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
|
||||||
|
if (FAILED(this->m_d3dDevice->Present(nullptr, nullptr, nullptr, nullptr))) {
|
||||||
|
this->m_context = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO stereo handling
|
||||||
|
}
|
||||||
|
|
||||||
|
this->ISceneBegin();
|
||||||
|
}
|
||||||
|
|
||||||
void CGxDeviceD3d::ShaderCreate(CGxShader* shaders[], EGxShTarget target, const char* a4, const char* a5, int32_t permutations) {
|
void CGxDeviceD3d::ShaderCreate(CGxShader* shaders[], EGxShTarget target, const char* a4, const char* a5, int32_t permutations) {
|
||||||
CGxDevice::ShaderCreate(shaders, target, a4, a5, permutations);
|
CGxDevice::ShaderCreate(shaders, target, a4, a5, permutations);
|
||||||
|
|
||||||
|
@ -224,6 +224,7 @@ class CGxDeviceD3d : public CGxDevice {
|
|||||||
int32_t m_d3dIsHwDevice = 0;
|
int32_t m_d3dIsHwDevice = 0;
|
||||||
LPDIRECT3DVERTEXDECLARATION9 m_d3dVertexDecl[GxVertexBufferFormats_Last] = { 0 };
|
LPDIRECT3DVERTEXDECLARATION9 m_d3dVertexDecl[GxVertexBufferFormats_Last] = { 0 };
|
||||||
D3DDISPLAYMODE m_desktopDisplayMode;
|
D3DDISPLAYMODE m_desktopDisplayMode;
|
||||||
|
int32_t m_inScene;
|
||||||
D3DFORMAT m_devAdapterFormat;
|
D3DFORMAT m_devAdapterFormat;
|
||||||
LPDIRECT3DVERTEXDECLARATION9 m_d3dCurrentVertexDecl;
|
LPDIRECT3DVERTEXDECLARATION9 m_d3dCurrentVertexDecl;
|
||||||
LPDIRECT3DINDEXBUFFER9 m_d3dCurrentIndexBuf;
|
LPDIRECT3DINDEXBUFFER9 m_d3dCurrentIndexBuf;
|
||||||
@ -240,6 +241,7 @@ class CGxDeviceD3d : public CGxDevice {
|
|||||||
virtual void DeviceWM(EGxWM wm, uintptr_t param1, uintptr_t param2);
|
virtual void DeviceWM(EGxWM wm, uintptr_t param1, uintptr_t param2);
|
||||||
virtual void CapsWindowSize(CRect& dst);
|
virtual void CapsWindowSize(CRect& dst);
|
||||||
virtual void CapsWindowSizeInScreenCoords(CRect& dst);
|
virtual void CapsWindowSizeInScreenCoords(CRect& dst);
|
||||||
|
virtual void ScenePresent();
|
||||||
virtual void Draw(CGxBatch* batch, int32_t indexed);
|
virtual void Draw(CGxBatch* batch, int32_t indexed);
|
||||||
virtual void PoolSizeSet(CGxPool* pool, uint32_t size);
|
virtual void PoolSizeSet(CGxPool* pool, uint32_t size);
|
||||||
virtual char* BufLock(CGxBuf* buf);
|
virtual char* BufLock(CGxBuf* buf);
|
||||||
@ -263,6 +265,8 @@ class CGxDeviceD3d : public CGxDevice {
|
|||||||
void ISetPresentParms(D3DPRESENT_PARAMETERS& d3dpp, const CGxFormat& format);
|
void ISetPresentParms(D3DPRESENT_PARAMETERS& d3dpp, const CGxFormat& format);
|
||||||
void IDestroyD3d();
|
void IDestroyD3d();
|
||||||
void IDestroyD3dDevice();
|
void IDestroyD3dDevice();
|
||||||
|
void ISceneBegin();
|
||||||
|
void ISceneEnd();
|
||||||
void ISetCaps(const CGxFormat& format);
|
void ISetCaps(const CGxFormat& format);
|
||||||
void ISetTexture(uint32_t tmu, CGxTex* texId);
|
void ISetTexture(uint32_t tmu, CGxTex* texId);
|
||||||
void ISetVertexBuffer(uint32_t stream, LPDIRECT3DVERTEXBUFFER9 buffer, uint32_t offset, uint32_t stride);
|
void ISetVertexBuffer(uint32_t stream, LPDIRECT3DVERTEXBUFFER9 buffer, uint32_t offset, uint32_t stride);
|
||||||
|
Loading…
Reference in New Issue
Block a user