Updating embedded shader handling.

This commit is contained in:
Branimir Karadžić
2016-12-05 20:12:31 -08:00
parent 65ef9e8b39
commit 5a1b718a1f
13 changed files with 288 additions and 337 deletions

View File

@@ -9,10 +9,20 @@
#include <bx/uint32_t.h>
#include "imgui/imgui.h"
#include <bgfx/embedded_shader.h>
// embedded shaders
#include "vs_drawstress.bin.h"
#include "fs_drawstress.bin.h"
static const bgfx::EmbeddedShader s_embeddedShaders[] =
{
BGFX_EMBEDDED_SHADER(vs_drawstress),
BGFX_EMBEDDED_SHADER(fs_drawstress),
BGFX_EMBEDDED_SHADER_END()
};
struct PosColorVertex
{
float m_x;
@@ -113,37 +123,12 @@ class ExampleDrawStress : public entry::AppI
// Create vertex stream declaration.
PosColorVertex::init();
const bgfx::Memory* vs_drawstress;
const bgfx::Memory* fs_drawstress;
switch (bgfx::getRendererType() )
{
case bgfx::RendererType::Direct3D9:
vs_drawstress = bgfx::makeRef(vs_drawstress_dx9, sizeof(vs_drawstress_dx9) );
fs_drawstress = bgfx::makeRef(fs_drawstress_dx9, sizeof(fs_drawstress_dx9) );
break;
case bgfx::RendererType::Direct3D11:
case bgfx::RendererType::Direct3D12:
vs_drawstress = bgfx::makeRef(vs_drawstress_dx11, sizeof(vs_drawstress_dx11) );
fs_drawstress = bgfx::makeRef(fs_drawstress_dx11, sizeof(fs_drawstress_dx11) );
break;
case bgfx::RendererType::Metal:
vs_drawstress = bgfx::makeRef(vs_drawstress_mtl, sizeof(vs_drawstress_mtl) );
fs_drawstress = bgfx::makeRef(fs_drawstress_mtl, sizeof(fs_drawstress_mtl) );
break;
default:
vs_drawstress = bgfx::makeRef(vs_drawstress_glsl, sizeof(vs_drawstress_glsl) );
fs_drawstress = bgfx::makeRef(fs_drawstress_glsl, sizeof(fs_drawstress_glsl) );
break;
}
bgfx::RendererType::Enum type = bgfx::getRendererType();
// Create program from shaders.
m_program = bgfx::createProgram(
bgfx::createShader(vs_drawstress)
, bgfx::createShader(fs_drawstress)
bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_drawstress")
, bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_drawstress")
, true /* destroy shaders when program is destroyed */
);