19#include <android/log.h>
20#include <android/asset_manager.h>
21#include <android/asset_manager_jni.h>
23#include <android/window.h>
24#include <android/native_window_jni.h>
29#if !defined(ALOGV) && __ANDROID__
30#define ALOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, "Framework_Vulkan", __VA_ARGS__)
34void ShadersList::readShader(AAssetManager* assetManager, std::string shaderName){
35 ALOGV(
"Loading %s", shaderName.c_str());
37 std::string filename =
"shaders/"+shaderName+
".spv";
38 ALOGV(
"File %s", filename.c_str());
39 AAsset* file = AAssetManager_open(assetManager,filename.c_str(), AASSET_MODE_BUFFER);
40 shad.
size = AAsset_getLength(file);
41 ALOGV(
"Shader File Size: %d", shad.
size);
45 m_shaders.insert(std::pair<std::string, Shader>(shaderName,shad));
49 AAssetManager* assetManager = app->activity->assetManager;
52 readShader(assetManager,
"synthesis.vert");
53 readShader(assetManager,
"synthesis.geom");
54 readShader(assetManager,
"synthesis.frag");
56 readShader(assetManager,
"shader.vert");
57 readShader(assetManager,
"shader.frag");
59 readShader(assetManager,
"blending.vert");
60 readShader(assetManager,
"blending.frag");
61 readShader(assetManager,
"blendingFinal.frag");
62 readShader(assetManager,
"blendingFirst.frag");
63 readShader(assetManager,
"blendingFirstFinal.frag");
71 for (
auto & shaderName : namesList) {
72 readShader(shaderName);
75void ShadersList::readShader(std::string & shaderName)
79 shad.
name = shaderName;
82 std::string filename =
"./shaders/" + shaderName +
".spv";
83 std::ifstream file(filename, std::ios::ate | std::ios::binary);
85 if (!file.is_open()) {
86 throw std::runtime_error(
"failed to open file!: " + filename +
"\n");
89 size_t fileSize = (size_t)file.tellg();
94 m_shaders.insert(std::pair<std::string, Shader>(shaderName, shad));
105 return m_shaders.at(name);
108ShadersList::ShadersList() {
Contains the class that loads the SPIR-V shaders from files.
Class that represents SPIR-V shader.
Class that loads SPIR-V shader from files and make their content available to the rest of the code.
Shader const & operator()(const char *name) const
static ShadersList & getInstance()