refactoring + texture projection
This commit is contained in:
@@ -23,6 +23,11 @@ namespace thermion
|
||||
TTexture *tColor,
|
||||
TTexture *tDepth)
|
||||
{
|
||||
if(!tColor || !tDepth) {
|
||||
ERROR("Color & depth attachments must be provided");
|
||||
return nullptr;
|
||||
}
|
||||
TRACE("Creating render target %dx%d", width, height);
|
||||
auto engine = reinterpret_cast<filament::Engine *>(tEngine);
|
||||
auto color = reinterpret_cast<filament::Texture *>(tColor);
|
||||
auto depth = reinterpret_cast<filament::Texture *>(tDepth);
|
||||
|
||||
@@ -93,7 +93,8 @@ EMSCRIPTEN_KEEPALIVE void Renderer_readPixels(
|
||||
TRenderTarget *tRenderTarget,
|
||||
TPixelDataFormat tPixelBufferFormat,
|
||||
TPixelDataType tPixelDataType,
|
||||
uint8_t *out) {
|
||||
uint8_t *out,
|
||||
size_t outLength) {
|
||||
|
||||
auto *renderer = reinterpret_cast<filament::Renderer *>(tRenderer);
|
||||
auto *renderTarget = reinterpret_cast<filament::RenderTarget *>(tRenderTarget);
|
||||
@@ -101,8 +102,6 @@ EMSCRIPTEN_KEEPALIVE void Renderer_readPixels(
|
||||
|
||||
filament::Viewport const &vp = view->getViewport();
|
||||
|
||||
size_t pixelBufferSize = vp.width * vp.height * 4;
|
||||
|
||||
filament::backend::PixelDataFormat pixelBufferFormat = static_cast<filament::backend::PixelDataFormat>(tPixelBufferFormat);
|
||||
filament::backend::PixelDataType pixelDataType = static_cast<filament::backend::PixelDataType>(tPixelDataType);
|
||||
|
||||
@@ -114,7 +113,7 @@ EMSCRIPTEN_KEEPALIVE void Renderer_readPixels(
|
||||
|
||||
|
||||
auto pbd = filament::Texture::PixelBufferDescriptor(
|
||||
out, pixelBufferSize,
|
||||
out, outLength,
|
||||
pixelBufferFormat,
|
||||
pixelDataType,
|
||||
dispatcher,
|
||||
|
||||
@@ -231,6 +231,11 @@ using namespace filament;
|
||||
view->setScene(scene);
|
||||
}
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE void View_setFrontFaceWindingInverted(TView *tView, bool inverted) {
|
||||
auto *view = reinterpret_cast<View*>(tView);
|
||||
view->setFrontFaceWindingInverted(inverted);
|
||||
}
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -362,11 +362,12 @@ extern "C"
|
||||
TPixelDataFormat tPixelBufferFormat,
|
||||
TPixelDataType tPixelDataType,
|
||||
uint8_t *out,
|
||||
size_t outLength,
|
||||
void (*onComplete)()) {
|
||||
std::packaged_task<void()> lambda(
|
||||
[=]() mutable
|
||||
{
|
||||
Renderer_readPixels(tRenderer, tView, tRenderTarget, tPixelBufferFormat, tPixelDataType, out);
|
||||
Renderer_readPixels(tRenderer, tView, tRenderTarget, tPixelBufferFormat, tPixelDataType, out, outLength);
|
||||
onComplete();
|
||||
});
|
||||
auto fut = _renderThread->add_task(lambda);
|
||||
|
||||
Reference in New Issue
Block a user