mirror of
https://github.com/scratchfoundation/bgfx.git
synced 2024-11-28 18:45:54 -05:00
Updated docs.
This commit is contained in:
parent
a96837c1ea
commit
3dd237aefa
4 changed files with 122 additions and 61 deletions
|
@ -172,6 +172,15 @@ typedef struct bgfx_memory
|
|||
|
||||
} bgfx_memory_t;
|
||||
|
||||
/**
|
||||
*/
|
||||
typedef struct bgfx_transform
|
||||
{
|
||||
float* data; //< Pointer to first matrix.
|
||||
uint16_t num; //< Number of matrices.
|
||||
|
||||
} bgfx_transform_t;
|
||||
|
||||
/**
|
||||
* Vertex declaration.
|
||||
*/
|
||||
|
@ -1195,6 +1204,16 @@ BGFX_C_API void bgfx_set_scissor_cached(uint16_t _cache);
|
|||
*/
|
||||
BGFX_C_API uint32_t bgfx_set_transform(const void* _mtx, uint16_t _num);
|
||||
|
||||
/**
|
||||
* Reserve `_num` matrices in internal matrix cache. Pointer returned
|
||||
* can be modifed until `bgfx::frame` is called.
|
||||
*
|
||||
* @param _transform Pointer to `Transform` structure.
|
||||
* @param _num Number of matrices.
|
||||
* @returns index into matrix cache.
|
||||
*/
|
||||
BGFX_C_API uint32_t bgfx_alloc_transform(bgfx_transform_t* _transform, uint16_t _num);
|
||||
|
||||
/**
|
||||
* Set model matrix from matrix cache for draw primitive.
|
||||
*
|
||||
|
|
112
include/bgfx.h
112
include/bgfx.h
|
@ -40,13 +40,14 @@ namespace bgfx
|
|||
|
||||
struct RendererType
|
||||
{
|
||||
/// Renderer type enumeration.
|
||||
enum Enum
|
||||
{
|
||||
Null,
|
||||
Direct3D9,
|
||||
Direct3D11,
|
||||
OpenGLES,
|
||||
OpenGL,
|
||||
Null, //< No rendering.
|
||||
Direct3D9, //< Direct3D 9.0
|
||||
Direct3D11, //< Direct3D 11.0
|
||||
OpenGLES, //< OpenGL ES 2.0+
|
||||
OpenGL, //< OpenGL 2.1+
|
||||
|
||||
Count
|
||||
};
|
||||
|
@ -211,19 +212,48 @@ namespace bgfx
|
|||
/// If fatal code code is not Fatal::DebugCheck this callback is
|
||||
/// called on unrecoverable error. It's not safe to continue, inform
|
||||
/// user and terminate application from this call.
|
||||
///
|
||||
/// @param _code Fatal error code.
|
||||
/// @param _str More information about error.
|
||||
///
|
||||
virtual void fatal(Fatal::Enum _code, const char* _str) = 0;
|
||||
|
||||
/// Return size of for cached item. Return 0 if no cached item was
|
||||
/// found.
|
||||
///
|
||||
/// @param _id Cache id.
|
||||
/// @returns Number of bytes to read.
|
||||
///
|
||||
virtual uint32_t cacheReadSize(uint64_t _id) = 0;
|
||||
|
||||
/// Read cached item.
|
||||
///
|
||||
/// @param _id Cache id.
|
||||
/// @param _data Buffer where to read data.
|
||||
/// @param _size Size of data to read.
|
||||
///
|
||||
/// @returns True if data is read.
|
||||
///
|
||||
virtual bool cacheRead(uint64_t _id, void* _data, uint32_t _size) = 0;
|
||||
|
||||
/// Write cached item.
|
||||
///
|
||||
/// @param _id Cache id.
|
||||
/// @param _data Data to write.
|
||||
/// @param _size Size of data to write.
|
||||
///
|
||||
virtual void cacheWrite(uint64_t _id, const void* _data, uint32_t _size) = 0;
|
||||
|
||||
/// Screenshot captured. Screenshot format is always 4-byte BGRA.
|
||||
///
|
||||
/// @param _filePath File path.
|
||||
/// @param _width Image width.
|
||||
/// @param _height Image height.
|
||||
/// @param _pitch Number of bytes to skip to next line.
|
||||
/// @param _data Image data.
|
||||
/// @param _size Image size.
|
||||
/// @param _yflip If true image origin is bottom left.
|
||||
///
|
||||
virtual void screenShot(const char* _filePath, uint32_t _width, uint32_t _height, uint32_t _pitch, const void* _data, uint32_t _size, bool _yflip) = 0;
|
||||
|
||||
/// Called when capture begins.
|
||||
|
@ -233,6 +263,10 @@ namespace bgfx
|
|||
virtual void captureEnd() = 0;
|
||||
|
||||
/// Captured frame.
|
||||
///
|
||||
/// @param _data Image data.
|
||||
/// @param _size Image size.
|
||||
///
|
||||
virtual void captureFrame(const void* _data, uint32_t _size) = 0;
|
||||
};
|
||||
|
||||
|
@ -437,20 +471,38 @@ namespace bgfx
|
|||
///
|
||||
/// @param _type Select rendering backend. When set to RendererType::Count
|
||||
/// default rendering backend will be selected.
|
||||
/// See: `bgfx::RendererType`
|
||||
///
|
||||
/// @param _callback Provide application specific callback interface.
|
||||
/// See: CallbackI
|
||||
/// See: `bgfx::CallbackI`
|
||||
///
|
||||
/// @param _reallocator Custom allocator. When custom allocator is not
|
||||
/// specified, library uses default CRT allocator. The library assumes
|
||||
/// custom allocator is thread safe.
|
||||
/// icustom allocator is thread safe.
|
||||
///
|
||||
/// @attention C99 equivalent is `bgfx_init`.
|
||||
///
|
||||
void init(RendererType::Enum _type = RendererType::Count, CallbackI* _callback = NULL, bx::ReallocatorI* _reallocator = NULL);
|
||||
|
||||
/// Shutdown bgfx library.
|
||||
///
|
||||
/// @attention C99 equivalent is `bgfx_shutdown`.
|
||||
///
|
||||
void shutdown();
|
||||
|
||||
/// Reset graphic settings.
|
||||
///
|
||||
/// @param _width Main window width.
|
||||
/// @param _height Main window height.
|
||||
/// @param _flags
|
||||
/// - `BGFX_RESET_NONE` - No reset flags.
|
||||
/// - `BGFX_RESET_FULLSCREEN` - Not supported yet.
|
||||
/// - `BGFX_RESET_MSAA_X[2/4/8/16]` - Enable 2, 4, 8 or 16 x MSAA.
|
||||
/// - `BGFX_RESET_VSYNC` - Enable V-Sync.
|
||||
/// - `BGFX_RESET_CAPTURE` - Begin screen capture.
|
||||
///
|
||||
/// @attention C99 equivalent is `bgfx_reset`.
|
||||
///
|
||||
void reset(uint32_t _width, uint32_t _height, uint32_t _flags = BGFX_RESET_NONE);
|
||||
|
||||
/// Advance to next frame. When using multithreaded renderer, this call
|
||||
|
@ -459,7 +511,9 @@ namespace bgfx
|
|||
///
|
||||
/// @returns Current frame number. This might be used in conjunction with
|
||||
/// double/multi buffering data outside the library and passing it to
|
||||
/// library via makeRef calls.
|
||||
/// library via `bgfx::makeRef` calls.
|
||||
///
|
||||
/// @attention C99 equivalent is `bgfx_frame`.
|
||||
///
|
||||
uint32_t frame();
|
||||
|
||||
|
@ -468,13 +522,19 @@ namespace bgfx
|
|||
/// @remarks
|
||||
/// Library must be initialized.
|
||||
///
|
||||
/// @attention C99 equivalent is `bgfx_get_renderer_type`.
|
||||
///
|
||||
RendererType::Enum getRendererType();
|
||||
|
||||
/// Returns renderer capabilities.
|
||||
///
|
||||
/// @returns Pointer to static `bgfx::Caps` structure.
|
||||
///
|
||||
/// @remarks
|
||||
/// Library must be initialized.
|
||||
///
|
||||
/// @attention C99 equivalent is `bgfx_get_caps`.
|
||||
///
|
||||
const Caps* getCaps();
|
||||
|
||||
/// Allocate buffer to pass to bgfx calls. Data will be freed inside bgfx.
|
||||
|
@ -483,9 +543,9 @@ namespace bgfx
|
|||
/// Allocate buffer and copy data into it. Data will be freed inside bgfx.
|
||||
const Memory* copy(const void* _data, uint32_t _size);
|
||||
|
||||
/// Make reference to data to pass to bgfx. Unlike bgfx::alloc this call
|
||||
/// doesn't allocate memory for data. It just copies pointer to data.
|
||||
/// You must make sure data is available for at least 2 bgfx::frame calls.
|
||||
/// Make reference to data to pass to bgfx. Unlike `bgfx::alloc` this call
|
||||
/// doesn't allocate memory for data. It just copies pointer to data. You
|
||||
/// must make sure data is available for at least 2 `bgfx::frame` calls.
|
||||
const Memory* makeRef(const void* _data, uint32_t _size);
|
||||
|
||||
/// Set debug flags.
|
||||
|
@ -1037,6 +1097,15 @@ namespace bgfx
|
|||
///
|
||||
uint32_t setTransform(const void* _mtx, uint16_t _num = 1);
|
||||
|
||||
/// Reserve `_num` matrices in internal matrix cache. Pointer returned
|
||||
/// can be modifed until `bgfx::frame` is called.
|
||||
///
|
||||
/// @param _transform Pointer to `Transform` structure.
|
||||
/// @param _num Number of matrices.
|
||||
/// @returns index into matrix cache.
|
||||
///
|
||||
uint32_t allocTransform(Transform* _transform, uint16_t _num);
|
||||
|
||||
/// Set model matrix from matrix cache for draw primitive.
|
||||
///
|
||||
/// @param _cache Index in matrix cache.
|
||||
|
@ -1044,23 +1113,6 @@ namespace bgfx
|
|||
///
|
||||
void setTransform(uint32_t _cache, uint16_t _num = 1);
|
||||
|
||||
/// Reserve `_num` matrices in internal matrix cache. Pointer returned
|
||||
/// can be modifed until `bgfx::frame` is called.
|
||||
///
|
||||
/// @param _transform Pointer to `Transform` structure.
|
||||
/// @param _num Number of matrices.
|
||||
///
|
||||
void allocTransform(Transform* _transform, uint16_t _num);
|
||||
|
||||
/// Set model matrix from `Transform` structure.
|
||||
///
|
||||
/// @param _transform Pointer to `Transform` structure returned by
|
||||
// `bgfx::allocTransform`.
|
||||
/// @param _first First matrix.
|
||||
/// @param _num Number of matrices.
|
||||
///
|
||||
void setTransform(const Transform* _transform, uint32_t _first, uint16_t _num);
|
||||
|
||||
/// Set shader uniform parameter for draw primitive.
|
||||
void setUniform(UniformHandle _handle, const void* _value, uint16_t _num = 1);
|
||||
|
||||
|
@ -1151,10 +1203,10 @@ namespace bgfx
|
|||
|
||||
/// Request screen shot.
|
||||
///
|
||||
/// @param _filePath Will be passed to CallbackI::screenShot callback.
|
||||
/// @param _filePath Will be passed to `bgfx::CallbackI::screenShot` callback.
|
||||
///
|
||||
/// @remarks
|
||||
/// CallbackI::screenShot must be implemented.
|
||||
/// `bgfx::CallbackI::screenShot` must be implemented.
|
||||
///
|
||||
void saveScreenShot(const char* _filePath);
|
||||
|
||||
|
|
23
src/bgfx.cpp
23
src/bgfx.cpp
|
@ -2592,24 +2592,18 @@ again:
|
|||
return s_ctx->setTransform(_mtx, _num);
|
||||
}
|
||||
|
||||
uint32_t allocTransform(Transform* _transform, uint16_t _num)
|
||||
{
|
||||
BGFX_CHECK_MAIN_THREAD();
|
||||
return s_ctx->allocTransform(_transform, _num);
|
||||
}
|
||||
|
||||
void setTransform(uint32_t _cache, uint16_t _num)
|
||||
{
|
||||
BGFX_CHECK_MAIN_THREAD();
|
||||
s_ctx->setTransform(_cache, _num);
|
||||
}
|
||||
|
||||
void allocTransform(Transform* _transform, uint16_t _num)
|
||||
{
|
||||
BGFX_CHECK_MAIN_THREAD();
|
||||
s_ctx->allocTransform(_transform, _num);
|
||||
}
|
||||
|
||||
void setTransform(const Transform* _transform, uint32_t _first, uint16_t _num)
|
||||
{
|
||||
BGFX_CHECK_MAIN_THREAD();
|
||||
s_ctx->setTransform(_transform, _first, _num);
|
||||
}
|
||||
|
||||
void setUniform(UniformHandle _handle, const void* _value, uint16_t _num)
|
||||
{
|
||||
BGFX_CHECK_MAIN_THREAD();
|
||||
|
@ -3224,6 +3218,11 @@ BGFX_C_API uint32_t bgfx_set_transform(const void* _mtx, uint16_t _num)
|
|||
return bgfx::setTransform(_mtx, _num);
|
||||
}
|
||||
|
||||
BGFX_C_API uint32_t bgfx_alloc_transform(bgfx_transform_t* _transform, uint16_t _num)
|
||||
{
|
||||
return bgfx::allocTransform( (bgfx::Transform*)_transform, _num);
|
||||
}
|
||||
|
||||
BGFX_C_API void bgfx_set_transform_cached(uint32_t _cache, uint16_t _num)
|
||||
{
|
||||
bgfx::setTransform(_cache, _num);
|
||||
|
|
29
src/bgfx_p.h
29
src/bgfx_p.h
|
@ -1248,22 +1248,18 @@ namespace bgfx
|
|||
return m_draw.m_matrix;
|
||||
}
|
||||
|
||||
void setTransform(uint32_t _cache, uint16_t _num)
|
||||
{
|
||||
m_draw.m_matrix = _cache;
|
||||
m_draw.m_num = _num;
|
||||
}
|
||||
|
||||
void allocTransform(Transform* _transform, uint16_t _num)
|
||||
uint32_t allocTransform(Transform* _transform, uint16_t _num)
|
||||
{
|
||||
uint32_t first = m_matrixCache.reserve(&_num);
|
||||
_transform->data = m_matrixCache.toPtr(first);
|
||||
_transform->num = _num;
|
||||
|
||||
return first;
|
||||
}
|
||||
|
||||
void setTransform(const Transform* _transform, uint32_t _first, uint16_t _num)
|
||||
void setTransform(uint32_t _cache, uint16_t _num)
|
||||
{
|
||||
m_draw.m_matrix = m_matrixCache.fromPtr(_transform->data) + _first;
|
||||
m_draw.m_matrix = _cache;
|
||||
m_draw.m_num = _num;
|
||||
}
|
||||
|
||||
|
@ -2781,21 +2777,16 @@ namespace bgfx
|
|||
return m_submit->setTransform(_mtx, _num);
|
||||
}
|
||||
|
||||
BGFX_API_FUNC(uint32_t allocTransform(Transform* _transform, uint16_t _num) )
|
||||
{
|
||||
return m_submit->allocTransform(_transform, _num);
|
||||
}
|
||||
|
||||
BGFX_API_FUNC(void setTransform(uint32_t _cache, uint16_t _num) )
|
||||
{
|
||||
m_submit->setTransform(_cache, _num);
|
||||
}
|
||||
|
||||
BGFX_API_FUNC(void allocTransform(Transform* _transform, uint16_t _num) )
|
||||
{
|
||||
m_submit->allocTransform(_transform, _num);
|
||||
}
|
||||
|
||||
BGFX_API_FUNC(void setTransform(const Transform* _transform, uint32_t _first, uint16_t _num) )
|
||||
{
|
||||
m_submit->setTransform(_transform, _first, _num);
|
||||
}
|
||||
|
||||
BGFX_API_FUNC(void setUniform(UniformHandle _handle, const void* _value, uint16_t _num) )
|
||||
{
|
||||
UniformRef& uniform = m_uniformRef[_handle.idx];
|
||||
|
|
Loading…
Reference in a new issue