Fix RHI texture binding and add pure quad test
This commit is contained in:
@@ -142,6 +142,7 @@ inline DXGI_FORMAT ToD3D12(Format format) {
|
||||
case Format::R32G32B32A32_Float: return DXGI_FORMAT_R32G32B32A32_FLOAT;
|
||||
case Format::R16_Float: return DXGI_FORMAT_R16_FLOAT;
|
||||
case Format::R32_Float: return DXGI_FORMAT_R32_FLOAT;
|
||||
case Format::R32G32_Float: return DXGI_FORMAT_R32G32_FLOAT;
|
||||
case Format::D16_UNorm: return DXGI_FORMAT_D16_UNORM;
|
||||
case Format::D24_UNorm_S8_UInt: return DXGI_FORMAT_D24_UNORM_S8_UINT;
|
||||
case Format::D32_Float: return DXGI_FORMAT_D32_FLOAT;
|
||||
@@ -168,6 +169,7 @@ inline Format FromD3D12(DXGI_FORMAT format) {
|
||||
case DXGI_FORMAT_R32G32B32A32_FLOAT: return Format::R32G32B32A32_Float;
|
||||
case DXGI_FORMAT_R16_FLOAT: return Format::R16_Float;
|
||||
case DXGI_FORMAT_R32_FLOAT: return Format::R32_Float;
|
||||
case DXGI_FORMAT_R32G32_FLOAT: return Format::R32G32_Float;
|
||||
case DXGI_FORMAT_D16_UNORM: return Format::D16_UNorm;
|
||||
case DXGI_FORMAT_D24_UNORM_S8_UINT: return Format::D24_UNorm_S8_UInt;
|
||||
case DXGI_FORMAT_D32_FLOAT: return Format::D32_Float;
|
||||
@@ -319,4 +321,4 @@ inline D3D12_COMMAND_LIST_TYPE ToD3D12(CommandQueueType type) {
|
||||
}
|
||||
|
||||
} // namespace RHI
|
||||
} // namespace XCEngine
|
||||
} // namespace XCEngine
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include <d3d12.h>
|
||||
#include <wrl/client.h>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
#include "../RHIPipelineLayout.h"
|
||||
#include "D3D12RootSignature.h"
|
||||
@@ -36,7 +37,8 @@ private:
|
||||
D3D12Device* m_device;
|
||||
std::unordered_map<uint32_t, uint32_t> m_registerToRootIndex;
|
||||
std::vector<D3D12_ROOT_PARAMETER> m_rootParameters;
|
||||
std::vector<D3D12_DESCRIPTOR_RANGE> m_descriptorRanges;
|
||||
};
|
||||
|
||||
} // namespace RHI
|
||||
} // namespace XCEngine
|
||||
} // namespace XCEngine
|
||||
|
||||
@@ -19,7 +19,7 @@ public:
|
||||
bool Initialize(ID3D12Device* device, const D3D12_SAMPLER_DESC& desc);
|
||||
void Shutdown() override;
|
||||
|
||||
D3D12_SAMPLER_DESC GetDesc() const { return m_desc; }
|
||||
const D3D12_SAMPLER_DESC& GetDesc() const { return m_desc; }
|
||||
|
||||
void* GetNativeHandle() override { return &m_desc; }
|
||||
unsigned int GetID() override { return m_id; }
|
||||
|
||||
@@ -20,7 +20,8 @@ public:
|
||||
bool Initialize(ID3D12Device* device, const D3D12_RESOURCE_DESC& desc, D3D12_RESOURCE_STATES initialState = D3D12_RESOURCE_STATE_COMMON);
|
||||
bool InitializeFromExisting(ID3D12Resource* resource, bool ownsResource = false);
|
||||
bool InitializeFromData(ID3D12Device* device, ID3D12GraphicsCommandList* commandList,
|
||||
const void* pixelData, uint32_t width, uint32_t height, DXGI_FORMAT format, uint32_t rowPitch = 0);
|
||||
const void* pixelData, uint32_t width, uint32_t height, DXGI_FORMAT format, uint32_t rowPitch = 0,
|
||||
ComPtr<ID3D12Resource>* uploadBuffer = nullptr);
|
||||
bool InitializeDepthStencil(ID3D12Device* device, uint32_t width, uint32_t height, DXGI_FORMAT format = DXGI_FORMAT_D24_UNORM_S8_UINT);
|
||||
void Shutdown() override;
|
||||
|
||||
|
||||
@@ -126,6 +126,9 @@ inline void ToOpenGLFormat(OpenGLFormat fmt, GLint& internalFormat, GLenum& glFo
|
||||
case OpenGLFormat::RG8:
|
||||
internalFormat = GL_RG8; glFormat = GL_RG; glType = GL_UNSIGNED_BYTE;
|
||||
break;
|
||||
case OpenGLFormat::RG32F:
|
||||
internalFormat = GL_RG32F; glFormat = GL_RG; glType = GL_FLOAT;
|
||||
break;
|
||||
case OpenGLFormat::RGBA8:
|
||||
internalFormat = GL_RGBA8; glFormat = GL_RGBA; glType = GL_UNSIGNED_BYTE;
|
||||
break;
|
||||
|
||||
@@ -20,6 +20,7 @@ enum class OpenGLTextureType {
|
||||
enum class OpenGLFormat {
|
||||
R8,
|
||||
RG8,
|
||||
RG32F,
|
||||
RGBA8,
|
||||
RGBA16F,
|
||||
RGBA32F,
|
||||
@@ -32,6 +33,7 @@ enum class OpenGLFormat {
|
||||
enum class OpenGLInternalFormat {
|
||||
R8 = 1,
|
||||
RG8 = 2,
|
||||
RG32F = 13,
|
||||
RGBA8 = 4,
|
||||
RGBA16F = 11,
|
||||
RGBA32F = 16,
|
||||
|
||||
@@ -314,7 +314,8 @@ enum class Format : uint32_t {
|
||||
BC6H_UF16,
|
||||
BC7_UNorm,
|
||||
R32G32B32A32_UInt,
|
||||
R32_UInt
|
||||
R32_UInt,
|
||||
R32G32_Float
|
||||
};
|
||||
|
||||
enum class ResourceStates : uint32_t {
|
||||
|
||||
Reference in New Issue
Block a user