Fix #21667: smoke drawing crashes calling glTexImage3D on graphics card that do
not support it.
This commit is contained in:
		@@ -240,6 +240,11 @@ void draw_volume(Scene *scene, ARegion *ar, View3D *v3d, Base *base, GPUTexture
 | 
			
		||||
	
 | 
			
		||||
	float size[3];
 | 
			
		||||
 | 
			
		||||
	if(!tex) {
 | 
			
		||||
		printf("Could not allocate 3D texture for 3D View smoke drawing.\n");
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tstart();
 | 
			
		||||
 | 
			
		||||
	VECSUB(size, max, min);
 | 
			
		||||
@@ -365,7 +370,7 @@ void draw_volume(Scene *scene, ARegion *ar, View3D *v3d, Base *base, GPUTexture
 | 
			
		||||
		glProgramLocalParameter4fARB (GL_FRAGMENT_PROGRAM_ARB, 1, 7.0, 7.0, 7.0, 1.0);
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
		printf("Your gfx card does not support 3dview smoke drawing.\n");
 | 
			
		||||
		printf("Your gfx card does not support 3D View smoke drawing.\n");
 | 
			
		||||
 | 
			
		||||
	GPU_texture_bind(tex, 0);
 | 
			
		||||
	if(tex_shadow)
 | 
			
		||||
 
 | 
			
		||||
@@ -392,6 +392,9 @@ GPUTexture *GPU_texture_create_3D(int w, int h, int depth, float *fpixels)
 | 
			
		||||
	void *pixels = NULL;
 | 
			
		||||
	float vfBorderColor[4] = {0.0f, 0.0f, 0.0f, 0.0f};
 | 
			
		||||
 | 
			
		||||
	if(!GLEW_VERSION_1_2)
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	tex = MEM_callocN(sizeof(GPUTexture), "GPUTexture");
 | 
			
		||||
	tex->w = w;
 | 
			
		||||
	tex->h = h;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user