std::string Video3DUberShader::_warp_pass_geometry_shader() const { std::string geometry_shader( Resources::lookup_shader(Resources::shaders_uber_shaders_gbuffer_video3d_warp_pass_geom) ); return geometry_shader; }
ShaderColorGeometry::ShaderColorGeometry(GraphicContext &gc) { ShaderObject vertex_shader(gc, shadertype_vertex, vertex); if(!vertex_shader.compile()) { throw Exception(string_format("Unable to compile vertex shader object: %1", vertex_shader.get_info_log())); } ShaderObject geometry_shader(gc, shadertype_geometry, geometry); if(!geometry_shader.compile()) { throw Exception(string_format("Unable to compile geometry shader object: %1", geometry_shader.get_info_log())); } if (!glProgramParameteri) throw Exception("Geomtry shader is not available"); ShaderObject fragment_shader(gc, shadertype_fragment, fragment); if(!fragment_shader.compile()) { throw Exception(string_format("Unable to compile fragment shader object: %1", fragment_shader.get_info_log())); } program_object = ProgramObject(gc); program_object.attach(vertex_shader); program_object.attach(geometry_shader); program_object.attach(fragment_shader); program_object.bind_attribute_location(0, "InPosition"); program_object.bind_attribute_location(1, "InColor"); program_object.bind_frag_data_location(0, "cl_FragColor"); if (!program_object.link()) { throw Exception(string_format("Unable to link program object: %1", program_object.get_info_log())); } program_object.set_uniform1i("Texture0", 0); gpu_uniforms = clan::UniformVector<ProgramUniforms>(gc, 1); }
//------------------------------------------------------------- // GLSupport::gl_init() initialize //------------------------------------------------------------- void GLSupport::gl_init() { static int initialized=0; if(!initialized){ const GLubyte *version=glGetString(GL_VERSION); const GLubyte *glsl_version=glGetString(GL_SHADING_LANGUAGE_VERSION); gl_version=10*(version[0]-'0'); gl_version+=version[2]-'0'; ARB_multitexture_supported=extensionSupported("GL_ARB_multitexture"); ARB_texture_env_combine_supported=extensionSupported("GL_ARB_texture_env_combine"); ARB_texture_cube_map_supported=extensionSupported("GL_ARB_texture_cube_map"); ARB_texture_env_dot3_supported=extensionSupported("GL_ARB_texture_env_dot3"); ARB_shading_language_100_supported=extensionSupported("GL_ARB_shading_language_100"); ARB_shader_objects_supported=extensionSupported("GL_ARB_shader_objects"); EXT_framebuffer_object_supported=extensionSupported("GL_EXT_framebuffer_object"); ARB_geometry_shader4_supported=extensionSupported("GL_ARB_geometry_shader4"); printf("OGL version : %s (%d)\n",version,gl_version); printf("GLSL version : %s \n",glsl_version); #ifdef SHOW_ALL_EXTENSIONS const GLubyte *exts=glGetString(GL_EXTENSIONS); printf("%s\n",exts); #endif initialized=1; } setContext(); // make white texture for ogl1.1 specular pass //if(gl_version==11){ // glGenTextures (1, &white_texture); // glBindTexture (GL_TEXTURE_2D, white_texture); //} glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); //glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST ); //glHint(GL_POINT_SMOOTH_HINT, GL_NICEST ); //glPolygonOffset(0.1,1); //glEnable(GL_POLYGON_OFFSET_FILL); int auxbufs=0; glGetIntegerv(GL_SAMPLE_BUFFERS_ARB,&auxbufs); //glEnable(GL_POLYGON_SMOOTH); //glEnable(GL_NORMALIZE); // unsigned char pixels[2*2*4]; //memset (pixels, 0xff, 2*2*4); //glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, // 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels); txchnls=1; if(multiTextures()){ #ifdef GL_MAX_TEXTURE_UNITS_ARB glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB,&txchnls); #else #ifdef GL_MAX_ACTIVE_TEXTURES_ARB glGetIntegerv(GL_MAX_ACTIVE_TEXTURES_ARB,&txchnls); #endif #endif printf("max multi-texture channels = %d\n",txchnls); } else printf(" multi-textures support disabled\n"); if(glsl()){ printf("GLSL supported\n"); if(geometry_shader()) printf("Geometry shader supported\n"); else printf("Geometry shader NOT supported\n"); if(renderTextures()) printf("Render to Texture supported\n"); else printf("Render to Texture NOT supported\n"); } else printf("GLSL NOT supported\n"); set_spectex(1); }