fix assertion error
This commit is contained in:
parent
6ddc1ca7be
commit
068ee73eae
|
|
@ -942,6 +942,8 @@ reset() {
|
|||
}
|
||||
}
|
||||
|
||||
_num_active_texture_stages = 0;
|
||||
|
||||
report_my_gl_errors();
|
||||
|
||||
_supports_stencil_wrap = has_extension("GL_EXT_stencil_wrap");
|
||||
|
|
@ -5815,13 +5817,9 @@ do_issue_texture() {
|
|||
void CLP(GraphicsStateGuardian)::
|
||||
update_standard_texture_bindings() {
|
||||
int num_stages = _effective_texture->get_num_on_stages();
|
||||
int num_old_stages = _max_texture_stages;
|
||||
if (_state._texture != (TextureAttrib *)NULL) {
|
||||
num_old_stages = _state._texture->get_num_on_stages();
|
||||
}
|
||||
|
||||
nassertv(num_stages <= _max_texture_stages &&
|
||||
num_old_stages <= _max_texture_stages);
|
||||
_num_active_texture_stages <= _max_texture_stages);
|
||||
|
||||
_texture_involves_color_scale = false;
|
||||
|
||||
|
|
@ -5833,7 +5831,7 @@ update_standard_texture_bindings() {
|
|||
Texture *texture = _effective_texture->get_on_texture(stage);
|
||||
nassertv(texture != (Texture *)NULL);
|
||||
|
||||
if (i >= num_old_stages ||
|
||||
if (i >= _num_active_texture_stages ||
|
||||
_state._texture == (TextureAttrib *)NULL ||
|
||||
stage != _state._texture->get_on_stage(i) ||
|
||||
texture != _state._texture->get_on_texture(stage) ||
|
||||
|
|
@ -5998,7 +5996,7 @@ update_standard_texture_bindings() {
|
|||
}
|
||||
|
||||
// Disable the texture stages that are no longer used.
|
||||
for (i = num_stages; i < num_old_stages; i++) {
|
||||
for (i = num_stages; i < _num_active_texture_stages; i++) {
|
||||
_glActiveTexture(GL_TEXTURE0 + i);
|
||||
GLP(Disable)(GL_TEXTURE_1D);
|
||||
GLP(Disable)(GL_TEXTURE_2D);
|
||||
|
|
@ -6010,6 +6008,9 @@ update_standard_texture_bindings() {
|
|||
}
|
||||
}
|
||||
|
||||
// Save the count of texture stages for next time.
|
||||
_num_active_texture_stages = num_stages;
|
||||
|
||||
report_my_gl_errors();
|
||||
}
|
||||
|
||||
|
|
@ -6021,13 +6022,8 @@ update_standard_texture_bindings() {
|
|||
////////////////////////////////////////////////////////////////////
|
||||
void CLP(GraphicsStateGuardian)::
|
||||
disable_standard_texture_bindings() {
|
||||
int num_old_stages = _max_texture_stages;
|
||||
if (_state._texture != (TextureAttrib *)NULL) {
|
||||
num_old_stages = _state._texture->get_num_on_stages();
|
||||
}
|
||||
|
||||
// Disable the texture stages that are no longer used.
|
||||
for (int i = 0; i < num_old_stages; i++) {
|
||||
for (int i = 0; i < _num_active_texture_stages; i++) {
|
||||
_glActiveTexture(GL_TEXTURE0 + i);
|
||||
GLP(Disable)(GL_TEXTURE_1D);
|
||||
GLP(Disable)(GL_TEXTURE_2D);
|
||||
|
|
@ -6039,6 +6035,8 @@ disable_standard_texture_bindings() {
|
|||
}
|
||||
}
|
||||
|
||||
_num_active_texture_stages = 0;
|
||||
|
||||
report_my_gl_errors();
|
||||
}
|
||||
|
||||
|
|
@ -6049,10 +6047,9 @@ disable_standard_texture_bindings() {
|
|||
////////////////////////////////////////////////////////////////////
|
||||
void CLP(GraphicsStateGuardian)::
|
||||
do_issue_tex_matrix() {
|
||||
int num_stages = _effective_texture->get_num_on_stages();
|
||||
nassertv(num_stages <= _max_texture_stages);
|
||||
nassertv(_num_active_texture_stages <= _max_texture_stages);
|
||||
|
||||
for (int i = 0; i < num_stages; i++) {
|
||||
for (int i = 0; i < _num_active_texture_stages; i++) {
|
||||
TextureStage *stage = _effective_texture->get_on_stage(i);
|
||||
_glActiveTexture(GL_TEXTURE0 + i);
|
||||
|
||||
|
|
@ -6083,8 +6080,7 @@ void CLP(GraphicsStateGuardian)::
|
|||
do_issue_tex_gen() {
|
||||
bool force_normal = false;
|
||||
|
||||
int num_stages = _effective_texture->get_num_on_stages();
|
||||
nassertv(num_stages <= _max_texture_stages);
|
||||
nassertv(_num_active_texture_stages <= _max_texture_stages);
|
||||
|
||||
// These are passed in for the four OBJECT_PLANE or EYE_PLANE
|
||||
// values; they effectively define an identity matrix that maps
|
||||
|
|
@ -6100,7 +6096,7 @@ do_issue_tex_gen() {
|
|||
|
||||
bool got_point_sprites = false;
|
||||
|
||||
for (int i = 0; i < num_stages; i++) {
|
||||
for (int i = 0; i < _num_active_texture_stages; i++) {
|
||||
TextureStage *stage = _effective_texture->get_on_stage(i);
|
||||
_glActiveTexture(GL_TEXTURE0 + i);
|
||||
GLP(Disable)(GL_TEXTURE_GEN_S);
|
||||
|
|
|
|||
|
|
@ -364,6 +364,7 @@ protected:
|
|||
GLuint _current_vbuffer_index;
|
||||
GLuint _current_ibuffer_index;
|
||||
GLuint _current_fbo;
|
||||
int _num_active_texture_stages;
|
||||
|
||||
int _error_count;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue