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;
}
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) {
ShaderBlock* block = luax_checktype(L, 1, ShaderBlock);
const char* name = luaL_checkstring(L, 2);
@ -20,6 +26,7 @@ int l_lovrShaderBlockSend(lua_State* L) {
const luaL_Reg lovrShaderBlock[] = {
{ "getSize", l_lovrShaderBlockGetSize },
{ "isWritable", l_lovrShaderBlockIsWritable },
{ "send", l_lovrShaderBlockSend },
{ NULL, NULL }
};

View File

@ -1700,6 +1700,10 @@ size_t lovrShaderBlockGetSize(ShaderBlock* block) {
return block->size;
}
BlockType lovrShaderBlockGetType(ShaderBlock* block) {
return block->type;
}
const Uniform* lovrShaderBlockGetUniform(ShaderBlock* block, const char* name) {
int* index = map_get(&block->uniformMap, name);
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);
void lovrShaderBlockDestroy(void* ref);
size_t lovrShaderBlockGetSize(ShaderBlock* block);
BlockType lovrShaderBlockGetType(ShaderBlock* block);
const Uniform* lovrShaderBlockGetUniform(ShaderBlock* block, const char* name);
void* lovrShaderBlockMap(ShaderBlock* block);
void lovrShaderBlockUnmap(ShaderBlock* block);