* Fix for a crash in game engine vertex array drawing with texfaces.
* For 2D filters, don't require opengl 2.0 but just the extensions, so it works on computers without full 2.0 support too. * In debug mode, don't print memory statistics for preview render.
This commit is contained in:
parent
5cd4b6ac90
commit
3f488f4d70
|
@ -4434,7 +4434,7 @@ void RE_Database_Free(Render *re)
|
|||
LampRen *lar;
|
||||
|
||||
/* statistics for debugging render memory usage */
|
||||
if(G.f & G_DEBUG) {
|
||||
if((G.f & G_DEBUG) && (G.rendering)) {
|
||||
if((re->r.scemode & R_PREVIEWBUTS)==0) {
|
||||
BKE_image_print_memlist();
|
||||
MEM_printmemlist_stats();
|
||||
|
|
|
@ -54,11 +54,13 @@
|
|||
|
||||
|
||||
RAS_2DFilterManager::RAS_2DFilterManager():
|
||||
texturewidth(-1), textureheight(-1),
|
||||
texname(-1), texturewidth(-1), textureheight(-1),
|
||||
canvaswidth(-1), canvasheight(-1),
|
||||
numberoffilters(0),texname(-1)
|
||||
numberoffilters(0)
|
||||
{
|
||||
isshadersupported = GLEW_VERSION_2_0;
|
||||
isshadersupported = GLEW_ARB_shader_objects &&
|
||||
GLEW_ARB_fragment_shader && GLEW_ARB_multitexture;
|
||||
|
||||
if(!isshadersupported)
|
||||
{
|
||||
std::cout<<"shaders not supported!" << std::endl;
|
||||
|
@ -81,7 +83,6 @@ RAS_2DFilterManager::~RAS_2DFilterManager()
|
|||
unsigned int RAS_2DFilterManager::CreateShaderProgram(char* shadersource)
|
||||
{
|
||||
GLuint program = 0;
|
||||
#if defined(GL_ARB_shader_objects) && defined(WITH_GLEXT)
|
||||
GLuint fShader = glCreateShaderObjectARB(GL_FRAGMENT_SHADER);
|
||||
GLint success;
|
||||
|
||||
|
@ -117,7 +118,7 @@ unsigned int RAS_2DFilterManager::CreateShaderProgram(char* shadersource)
|
|||
std::cout << "2dFilters - Shader program validation error" << std::endl;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
return program;
|
||||
}
|
||||
|
||||
|
@ -151,7 +152,6 @@ unsigned int RAS_2DFilterManager::CreateShaderProgram(int filtermode)
|
|||
|
||||
void RAS_2DFilterManager::StartShaderProgram(unsigned int shaderprogram)
|
||||
{
|
||||
#if defined(GL_ARB_shader_objects) && defined(WITH_GLEXT)
|
||||
GLint uniformLoc;
|
||||
glUseProgramObjectARB(shaderprogram);
|
||||
uniformLoc = glGetUniformLocationARB(shaderprogram, "bgl_RenderedTexture");
|
||||
|
@ -178,14 +178,11 @@ void RAS_2DFilterManager::StartShaderProgram(unsigned int shaderprogram)
|
|||
{
|
||||
glUniform1fARB(uniformLoc,textureheight);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void RAS_2DFilterManager::EndShaderProgram()
|
||||
{
|
||||
#if defined(GL_ARB_shader_objects) && defined(WITH_GLEXT)
|
||||
glUseProgramObjectARB(0);
|
||||
#endif
|
||||
}
|
||||
|
||||
void RAS_2DFilterManager::SetupTexture()
|
||||
|
@ -295,7 +292,6 @@ void RAS_2DFilterManager::EnableFilter(RAS_2DFILTER_MODE mode, int pass, STR_Str
|
|||
{
|
||||
if(!isshadersupported)
|
||||
return;
|
||||
#if defined(GL_ARB_shader_objects) && defined(WITH_GLEXT)
|
||||
if(pass<0 || pass>=MAX_RENDER_PASS)
|
||||
return;
|
||||
|
||||
|
@ -336,5 +332,4 @@ void RAS_2DFilterManager::EnableFilter(RAS_2DFILTER_MODE mode, int pass, STR_Str
|
|||
m_filters[pass] = CreateShaderProgram(mode);
|
||||
m_enabled[pass] = 1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -142,6 +142,9 @@ void RAS_VAOpenGLRasterizer::IndexPrimitives( const vecVertexArray& vertexarrays
|
|||
glColor3d(0,0,0);
|
||||
}
|
||||
|
||||
EnableTextures(false);
|
||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
|
||||
// use glDrawElements to draw each vertexarray
|
||||
for (vt=0;vt<vertexarrays.size();vt++)
|
||||
{
|
||||
|
@ -168,6 +171,8 @@ void RAS_VAOpenGLRasterizer::IndexPrimitives( const vecVertexArray& vertexarrays
|
|||
|
||||
|
||||
}
|
||||
|
||||
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
}
|
||||
|
||||
void RAS_VAOpenGLRasterizer::IndexPrimitivesMulti( const vecVertexArray& vertexarrays,
|
||||
|
@ -281,6 +286,8 @@ void RAS_VAOpenGLRasterizer::TexCoordPtr(const RAS_TexVert *tv)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
glClientActiveTextureARB(GL_TEXTURE0_ARB);
|
||||
}
|
||||
|
||||
if(GLEW_ARB_vertex_program) {
|
||||
|
@ -359,10 +366,14 @@ void RAS_VAOpenGLRasterizer::EnableTextures(bool enable)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
glClientActiveTextureARB(GL_TEXTURE0_ARB);
|
||||
}
|
||||
else {
|
||||
if(enable) glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
else glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
if(texco_num) {
|
||||
if(enable) glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
else glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
}
|
||||
}
|
||||
|
||||
if(GLEW_ARB_vertex_program) {
|
||||
|
@ -383,5 +394,10 @@ void RAS_VAOpenGLRasterizer::EnableTextures(bool enable)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!enable) {
|
||||
m_last_texco_num = 0;
|
||||
m_last_attrib_num = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue