ShaderBlock:isWritable;

This commit is contained in:
bjorn 2018-08-06 10:41:57 -07:00
parent 70b27bd846
commit e3e17bc84c
3 changed files with 12 additions and 0 deletions

View File

@ -8,6 +8,12 @@ int l_lovrShaderBlockGetSize(lua_State* L) {
return 1; return 1;
} }
int l_lovrShaderBlockIsWritable(lua_State* L) {
ShaderBlock* block = luax_checktype(L, 1, ShaderBlock);
lua_pushboolean(L, lovrShaderBlockGetType(block) == BLOCK_STORAGE);
return 1;
}
int l_lovrShaderBlockSend(lua_State* L) { int l_lovrShaderBlockSend(lua_State* L) {
ShaderBlock* block = luax_checktype(L, 1, ShaderBlock); ShaderBlock* block = luax_checktype(L, 1, ShaderBlock);
const char* name = luaL_checkstring(L, 2); const char* name = luaL_checkstring(L, 2);
@ -20,6 +26,7 @@ int l_lovrShaderBlockSend(lua_State* L) {
const luaL_Reg lovrShaderBlock[] = { const luaL_Reg lovrShaderBlock[] = {
{ "getSize", l_lovrShaderBlockGetSize }, { "getSize", l_lovrShaderBlockGetSize },
{ "isWritable", l_lovrShaderBlockIsWritable },
{ "send", l_lovrShaderBlockSend }, { "send", l_lovrShaderBlockSend },
{ NULL, NULL } { NULL, NULL }
}; };

View File

@ -1700,6 +1700,10 @@ size_t lovrShaderBlockGetSize(ShaderBlock* block) {
return block->size; return block->size;
} }
BlockType lovrShaderBlockGetType(ShaderBlock* block) {
return block->type;
}
const Uniform* lovrShaderBlockGetUniform(ShaderBlock* block, const char* name) { const Uniform* lovrShaderBlockGetUniform(ShaderBlock* block, const char* name) {
int* index = map_get(&block->uniformMap, name); int* index = map_get(&block->uniformMap, name);
if (!index) return NULL; if (!index) return NULL;

View File

@ -75,6 +75,7 @@ void lovrShaderSetBlock(Shader* shader, const char* name, ShaderBlock* block);
ShaderBlock* lovrShaderBlockCreate(vec_uniform_t* uniforms, BlockType type, BufferUsage usage); ShaderBlock* lovrShaderBlockCreate(vec_uniform_t* uniforms, BlockType type, BufferUsage usage);
void lovrShaderBlockDestroy(void* ref); void lovrShaderBlockDestroy(void* ref);
size_t lovrShaderBlockGetSize(ShaderBlock* block); size_t lovrShaderBlockGetSize(ShaderBlock* block);
BlockType lovrShaderBlockGetType(ShaderBlock* block);
const Uniform* lovrShaderBlockGetUniform(ShaderBlock* block, const char* name); const Uniform* lovrShaderBlockGetUniform(ShaderBlock* block, const char* name);
void* lovrShaderBlockMap(ShaderBlock* block); void* lovrShaderBlockMap(ShaderBlock* block);
void lovrShaderBlockUnmap(ShaderBlock* block); void lovrShaderBlockUnmap(ShaderBlock* block);