mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 09:52:27 -04:00
Disable use of GL_NV_primitive_restart due to driver bugs
This commit is contained in:
parent
65f786c8ff
commit
75c1364373
@ -550,8 +550,7 @@ reset() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef OPENGLES
|
#ifndef OPENGLES
|
||||||
_primitive_restart_gl3 = false;
|
_explicit_primitive_restart = false;
|
||||||
_primitive_restart_nv = false;
|
|
||||||
_glPrimitiveRestartIndex = NULL;
|
_glPrimitiveRestartIndex = NULL;
|
||||||
|
|
||||||
if (gl_support_primitive_restart_index) {
|
if (gl_support_primitive_restart_index) {
|
||||||
@ -563,19 +562,16 @@ reset() {
|
|||||||
_supported_geom_rendering |= Geom::GR_strip_cut_index;
|
_supported_geom_rendering |= Geom::GR_strip_cut_index;
|
||||||
|
|
||||||
} else if (is_at_least_gl_version(3, 1)) {
|
} else if (is_at_least_gl_version(3, 1)) {
|
||||||
_primitive_restart_gl3 = true;
|
// We have to use an explicit primitive restart enable/index.
|
||||||
|
_explicit_primitive_restart = true;
|
||||||
_supported_geom_rendering |= Geom::GR_strip_cut_index;
|
_supported_geom_rendering |= Geom::GR_strip_cut_index;
|
||||||
|
|
||||||
_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)
|
_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)
|
||||||
get_extension_func("glPrimitiveRestartIndex");
|
get_extension_func("glPrimitiveRestartIndex");
|
||||||
|
|
||||||
} else if (has_extension("GL_NV_primitive_restart")) {
|
|
||||||
_primitive_restart_nv = true;
|
|
||||||
_supported_geom_rendering |= Geom::GR_strip_cut_index;
|
|
||||||
|
|
||||||
_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)
|
|
||||||
get_extension_func("glPrimitiveRestartIndexNV");
|
|
||||||
}
|
}
|
||||||
|
// We used to have a case here for GL_NV_primitive_restart, but it
|
||||||
|
// seems to cause garbled geometry bugs on some drivers.
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -3954,13 +3950,9 @@ draw_linestrips(const GeomPrimitivePipelineReader *reader, bool force) {
|
|||||||
(_supported_geom_rendering & GeomEnums::GR_strip_cut_index) != 0) {
|
(_supported_geom_rendering & GeomEnums::GR_strip_cut_index) != 0) {
|
||||||
// One long triangle strip, connected by strip cut indices.
|
// One long triangle strip, connected by strip cut indices.
|
||||||
#ifndef OPENGLES
|
#ifndef OPENGLES
|
||||||
if (_primitive_restart_gl3) {
|
if (_explicit_primitive_restart) {
|
||||||
glEnable(GL_PRIMITIVE_RESTART);
|
glEnable(GL_PRIMITIVE_RESTART);
|
||||||
_glPrimitiveRestartIndex(reader->get_strip_cut_index());
|
_glPrimitiveRestartIndex(reader->get_strip_cut_index());
|
||||||
|
|
||||||
} else if (_primitive_restart_nv) {
|
|
||||||
glEnableClientState(GL_PRIMITIVE_RESTART_NV);
|
|
||||||
_glPrimitiveRestartIndex(reader->get_strip_cut_index());
|
|
||||||
}
|
}
|
||||||
#endif // !OPENGLES
|
#endif // !OPENGLES
|
||||||
|
|
||||||
@ -3989,11 +3981,8 @@ draw_linestrips(const GeomPrimitivePipelineReader *reader, bool force) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef OPENGLES
|
#ifndef OPENGLES
|
||||||
if (_primitive_restart_gl3) {
|
if (_explicit_primitive_restart) {
|
||||||
glDisable(GL_PRIMITIVE_RESTART);
|
glDisable(GL_PRIMITIVE_RESTART);
|
||||||
|
|
||||||
} else if (_primitive_restart_nv) {
|
|
||||||
glDisableClientState(GL_PRIMITIVE_RESTART_NV);
|
|
||||||
}
|
}
|
||||||
#endif // !OPENGLES
|
#endif // !OPENGLES
|
||||||
} else {
|
} else {
|
||||||
|
@ -616,8 +616,7 @@ public:
|
|||||||
|
|
||||||
#ifndef OPENGLES
|
#ifndef OPENGLES
|
||||||
PFNGLPRIMITIVERESTARTINDEXPROC _glPrimitiveRestartIndex;
|
PFNGLPRIMITIVERESTARTINDEXPROC _glPrimitiveRestartIndex;
|
||||||
bool _primitive_restart_gl3;
|
bool _explicit_primitive_restart;
|
||||||
bool _primitive_restart_nv;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool _supports_vertex_blend;
|
bool _supports_vertex_blend;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user