mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-11 21:58:31 +09:00
[Feat] (MG_State/Program): GetProgramiv: GL_ACTIVE_UNIFORM_BLOCKS, GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH
This commit is contained in:
@@ -238,11 +238,16 @@ namespace MobileGL {
|
|||||||
case GL_ACTIVE_UNIFORM_MAX_LENGTH:
|
case GL_ACTIVE_UNIFORM_MAX_LENGTH:
|
||||||
*params = programObject->GetUniformMaxLength();
|
*params = programObject->GetUniformMaxLength();
|
||||||
break;
|
break;
|
||||||
case GL_PROGRAM_BINARY_LENGTH:
|
|
||||||
case GL_ACTIVE_UNIFORM_BLOCKS: // GL >= 3.1
|
case GL_ACTIVE_UNIFORM_BLOCKS: // GL >= 3.1
|
||||||
|
*params = programObject->GetActiveUniformBlocksCount();
|
||||||
|
break;
|
||||||
case GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH: // ditto.
|
case GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH: // ditto.
|
||||||
|
*params = programObject->GetActiveUniformBlocksMaxLength();
|
||||||
|
break;
|
||||||
case GL_COMPUTE_WORK_GROUP_SIZE: // GL >= 4.3
|
case GL_COMPUTE_WORK_GROUP_SIZE: // GL >= 4.3
|
||||||
|
|
||||||
|
case GL_PROGRAM_BINARY_LENGTH:
|
||||||
|
|
||||||
case GL_TRANSFORM_FEEDBACK_BUFFER_MODE:
|
case GL_TRANSFORM_FEEDBACK_BUFFER_MODE:
|
||||||
case GL_TRANSFORM_FEEDBACK_VARYINGS:
|
case GL_TRANSFORM_FEEDBACK_VARYINGS:
|
||||||
case GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH:
|
case GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH:
|
||||||
|
|||||||
@@ -94,6 +94,12 @@ namespace MobileGL {
|
|||||||
auto& inVar = m_program->getPipeInput(i);
|
auto& inVar = m_program->getPipeInput(i);
|
||||||
m_attribInNameMaxLength = std::max(m_attribInNameMaxLength, (Int)inVar.name.length());
|
m_attribInNameMaxLength = std::max(m_attribInNameMaxLength, (Int)inVar.name.length());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int uboCount = m_program->getNumUniformBlocks();
|
||||||
|
for (int i = 0; i < uboCount; i++) {
|
||||||
|
auto& ubo = m_program->getUniformBlock(i);
|
||||||
|
m_uniformBlockNameMaxLength = std::max(m_uniformBlockNameMaxLength, (Int)ubo.name.length());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// void ProgramObject::PreLink() {
|
// void ProgramObject::PreLink() {
|
||||||
|
|||||||
@@ -35,7 +35,9 @@ namespace MobileGL {
|
|||||||
Bool GetValidateStatus() const { return m_validateStatus; }
|
Bool GetValidateStatus() const { return m_validateStatus; }
|
||||||
Int GetActiveAtomicCounterCount() const { return m_program->getNumAtomicCounters(); }
|
Int GetActiveAtomicCounterCount() const { return m_program->getNumAtomicCounters(); }
|
||||||
Int GetActiveAttributesCount() const { return m_program->getNumPipeInputs(); }
|
Int GetActiveAttributesCount() const { return m_program->getNumPipeInputs(); }
|
||||||
|
Int GetActiveUniformBlocksCount() const { return m_program->getNumUniformBlocks(); }
|
||||||
Int GetActiveAttributesMaxLength() const { return m_attribInNameMaxLength; }
|
Int GetActiveAttributesMaxLength() const { return m_attribInNameMaxLength; }
|
||||||
|
Int GetActiveUniformBlocksMaxLength() const { return m_uniformBlockNameMaxLength; }
|
||||||
private:
|
private:
|
||||||
void DoReflection();
|
void DoReflection();
|
||||||
// void PreLink();
|
// void PreLink();
|
||||||
@@ -57,9 +59,10 @@ namespace MobileGL {
|
|||||||
Vector<Uint> m_uniformOffsets;
|
Vector<Uint> m_uniformOffsets;
|
||||||
Vector<Uint8> m_uboScratch;
|
Vector<Uint8> m_uboScratch;
|
||||||
|
|
||||||
Int m_uniformNameMaxLength = 0;
|
|
||||||
Uint m_maxUniformLocation = 0;
|
Uint m_maxUniformLocation = 0;
|
||||||
|
Int m_uniformNameMaxLength = 0;
|
||||||
Int m_attribInNameMaxLength = 0;
|
Int m_attribInNameMaxLength = 0;
|
||||||
|
Int m_uniformBlockNameMaxLength = 0;
|
||||||
|
|
||||||
String m_infoLog;
|
String m_infoLog;
|
||||||
Bool m_deleteStatus = false;
|
Bool m_deleteStatus = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user