Browse Source

Clarified required GL versions for shader attribute binding.

Also updated section names to follow coding style.
pull/279/head
Vladimír Vondruš 14 years ago
parent
commit
1ec34457ee
  1. 20
      src/AbstractShaderProgram.h

20
src/AbstractShaderProgram.h

@ -28,7 +28,7 @@ namespace Magnum {
/** @ingroup rendering /** @ingroup rendering
@brief Base class for shaders @brief Base class for shaders
@section AbstractShaderProgramSubclassing Subclassing workflow @section AbstractShaderProgram-subclassing Subclassing workflow
This class is designed to be used via subclassing. Subclasses define these This class is designed to be used via subclassing. Subclasses define these
functions and properties: functions and properties:
@ -73,7 +73,7 @@ void setProjectionMatrixUniform(const Matrix4& matrix) {
} }
@endcode @endcode
@subsection AbstractShaderProgramAttributeLocation Binding attribute location @subsection AbstractShaderProgram-attribute-location Binding attribute location
The preferred workflow is to specify attribute location for vertex shader The preferred workflow is to specify attribute location for vertex shader
input attributes and fragment shader output attributes explicitly in the input attributes and fragment shader output attributes explicitly in the
shader code, e.g.: shader code, e.g.:
@ -82,8 +82,12 @@ layout(location = 0) in vec4 vertex;
layout(location = 1) in vec3 normal; layout(location = 1) in vec3 normal;
layout(location = 2) in vec2 textureCoords; layout(location = 2) in vec2 textureCoords;
@endcode @endcode
@requires_gl (for explicit attribute location instead of using @requires_gl (for explicit input attribute location instead of using
bindAttributeLocation()) bindAttributeLocation())
@requires_gl (for explicit output attribute location or using
bindFragmentDataLocation())
@requires_gl30 Extension @extension{EXT,gpu_shader4} (for using
bindFragmentDataLocation())
@requires_gl33 Extension @extension{ARB,explicit_attrib_location} (for @requires_gl33 Extension @extension{ARB,explicit_attrib_location} (for
explicit attribute location instead of using bindAttributeLocation()) explicit attribute location instead of using bindAttributeLocation())
@ -100,7 +104,7 @@ bindAttributeLocation(TextureCoords::Location, "textureCoords");
// Link... // Link...
@endcode @endcode
@subsection AbstractShaderProgramTextureLayer Binding texture layer uniforms @subsection AbstractShaderProgram-texture-layer Binding texture layer uniforms
The preferred workflow is to specify texture layers directly in the shader The preferred workflow is to specify texture layers directly in the shader
code, e.g.: code, e.g.:
@code @code
@ -120,7 +124,7 @@ setUniform(uniformLocation("diffuseTexture"), DiffuseTextureLayer);
setUniform(uniformLocation("specularTexture"), SpecularTextureLayer); setUniform(uniformLocation("specularTexture"), SpecularTextureLayer);
@endcode @endcode
@section AbstractShaderProgramRenderingWorkflow Rendering workflow @section AbstractShaderProgram-rendering-workflow Rendering workflow
Basic workflow with %AbstractShaderProgram subclasses is: instancing the class Basic workflow with %AbstractShaderProgram subclasses is: instancing the class
(once at the beginning), then in Object::draw() reimplementation calling (once at the beginning), then in Object::draw() reimplementation calling
@ -238,7 +242,7 @@ class MAGNUM_EXPORT AbstractShaderProgram {
* before link(). * before link().
* @deprecated Preferred usage is to specify attribute location * @deprecated Preferred usage is to specify attribute location
* explicitly in the shader instead of using this function. See * explicitly in the shader instead of using this function. See
* @ref AbstractShaderProgramAttributeLocation "class documentation" * @ref AbstractShaderProgram-attribute-location "class documentation"
* for more information. * for more information.
*/ */
void bindAttributeLocation(GLuint location, const std::string& name); void bindAttributeLocation(GLuint location, const std::string& name);
@ -253,7 +257,7 @@ class MAGNUM_EXPORT AbstractShaderProgram {
* before link(). * before link().
* @deprecated Preferred usage is to specify attribute location * @deprecated Preferred usage is to specify attribute location
* explicitly in the shader instead of using this function. See * explicitly in the shader instead of using this function. See
* @ref AbstractShaderProgramAttributeLocation "class documentation" * @ref AbstractShaderProgram-attribute-location "class documentation"
* for more information. * for more information.
* @requires_gl * @requires_gl
* @requires_gl30 Extension @extension{EXT,gpu_shader4} * @requires_gl30 Extension @extension{EXT,gpu_shader4}

Loading…
Cancel
Save