<!-- clanlib header begin --> <HTML> <HEAD> <TITLE>CL_ProgramObject - ClanLib Game SDK</TITLE> <STYLE TYPE="text/css"><!-- HTML BODY { font-family: verdana, helvetica, sans-serif; font-size: 12px; } H1 { font-size: 22px; } H2 { font-size: 18px; } H3 { font-size: 16px; } H4 { font-size: 14px; } P { font-size: 12px; } LI { font-size: 12px; } --></STYLE> </HEAD> <body bgcolor=white text=black link=blue vlink=#800080> <center> <img src="http://clanlib.org/gfx/clanlib.png"> </center> <!-- clanlib header end --> <center> <p> <a href="http://clanlib.org/docs.html">Home</a> | <a href="classes.html">All Classes</a> | <a href="modules.html">Grouped Classes</a> | <a href="index.html">Index</a> | <a href="search.html">Search</a> </p> </center> <h1>Class CL_ProgramObject</h1> <p> OpenGL Program Object <a href="#description">More...</a></p> <p>Derived from: <i>none</i> <br> Derived by: <i>none</i> <br>Group: GL (Display 3D)</p> <p> #include <ClanLib/gl.h> <p> <table border=0 width=100%> </table> <p><b>Construction:</b></p> <table border=0 width=100%> <tr><td width=30% valign=top><p><a href="CL_ProgramObject__CL_ProgramObject.html">CL_ProgramObject</a></p></td><td valign=top><p> Construct OpenGL program object.</p></td></tr></table> <p><b>Attributes:</b></p> <table border=0 width=100%> <tr><td width=30% valign=top><p><a href="CL_ProgramObject__get_handle.html">get_handle</a></p></td><td valign=top><p> Returns the OpenGL program object handle.</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__get_link_status.html">get_link_status</a></p></td><td valign=top><p> Returns true if the link succeeded.</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__get_validate_status.html">get_validate_status</a></p></td><td valign=top><p> Returns true if validation succeeded.</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__get_shaders.html">get_shaders</a></p></td><td valign=top><p> Returns the shaders attached to the program object. </p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__get_info_log.html">get_info_log</a></p></td><td valign=top><p> Returns the current info log for the program object.</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__get_attribute_count.html">get_attribute_count</a></p></td><td valign=top><p> Returns the count of active attributes.</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__get_attributes.html">get_attributes</a></p></td><td valign=top><p> Returns the active attributes.</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__get_attribute_location.html">get_attribute_location</a></p></td><td valign=top><p> Returns the location of a named active attribute.</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__get_uniform_count.html">get_uniform_count</a></p></td><td valign=top><p> Returns the count of active uniform variables.</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__has_uniform.html">has_uniform</a></p></td><td valign=top><p> Returns true if the uniform variable is present in the program.</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__get_uniforms.html">get_uniforms</a></p></td><td valign=top><p> Returns a list of the active uniforms.</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__get_uniform_location.html">get_uniform_location</a></p></td><td valign=top><p> Returns the location of a named uniform variable.</p></td></tr></table> <p><b>Operations:</b></p> <table border=0 width=100%> <tr><td width=30% valign=top><p><a href="CL_ProgramObject__attach.html">attach</a></p></td><td valign=top><p> Add shader to program object.</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__detach.html">detach</a></p></td><td valign=top><p> Remove shader from program object.</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__bind_attribute_location.html">bind_attribute_location</a></p></td><td valign=top><p> Bind attribute to specific location.</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__link.html">link</a></p></td><td valign=top><p> Link program.</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__validate.html">validate</a></p></td><td valign=top><p> Validate program.</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__use.html">use</a></p></td><td valign=top><p> Start using the shader.</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__disable.html">disable</a></p></td><td valign=top><p> Stop using the shader.</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__set_uniform.html">set_uniform</a></p></td><td valign=top><p> Set uniform variable(s).</p></td></tr><tr><td width=30% valign=top><p><a href="CL_ProgramObject__set_uniform_matrix.html">set_uniform_matrix</a></p></td><td valign=top><p> Set uniform matrices.</p></td></tr></table> <a name="#description"><p><b>Detailed description:</b></p> <p>The shader objects that are to be used by programmable stages of OpenGL are collected together to form a program object. CL_ProgramObject is ClanLib's C++ interface to OpenGL program objects.</p> <p>To construct a program object programatically, the procedure is as follows:</p> <pre> CL_ShaderObject vertex_shader(cl_shadertype_vertex, vertex_glsl_sourcecode); CL_ShaderObject fragment_shader(cl_shadertype_fragment, fragment_glsl_sourcecode); CL_ProgramObject program; program.attach(vertex_shader); program.attach(fragment_shader); program.link(); </pre> <p>For more information about program objects, see the OpenGL 2.0 specification at <a href="http://www.opengl.org">www.opengl.org</a>. Documentation about the OpenGL Shader Language (GLSL) is also available from www.opengl.org.</p> <!-- clanlib footer begin --> <center><br><br><font color="#a0a0a0"> Questions or comments, write to the <a href="http://clanlib.org/contact.html">ClanLib mailing list</a>. </font></center> </body> </html> <!-- clanlib footer end -->