diff options
Diffstat (limited to '3rdparty/bgfx/examples/common/bgfx_utils.cpp')
-rw-r--r-- | 3rdparty/bgfx/examples/common/bgfx_utils.cpp | 82 |
1 files changed, 53 insertions, 29 deletions
diff --git a/3rdparty/bgfx/examples/common/bgfx_utils.cpp b/3rdparty/bgfx/examples/common/bgfx_utils.cpp index edea94caf27..befcd32505b 100644 --- a/3rdparty/bgfx/examples/common/bgfx_utils.cpp +++ b/3rdparty/bgfx/examples/common/bgfx_utils.cpp @@ -13,7 +13,7 @@ namespace stl = tinystl; #include <bgfx/bgfx.h> #include <bx/commandline.h> #include <bx/endian.h> -#include <bx/fpumath.h> +#include <bx/math.h> #include <bx/readerwriter.h> #include <bx/string.h> #include "entry/entry.h" @@ -21,6 +21,8 @@ namespace stl = tinystl; #include "bgfx_utils.h" +#include <bimg/decode.h> + void* load(bx::FileReaderI* _reader, bx::AllocatorI* _allocator, const char* _filePath, uint32_t* _size) { if (bx::open(_reader, _filePath) ) @@ -117,11 +119,14 @@ static bgfx::ShaderHandle loadShader(bx::FileReaderI* _reader, const char* _name break; } - bx::strlncpy(filePath, BX_COUNTOF(filePath), shaderPath); - bx::strlncat(filePath, BX_COUNTOF(filePath), _name); - bx::strlncat(filePath, BX_COUNTOF(filePath), ".bin"); + bx::strCopy(filePath, BX_COUNTOF(filePath), shaderPath); + bx::strCat(filePath, BX_COUNTOF(filePath), _name); + bx::strCat(filePath, BX_COUNTOF(filePath), ".bin"); + + bgfx::ShaderHandle handle = bgfx::createShader(loadMem(_reader, filePath) ); + bgfx::setName(handle, filePath); - return bgfx::createShader(loadMem(_reader, filePath) ); + return handle; } bgfx::ShaderHandle loadShader(const char* _name) @@ -149,11 +154,11 @@ bgfx::ProgramHandle loadProgram(const char* _vsName, const char* _fsName) static void imageReleaseCb(void* _ptr, void* _userData) { BX_UNUSED(_ptr); - bgfx::ImageContainer* imageContainer = (bgfx::ImageContainer*)_userData; - bgfx::imageFree(imageContainer); + bimg::ImageContainer* imageContainer = (bimg::ImageContainer*)_userData; + bimg::imageFree(imageContainer); } -bgfx::TextureHandle loadTexture(bx::FileReaderI* _reader, const char* _filePath, uint32_t _flags, uint8_t _skip, bgfx::TextureInfo* _info) +bgfx::TextureHandle loadTexture(bx::FileReaderI* _reader, const char* _filePath, uint32_t _flags, uint8_t _skip, bgfx::TextureInfo* _info, bimg::Orientation::Enum* _orientation) { BX_UNUSED(_skip); bgfx::TextureHandle handle = BGFX_INVALID_HANDLE; @@ -162,10 +167,15 @@ bgfx::TextureHandle loadTexture(bx::FileReaderI* _reader, const char* _filePath, void* data = load(_reader, entry::getAllocator(), _filePath, &size); if (NULL != data) { - bgfx::ImageContainer* imageContainer = bgfx::imageParse(entry::getAllocator(), data, size); + bimg::ImageContainer* imageContainer = bimg::imageParse(entry::getAllocator(), data, size); if (NULL != imageContainer) { + if (NULL != _orientation) + { + *_orientation = imageContainer->m_orientation; + } + const bgfx::Memory* mem = bgfx::makeRef( imageContainer->m_data , imageContainer->m_size @@ -180,7 +190,19 @@ bgfx::TextureHandle loadTexture(bx::FileReaderI* _reader, const char* _filePath, uint16_t(imageContainer->m_width) , 1 < imageContainer->m_numMips , imageContainer->m_numLayers - , imageContainer->m_format + , bgfx::TextureFormat::Enum(imageContainer->m_format) + , _flags + , mem + ); + } + else if (1 < imageContainer->m_depth) + { + handle = bgfx::createTexture3D( + uint16_t(imageContainer->m_width) + , uint16_t(imageContainer->m_height) + , uint16_t(imageContainer->m_depth) + , 1 < imageContainer->m_numMips + , bgfx::TextureFormat::Enum(imageContainer->m_format) , _flags , mem ); @@ -192,23 +214,25 @@ bgfx::TextureHandle loadTexture(bx::FileReaderI* _reader, const char* _filePath, , uint16_t(imageContainer->m_height) , 1 < imageContainer->m_numMips , imageContainer->m_numLayers - , imageContainer->m_format + , bgfx::TextureFormat::Enum(imageContainer->m_format) , _flags , mem ); } + bgfx::setName(handle, _filePath); + if (NULL != _info) { bgfx::calcTextureSize( *_info , uint16_t(imageContainer->m_width) , uint16_t(imageContainer->m_height) - , 0 - , false - , false - , 1 - , imageContainer->m_format + , uint16_t(imageContainer->m_depth) + , imageContainer->m_cubeMap + , 1 < imageContainer->m_numMips + , imageContainer->m_numLayers + , bgfx::TextureFormat::Enum(imageContainer->m_format) ); } } @@ -217,17 +241,17 @@ bgfx::TextureHandle loadTexture(bx::FileReaderI* _reader, const char* _filePath, return handle; } -bgfx::TextureHandle loadTexture(const char* _name, uint32_t _flags, uint8_t _skip, bgfx::TextureInfo* _info) +bgfx::TextureHandle loadTexture(const char* _name, uint32_t _flags, uint8_t _skip, bgfx::TextureInfo* _info, bimg::Orientation::Enum* _orientation) { - return loadTexture(entry::getFileReader(), _name, _flags, _skip, _info); + return loadTexture(entry::getFileReader(), _name, _flags, _skip, _info, _orientation); } -bgfx::ImageContainer* imageLoad(const char* _filePath, bgfx::TextureFormat::Enum _dstFormat) +bimg::ImageContainer* imageLoad(const char* _filePath, bgfx::TextureFormat::Enum _dstFormat) { uint32_t size = 0; void* data = loadMem(entry::getFileReader(), entry::getAllocator(), _filePath, &size); - return bgfx::imageParse(entry::getAllocator(), data, size, _dstFormat); + return bimg::imageParse(entry::getAllocator(), data, size, bimg::TextureFormat::Enum(_dstFormat) ); } void calcTangents(void* _vertices, uint16_t _numVertices, bgfx::VertexDecl _decl, const uint16_t* _indices, uint32_t _numIndices) @@ -371,8 +395,8 @@ struct Group void reset() { - m_vbh.idx = bgfx::invalidHandle; - m_ibh.idx = bgfx::invalidHandle; + m_vbh.idx = bgfx::kInvalidHandle; + m_ibh.idx = bgfx::kInvalidHandle; m_prims.clear(); } @@ -513,17 +537,17 @@ struct Mesh for (GroupArray::const_iterator it = m_groups.begin(), itEnd = m_groups.end(); it != itEnd; ++it) { const Group& group = *it; - bgfx::destroyVertexBuffer(group.m_vbh); + bgfx::destroy(group.m_vbh); if (bgfx::isValid(group.m_ibh) ) { - bgfx::destroyIndexBuffer(group.m_ibh); + bgfx::destroy(group.m_ibh); } } m_groups.clear(); } - void submit(uint8_t _id, bgfx::ProgramHandle _program, const float* _mtx, uint64_t _state) const + void submit(bgfx::ViewId _id, bgfx::ProgramHandle _program, const float* _mtx, uint64_t _state) const { if (BGFX_STATE_MASK == _state) { @@ -545,7 +569,7 @@ struct Mesh const Group& group = *it; bgfx::setIndexBuffer(group.m_ibh); - bgfx::setVertexBuffer(group.m_vbh); + bgfx::setVertexBuffer(0, group.m_vbh); bgfx::submit(_id, _program, 0, it != itEnd-1); } } @@ -576,7 +600,7 @@ struct Mesh const Group& group = *it; bgfx::setIndexBuffer(group.m_ibh); - bgfx::setVertexBuffer(group.m_vbh); + bgfx::setVertexBuffer(0, group.m_vbh); bgfx::submit(state.m_viewId, state.m_program, 0, it != itEnd-1); } } @@ -624,7 +648,7 @@ void meshStateDestroy(MeshState* _meshState) BX_FREE(entry::getAllocator(), _meshState); } -void meshSubmit(const Mesh* _mesh, uint8_t _id, bgfx::ProgramHandle _program, const float* _mtx, uint64_t _state) +void meshSubmit(const Mesh* _mesh, bgfx::ViewId _id, bgfx::ProgramHandle _program, const float* _mtx, uint64_t _state) { _mesh->submit(_id, _program, _mtx, _state); } @@ -634,7 +658,7 @@ void meshSubmit(const Mesh* _mesh, const MeshState*const* _state, uint8_t _numPa _mesh->submit(_state, _numPasses, _mtx, _numMatrices); } -Args::Args(int _argc, char** _argv) +Args::Args(int _argc, const char* const* _argv) : m_type(bgfx::RendererType::Count) , m_pciId(BGFX_PCI_ID_NONE) { |