mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-07 19:58:32 +09:00
[Fix]: some not-added stuff
This commit is contained in:
@@ -31,6 +31,22 @@ namespace MobileGL::MG_Impl::GLImpl {
|
||||
return true;
|
||||
}
|
||||
|
||||
Bool ValidateBufferBindingPointTarget(BufferTarget target) {
|
||||
if (target != BufferTarget::Uniform && target != BufferTarget::AtomicCounter &&
|
||||
target != BufferTarget::TransformFeedback && target != BufferTarget::ShaderStorage) {
|
||||
using namespace MG_Util;
|
||||
String bufferTargetStr = ConvertBufferTargetToString(target);
|
||||
String glTargetStr = ConvertGLEnumToString(ConvertBufferTargetToGLEnum(target));
|
||||
MG_State::pGLContext->RecordError(
|
||||
ErrorCode::InvalidEnum,
|
||||
MakeShared<GenericErrorInfo>(
|
||||
"MG_Impl/GLImpl/BufferImpl", "ValidateBufferTarget",
|
||||
std::format("Target {} ({}) is not valid.", bufferTargetStr, glTargetStr)));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Bool ValidateBufferName(Uint index, Bool allowZero) {
|
||||
if (index == 0) {
|
||||
if (allowZero) return true;
|
||||
|
||||
@@ -8,5 +8,6 @@ namespace MobileGL::MG_Impl::GLImpl {
|
||||
Bool ValidateBufferName(Uint index, Bool allowZero = false);
|
||||
Bool ValidateBufferUsage(BufferUsage usage);
|
||||
Bool ValidateBufferMappingAccess(Flags<BufferMappingAccessBit> accessBits);
|
||||
Bool ValidateBufferBindingPointTarget(BufferTarget target);
|
||||
} // namespace BufferImpl
|
||||
} // namespace MobileGL::MG_Impl::GLImpl
|
||||
@@ -101,7 +101,7 @@ namespace MobileGL {
|
||||
// represents a range of [start, end)
|
||||
struct Range1D {
|
||||
SizeT start = 0;
|
||||
SizeT end = 0;
|
||||
SizeT end = ~0u;
|
||||
|
||||
void Update(SizeT newStart, SizeT newEnd) {
|
||||
assert(newStart <= newEnd);
|
||||
@@ -147,6 +147,30 @@ namespace MobileGL {
|
||||
SharedPtr<ObjectType> m_boundObject;
|
||||
};
|
||||
|
||||
template <typename ObjectType>
|
||||
class BindingSlotRange1D: public BindingSlot<ObjectType> {
|
||||
public:
|
||||
using TargetEnum = typename ObjectType::TargetEnum;
|
||||
|
||||
BindingSlotRange1D() : BindingSlot<ObjectType>() {}
|
||||
explicit BindingSlotRange1D(TargetEnum target, const Range1D& range = Range1D())
|
||||
: BindingSlot<ObjectType>(target), m_range(range) {}
|
||||
|
||||
Range1D GetRange() const {
|
||||
return m_range;
|
||||
}
|
||||
|
||||
void SetRange(const Range1D& range) {
|
||||
m_range = range;
|
||||
}
|
||||
|
||||
void ClearRange() {
|
||||
m_range = Range1D();
|
||||
}
|
||||
private:
|
||||
Range1D m_range;
|
||||
};
|
||||
|
||||
struct Version {
|
||||
Int Major;
|
||||
Int Minor;
|
||||
|
||||
Reference in New Issue
Block a user