Cogs.Rendering
Loading...
Searching...
No Matches
Loading effects

Specifying our shaders

For this example we are using GLSL shaders and loading them to a "OpenGL20" device. When using GLSL shaders it is necessary to use attribute names from the set of recognized attributes described in Attributes.

Vertex shader:

uniform mat4 projectionMatrix;
attribute vec3 aPosition;
attribute vec4 aColor;
varying vVec4 vColor;
void main()
{
vColor = aColor;
gl_Position = projectionMatrix * aPosition;
}

Pixel shader:

varying vVec4 vColor;
void main()
{
gl_FragData[0] = vColor;
}

Loading our effect

To load an effect we need at least a vertex shader and in most cases a pixel shaders. These can be provided to the effects interface as string buffers.

#include <Rendering/IEffects.h>
{
...
std::string vertexShader = // Vertex shader contents.
std::string pixelShader = // Pixel shader contents.
// Get a pointer to the effects interface.
auto effects = device->getEffects();
// Load our shaders and compile them into an effect.
auto effectHandle = effects->loadEffectSource(vertexShader, pixelShader);
if (HandleIsValid(effectHandle)) {
// Success!
}
...
}

To use our effect we also need to create an input layout to map vertex buffer data to a format suitable for consumption by our shader. See Pipeline Setup for more information.