summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/examples/common/bgfx_utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/examples/common/bgfx_utils.cpp')
-rw-r--r--3rdparty/bgfx/examples/common/bgfx_utils.cpp82
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)
{