skip switching texture modes when they're the same as the last used
This commit is contained in:
		@@ -147,6 +147,7 @@ typedef struct {
 | 
			
		||||
} DeferredCommand;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static TextureMode texture_mode_last_used = -1;
 | 
			
		||||
static Pipeline pipeline_last_used = PIPELINE_NO;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -401,6 +402,7 @@ static void finally_use_space_pipeline(void) {
 | 
			
		||||
    glMatrixMode(GL_MODELVIEW);
 | 
			
		||||
    glLoadMatrixf(&camera_look_at_matrix.row[0].x);
 | 
			
		||||
 | 
			
		||||
    texture_mode_last_used = -1;
 | 
			
		||||
    pipeline_last_used = PIPELINE_SPACE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -452,6 +454,7 @@ static void finally_use_2d_pipeline(void) {
 | 
			
		||||
    glMatrixMode(GL_MODELVIEW);
 | 
			
		||||
    glLoadIdentity();
 | 
			
		||||
 | 
			
		||||
    texture_mode_last_used = -1;
 | 
			
		||||
    pipeline_last_used = PIPELINE_2D;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -501,6 +504,9 @@ void use_texture_mode(TextureMode mode) {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void finally_use_texture_mode(TextureMode mode) {
 | 
			
		||||
    if (texture_mode_last_used == mode)
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
    static GLuint lists = 0;
 | 
			
		||||
    if (!lists) {
 | 
			
		||||
        lists = glGenLists(3);
 | 
			
		||||
@@ -539,6 +545,8 @@ static void finally_use_texture_mode(TextureMode mode) {
 | 
			
		||||
    } else {
 | 
			
		||||
        glCallList(lists + 2);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    texture_mode_last_used = mode;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user