Reflection: Fix #977: Expose getBinding(), use in new getUniformBinding().
This commit is contained in:
parent
0e392aa92e
commit
a2b71902e2
@ -1836,6 +1836,7 @@ const char* TProgram::getUniformName(int index) const { return reflection
|
|||||||
const char* TProgram::getUniformBlockName(int index) const { return reflection->getUniformBlock(index).name.c_str(); }
|
const char* TProgram::getUniformBlockName(int index) const { return reflection->getUniformBlock(index).name.c_str(); }
|
||||||
int TProgram::getUniformBlockSize(int index) const { return reflection->getUniformBlock(index).size; }
|
int TProgram::getUniformBlockSize(int index) const { return reflection->getUniformBlock(index).size; }
|
||||||
int TProgram::getUniformIndex(const char* name) const { return reflection->getIndex(name); }
|
int TProgram::getUniformIndex(const char* name) const { return reflection->getIndex(name); }
|
||||||
|
int TProgram::getUniformBinding(int index) const { return reflection->getUniform(index).getBinding(); }
|
||||||
int TProgram::getUniformBlockIndex(int index) const { return reflection->getUniform(index).index; }
|
int TProgram::getUniformBlockIndex(int index) const { return reflection->getUniform(index).index; }
|
||||||
int TProgram::getUniformBlockCounterIndex(int index) const { return reflection->getUniformBlock(index).counterIndex; }
|
int TProgram::getUniformBlockCounterIndex(int index) const { return reflection->getUniformBlock(index).counterIndex; }
|
||||||
int TProgram::getUniformType(int index) const { return reflection->getUniform(index).glDefineType; }
|
int TProgram::getUniformType(int index) const { return reflection->getUniform(index).glDefineType; }
|
||||||
|
|||||||
@ -59,7 +59,15 @@ public:
|
|||||||
name(pName), offset(pOffset),
|
name(pName), offset(pOffset),
|
||||||
glDefineType(pGLDefineType), size(pSize), index(pIndex), counterIndex(-1), type(pType.clone()) { }
|
glDefineType(pGLDefineType), size(pSize), index(pIndex), counterIndex(-1), type(pType.clone()) { }
|
||||||
|
|
||||||
void dump() const {
|
const TType* const getType() const { return type; }
|
||||||
|
int getBinding() const
|
||||||
|
{
|
||||||
|
if (type == nullptr || !type->getQualifier().hasBinding())
|
||||||
|
return -1;
|
||||||
|
return type->getQualifier().layoutBinding;
|
||||||
|
}
|
||||||
|
void dump() const
|
||||||
|
{
|
||||||
printf("%s: offset %d, type %x, size %d, index %d, binding %d",
|
printf("%s: offset %d, type %x, size %d, index %d, binding %d",
|
||||||
name.c_str(), offset, glDefineType, size, index, getBinding() );
|
name.c_str(), offset, glDefineType, size, index, getBinding() );
|
||||||
|
|
||||||
@ -68,8 +76,7 @@ public:
|
|||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
static TObjectReflection badReflection() { return TObjectReflection(); }
|
||||||
const TType* const getType() const { return type; }
|
|
||||||
|
|
||||||
TString name;
|
TString name;
|
||||||
int offset;
|
int offset;
|
||||||
@ -78,15 +85,7 @@ public:
|
|||||||
int index;
|
int index;
|
||||||
int counterIndex;
|
int counterIndex;
|
||||||
|
|
||||||
static TObjectReflection badReflection() { return TObjectReflection(); }
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int getBinding() const {
|
|
||||||
if (type == nullptr || type->getQualifier().layoutBinding == TQualifier::layoutBindingEnd)
|
|
||||||
return -1;
|
|
||||||
return type->getQualifier().layoutBinding;
|
|
||||||
}
|
|
||||||
|
|
||||||
TObjectReflection() : offset(-1), glDefineType(-1), size(-1), index(-1), type(nullptr) { }
|
TObjectReflection() : offset(-1), glDefineType(-1), size(-1), index(-1), type(nullptr) { }
|
||||||
|
|
||||||
const TType* type;
|
const TType* type;
|
||||||
|
|||||||
@ -619,6 +619,7 @@ public:
|
|||||||
const char* getUniformBlockName(int blockIndex) const; // can be used for glGetActiveUniformBlockName()
|
const char* getUniformBlockName(int blockIndex) const; // can be used for glGetActiveUniformBlockName()
|
||||||
int getUniformBlockSize(int blockIndex) const; // can be used for glGetActiveUniformBlockiv(UNIFORM_BLOCK_DATA_SIZE)
|
int getUniformBlockSize(int blockIndex) const; // can be used for glGetActiveUniformBlockiv(UNIFORM_BLOCK_DATA_SIZE)
|
||||||
int getUniformIndex(const char* name) const; // can be used for glGetUniformIndices()
|
int getUniformIndex(const char* name) const; // can be used for glGetUniformIndices()
|
||||||
|
int getUniformBinding(int index) const; // returns the binding number
|
||||||
int getUniformBlockIndex(int index) const; // can be used for glGetActiveUniformsiv(GL_UNIFORM_BLOCK_INDEX)
|
int getUniformBlockIndex(int index) const; // can be used for glGetActiveUniformsiv(GL_UNIFORM_BLOCK_INDEX)
|
||||||
int getUniformBlockCounterIndex(int index) const; // returns block index of associated counter.
|
int getUniformBlockCounterIndex(int index) const; // returns block index of associated counter.
|
||||||
int getUniformType(int index) const; // can be used for glGetActiveUniformsiv(GL_UNIFORM_TYPE)
|
int getUniformType(int index) const; // can be used for glGetActiveUniformsiv(GL_UNIFORM_TYPE)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user