Browse Source

doc: compiling Method Chaining page snippets.

pull/233/head
Vladimír Vondruš 8 years ago
parent
commit
be789db119
  1. 26
      doc/method-chaining.dox
  2. 33
      doc/snippets/Magnum.cpp

26
doc/method-chaining.dox

@ -44,19 +44,7 @@ bound somewhere. Method chaining encourages you to configure whole object in
one run, effectively reducing the number of needed bindings. Consider the
following example:
@code{.cpp}
Texture2D carDiffuseTexture, carSpecularTexture, carBumpTexture;
carDiffuseTexture.setStorage(5, TextureFormat::SRGB8);
carSpecularTexture.setStorage(3, TextureFormat::R8);
carBumpTexture.setStorage(5, TextureFormat::RGB8);
carDiffuseTexture.setSubImage(0, {}, diffuse);
carSpecularTexture.setSubImage(0, {}, specular;
carBumpTexture.setSubImage(0, {}, bump);
carDiffuseTexture.generateMipmap();
carSpecularTexture.generateMipmap();
carBumpTexture.generateMipmap();
@endcode
@snippet Magnum.cpp method-chaining-texture
This code is written that similar configuration steps are grouped together,
which might be good when somebody needs to change something for all three
@ -65,17 +53,7 @@ names and after each configuration step the texture must be rebound to another.
With method chaining used the code looks much lighter and each object is
configured in one run, reducing count of bind calls from 9 to 3.
@code{.cpp}
carDiffuseTexture.setStorage(5, TextureFormat::SRGB8)
.setSubImage(0, {}, diffuse)
.generateMipmap();
carSpecularTexture.setStorage(3, TextureFormat::R8)
.setSubImage(0, {}, diffuse)
.generateMipmap();
carBumpTexture.setStorage(5, TextureFormat::RGB8)
.setSubImage(0, {}, bump)
.generateMipmap();
@endcode
@snippet Magnum.cpp method-chaining-texture-chained
Method chaining is not used on non-configuring functions, such as
@ref Framebuffer::clear() or @ref Mesh::draw(), as these won't be commonly used

33
doc/snippets/Magnum.cpp

@ -82,6 +82,39 @@ using namespace Magnum::Math::Literals;
int main() {
#ifndef MAGNUM_TARGET_GLES2
{
ImageView2D diffuse{PixelFormat::RGBA, PixelType::UnsignedByte, {}};
ImageView2D specular{PixelFormat::RGBA, PixelType::UnsignedByte, {}};
ImageView2D bump{PixelFormat::RGBA, PixelType::UnsignedByte, {}};
/* [method-chaining-texture] */
Texture2D carDiffuseTexture, carSpecularTexture, carBumpTexture;
carDiffuseTexture.setStorage(5, TextureFormat::SRGB8, {256, 256});
carSpecularTexture.setStorage(3, TextureFormat::R8, {256, 256});
carBumpTexture.setStorage(5, TextureFormat::RGB8, {256, 256});
carDiffuseTexture.setSubImage(0, {}, diffuse);
carSpecularTexture.setSubImage(0, {}, specular);
carBumpTexture.setSubImage(0, {}, bump);
carDiffuseTexture.generateMipmap();
carSpecularTexture.generateMipmap();
carBumpTexture.generateMipmap();
/* [method-chaining-texture] */
/* [method-chaining-texture-chained] */
carDiffuseTexture.setStorage(5, TextureFormat::SRGB8, {256, 256})
.setSubImage(0, {}, diffuse)
.generateMipmap();
carSpecularTexture.setStorage(3, TextureFormat::R8, {256, 256})
.setSubImage(0, {}, diffuse)
.generateMipmap();
carBumpTexture.setStorage(5, TextureFormat::RGB8, {256, 256})
.setSubImage(0, {}, bump)
.generateMipmap();
/* [method-chaining-texture-chained] */
}
#endif
{
auto importSomeMesh() -> std::tuple<Mesh, Buffer, Buffer>;
/* [opengl-wrapping-nocreate] */

Loading…
Cancel
Save