Commit 8e400212 authored by hybrid's avatar hybrid

Geometry shaders need triangle_, not triangles, as output type

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@2928 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 51545ba0
...@@ -461,13 +461,16 @@ void COpenGLExtensionHandler::initExtensions(bool stencilBuffer) ...@@ -461,13 +461,16 @@ void COpenGLExtensionHandler::initExtensions(bool stencilBuffer)
#endif #endif
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &num); glGetIntegerv(GL_MAX_TEXTURE_SIZE, &num);
MaxTextureSize=static_cast<u32>(num); MaxTextureSize=static_cast<u32>(num);
#if defined(GL_ARB_geometry_shader4) || defined(GL_EXT_geometry_shader4) || defined(GL_NV_geometry_program4) || defined(GL_NV_geometry_shader4)
if (queryFeature(EVDF_GEOMETRY_SHADER)) if (queryFeature(EVDF_GEOMETRY_SHADER))
{ {
#if defined(GL_ARB_geometry_shader4) || defined(GL_EXT_geometry_shader4) || defined(GL_NV_geometry_shader4)
glGetIntegerv(GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT, &num); glGetIntegerv(GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT, &num);
MaxGeometryVerticesOut=static_cast<u32>(num); MaxGeometryVerticesOut=static_cast<u32>(num);
} #elif defined(GL_NV_geometry_program4)
extGlGetProgramiv(GEOMETRY_PROGRAM_NV, GL_MAX_PROGRAM_OUTPUT_VERTICES_NV, &num);
MaxGeometryVerticesOut=static_cast<u32>(num);
#endif #endif
}
#ifdef GL_EXT_texture_lod_bias #ifdef GL_EXT_texture_lod_bias
if (FeatureAvailable[IRR_EXT_texture_lod_bias]) if (FeatureAvailable[IRR_EXT_texture_lod_bias])
glGetFloatv(GL_MAX_TEXTURE_LOD_BIAS_EXT, &MaxTextureLODBias); glGetFloatv(GL_MAX_TEXTURE_LOD_BIAS_EXT, &MaxTextureLODBias);
......
...@@ -177,18 +177,21 @@ void COpenGLSLMaterialRenderer::OnUnsetMaterial() ...@@ -177,18 +177,21 @@ void COpenGLSLMaterialRenderer::OnUnsetMaterial()
BaseMaterial->OnUnsetMaterial(); BaseMaterial->OnUnsetMaterial();
} }
//! Returns if the material is transparent. //! Returns if the material is transparent.
bool COpenGLSLMaterialRenderer::isTransparent() const bool COpenGLSLMaterialRenderer::isTransparent() const
{ {
return BaseMaterial ? BaseMaterial->isTransparent() : false; return BaseMaterial ? BaseMaterial->isTransparent() : false;
} }
bool COpenGLSLMaterialRenderer::createProgram() bool COpenGLSLMaterialRenderer::createProgram()
{ {
Program = Driver->extGlCreateProgramObject(); Program = Driver->extGlCreateProgramObject();
return true; return true;
} }
bool COpenGLSLMaterialRenderer::createShader(GLenum shaderType, const char* shader) bool COpenGLSLMaterialRenderer::createShader(GLenum shaderType, const char* shader)
{ {
GLhandleARB shaderHandle = Driver->extGlCreateShaderObject(shaderType); GLhandleARB shaderHandle = Driver->extGlCreateShaderObject(shaderType);
...@@ -222,14 +225,16 @@ bool COpenGLSLMaterialRenderer::createShader(GLenum shaderType, const char* shad ...@@ -222,14 +225,16 @@ bool COpenGLSLMaterialRenderer::createShader(GLenum shaderType, const char* shad
Driver->extGlAttachObject(Program, shaderHandle); Driver->extGlAttachObject(Program, shaderHandle);
#if defined(GL_ARB_geometry_shader4) || defined(GL_EXT_geometry_shader4) || defined(GL_NV_geometry_program4) || defined(GL_NV_geometry_shader4)
if (shaderType==GL_GEOMETRY_SHADER_EXT && Driver->queryFeature(EVDF_GEOMETRY_SHADER)) if (shaderType==GL_GEOMETRY_SHADER_EXT && Driver->queryFeature(EVDF_GEOMETRY_SHADER))
{ {
#if defined(GL_ARB_geometry_shader4) || defined(GL_EXT_geometry_shader4) || defined(GL_NV_geometry_shader4)
Driver->extGlProgramParameteri(Program, GL_GEOMETRY_INPUT_TYPE_EXT, GL_TRIANGLES); Driver->extGlProgramParameteri(Program, GL_GEOMETRY_INPUT_TYPE_EXT, GL_TRIANGLES);
Driver->extGlProgramParameteri(Program, GL_GEOMETRY_OUTPUT_TYPE_EXT, GL_TRIANGLES); Driver->extGlProgramParameteri(Program, GL_GEOMETRY_OUTPUT_TYPE_EXT, GL_TRIANGLE_STRIP);
Driver->extGlProgramParameteri(Program, GL_GEOMETRY_VERTICES_OUT_EXT, Driver->MaxGeometryVerticesOut); Driver->extGlProgramParameteri(Program, GL_GEOMETRY_VERTICES_OUT_EXT, Driver->MaxGeometryVerticesOut);
} #elif defined(GL_NV_geometry_program4)
Driver->extGlProgramVertexLimit(GL_GEOMETRY_PROGRAM_NV, Driver->MaxGeometryVerticesOut);
#endif #endif
}
return true; return true;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment