mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-09 12:48:32 +09:00
[Feat] (MG_Impl/GLImpl, MG_State): implement glPrimitiveRestartIndex
Store the primitive restart index as render state and report it through glGetIntegerv(GL_PRIMITIVE_RESTART_INDEX), replacing the stub and the hardcoded 0 in the getter. - RenderState gains a PrimitiveRestartIndex field (default 0) with set/get accessors and GLContext wrappers. - glPrimitiveRestartIndex accepts any GLuint and generates no error. - glGetIntegerv(GL_PRIMITIVE_RESTART_INDEX) now reads the stored value. This is the state layer only. The backends do not yet honor an arbitrary restart index at draw time -- Vulkan and GLES support only the fixed all-ones restart value (GL_PRIMITIVE_RESTART_FIXED_INDEX) -- so a non- default index is tracked and queryable but not yet applied to indexed draws. Tests: RenderStateSanity round-trip (default 0, mid value, and the full 32-bit range). Full SanityTest sweep green (31/31).
This commit is contained in:
@@ -561,6 +561,11 @@ namespace MobileGL::MG_Impl::GLImpl {
|
||||
buf, BoolVec4(red != GL_FALSE, green != GL_FALSE, blue != GL_FALSE, alpha != GL_FALSE));
|
||||
}
|
||||
|
||||
void PrimitiveRestartIndex_State(GLuint index) {
|
||||
// glPrimitiveRestartIndex accepts any GLuint and generates no error.
|
||||
MG_State::pGLContext->SetPrimitiveRestartIndex(index);
|
||||
}
|
||||
|
||||
void ClampColor_State(GLenum target, GLenum clamp) {
|
||||
// GL 3.3 core: the only legal target is GL_CLAMP_READ_COLOR. The compatibility-only
|
||||
// GL_CLAMP_VERTEX_COLOR / GL_CLAMP_FRAGMENT_COLOR were removed from the core profile and
|
||||
@@ -924,6 +929,10 @@ namespace MobileGL::MG_Impl::GLImpl {
|
||||
ClampColor_State(target, clamp);
|
||||
}
|
||||
|
||||
void PrimitiveRestartIndex(GLuint index) {
|
||||
PrimitiveRestartIndex_State(index);
|
||||
}
|
||||
|
||||
void BlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) {
|
||||
BlendFuncSeparate_State(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user