Browse Source

Shaders: use texture multi-bind functionality in Phong shader.

pull/51/head
Vladimír Vondruš 12 years ago
parent
commit
e3b0d1d4ce
  1. 5
      src/Magnum/Shaders/Phong.cpp
  2. 18
      src/Magnum/Shaders/Phong.h

5
src/Magnum/Shaders/Phong.cpp

@ -130,4 +130,9 @@ Phong& Phong::setSpecularTexture(Texture2D& texture) {
return *this; return *this;
} }
Phong& Phong::setTextures(Texture2D* ambient, Texture2D* diffuse, Texture2D* specular) {
AbstractTexture::bind(AmbientTextureLayer, {ambient, diffuse, specular});
return *this;
}
}} }}

18
src/Magnum/Shaders/Phong.h

@ -132,7 +132,7 @@ class MAGNUM_SHADERS_EXPORT Phong: public AbstractShaderProgram {
* @return Reference to self (for method chaining) * @return Reference to self (for method chaining)
* *
* Has effect only if @ref Flag::AmbientTexture is set. * Has effect only if @ref Flag::AmbientTexture is set.
* @see @ref setAmbientColor() * @see @ref setTextures(), @ref setAmbientColor()
*/ */
Phong& setAmbientTexture(Texture2D& texture); Phong& setAmbientTexture(Texture2D& texture);
@ -150,7 +150,7 @@ class MAGNUM_SHADERS_EXPORT Phong: public AbstractShaderProgram {
* @return Reference to self (for method chaining) * @return Reference to self (for method chaining)
* *
* Has effect only if @ref Flag::DiffuseTexture is set. * Has effect only if @ref Flag::DiffuseTexture is set.
* @see @ref setDiffuseColor() * @see @ref setTextures(), @ref setDiffuseColor()
*/ */
Phong& setDiffuseTexture(Texture2D& texture); Phong& setDiffuseTexture(Texture2D& texture);
@ -169,10 +169,22 @@ class MAGNUM_SHADERS_EXPORT Phong: public AbstractShaderProgram {
* @return Reference to self (for method chaining) * @return Reference to self (for method chaining)
* *
* Has effect only if @ref Flag::SpecularTexture is set. * Has effect only if @ref Flag::SpecularTexture is set.
* @see @ref setSpecularColor() * @see @ref setTextures(), @ref setSpecularColor()
*/ */
Phong& setSpecularTexture(Texture2D& texture); Phong& setSpecularTexture(Texture2D& texture);
/**
* @brief Set textures
* @return Reference to self (for method chaining)
*
* A particular texture has effect only if particular texture flag from
* @ref Phong::Flag "Flag" is set, you can use `nullptr` for the rest.
* More efficient than setting each texture separately.
* @see @ref setAmbientTexture(), @ref setDiffuseTexture(),
* @ref setSpecularTexture()
*/
Phong& setTextures(Texture2D* ambient, Texture2D* diffuse, Texture2D* specular);
/** /**
* @brief Set shininess * @brief Set shininess
* @return Reference to self (for method chaining) * @return Reference to self (for method chaining)

Loading…
Cancel
Save