mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-08 04:08:32 +09:00
30 lines
996 B
C++
30 lines
996 B
C++
#pragma once
|
|
|
|
namespace MobileGL {
|
|
namespace MG_State {
|
|
namespace GLState {
|
|
class ProgramState {
|
|
public:
|
|
// This function WILL actually create the program object.
|
|
// To retrieve created program object, use GetProgramObject()
|
|
Uint CreateProgram();
|
|
SharedPtr<ProgramObject> GetProgramObject(Uint id);
|
|
void DeleteProgram(Uint program);
|
|
private:
|
|
bool CheckIndexAvail(SizeT idx) {
|
|
return idx < m_programObjects.size();
|
|
}
|
|
|
|
void EnsureIndexAvail(SizeT idx) {
|
|
if (CheckIndexAvail(idx)) return;
|
|
|
|
m_programObjects.reserve(std::bit_ceil(idx));
|
|
m_programObjects.resize(idx + 1);
|
|
}
|
|
|
|
IndexGenerator<Uint> m_indexGenerator;
|
|
Vector<SharedPtr<ProgramObject>> m_programObjects;
|
|
};
|
|
}
|
|
}
|
|
} |