mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-08 04:08:32 +09:00
[Feat] (MG_Impl/Texture, MG_State/TextureState, MG_Impl/Framebuffer, MG_Test/Texture): implement multisample frontend state
This commit is contained in:
@@ -438,6 +438,34 @@ namespace MobileGL::MG_Impl::GLImpl {
|
||||
"NamedRenderbufferStorage_State");
|
||||
}
|
||||
|
||||
void NamedRenderbufferStorageMultisample_State(GLuint renderbuffer, GLsizei samples, GLenum internalformat,
|
||||
GLsizei width, GLsizei height) {
|
||||
auto renderbufferObject =
|
||||
GetNamedRenderbufferObject_State(renderbuffer, "NamedRenderbufferStorageMultisample_State");
|
||||
if (!renderbufferObject) return;
|
||||
|
||||
TextureInternalFormat format = MG_Util::ConvertGLEnumToTextureInternalFormat(internalformat);
|
||||
if (!TextureImpl::ValidateTextureInternalFormat(format)) return;
|
||||
if (samples < 0) {
|
||||
MG_State::pGLContext->RecordError(
|
||||
ErrorCode::InvalidValue,
|
||||
MakeUnique<GenericErrorInfo>("MG_Impl/GLImpl", "NamedRenderbufferStorageMultisample_State",
|
||||
"Sample count must be non-negative."));
|
||||
return;
|
||||
}
|
||||
if (width < 0 || height < 0) {
|
||||
MG_State::pGLContext->RecordError(
|
||||
ErrorCode::InvalidValue,
|
||||
MakeUnique<GenericErrorInfo>("MG_Impl/GLImpl", "NamedRenderbufferStorageMultisample_State",
|
||||
"Width and height must be non-negative."));
|
||||
return;
|
||||
}
|
||||
|
||||
renderbufferObject->AllocateStorage({width, height});
|
||||
renderbufferObject->SetInternalFormat(format);
|
||||
renderbufferObject->SetSamples(samples);
|
||||
}
|
||||
|
||||
void GenFramebuffers_State(GLsizei n, GLuint* framebuffers) {
|
||||
if (n < 0) {
|
||||
MG_State::pGLContext->RecordError(
|
||||
@@ -1499,6 +1527,11 @@ namespace MobileGL::MG_Impl::GLImpl {
|
||||
NamedRenderbufferStorage_State(renderbuffer, internalformat, width, height);
|
||||
}
|
||||
|
||||
void NamedRenderbufferStorageMultisample(GLuint renderbuffer, GLsizei samples, GLenum internalformat,
|
||||
GLsizei width, GLsizei height) {
|
||||
NamedRenderbufferStorageMultisample_State(renderbuffer, samples, internalformat, width, height);
|
||||
}
|
||||
|
||||
void GetNamedRenderbufferParameteriv(GLuint renderbuffer, GLenum pname, GLint* params) {
|
||||
GetNamedRenderbufferParameteriv_State(renderbuffer, pname, params);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user