glPushMatrix();
glTranslatef(250,250,0.0); // 3. Translate to the object's position.
glRotatef(angle,0.0,0.0,1.0); // 2. Rotate the object.
glTranslatef(-250,-250,0.0); // 1. Translate to the origin.
glPopMatrix();
Perspective projection
Orthographic projection
Sprite animation
Skeletal 2D
Skeletal 3D
Vertex
No interpolation
Constant
Bilinar
Cubic
Z-Fighting
Cube Tessellation
Geometry shader grass
Screen effects
#version 150 core
layout(points) in;
layout(line_strip, max_vertices = 11) out;
in vec3 vColor[];
out vec3 fColor;
const float PI = 3.1415926;
void main() {
fColor = vColor[0];
for (int i = 0; i <= 10; i++) {
// Angle between each side in radians
float ang = PI * 2.0 / 10.0 * i;
// Offset from center of point (0.3 to accomodate for aspect ratio)
vec4 offset = vec4(cos(ang) * 0.3, -sin(ang) * 0.4, 0.0, 0.0);
gl_Position = gl_in[0].gl_Position + offset;
EmitVertex();
}
EndPrimitive();
}
Rasterization
Ray Tracing
Motion blur
Chromatic Aberration
Decals
Depth of field
Caustics
Lens flare
Subsurface Scattering
Ambient Occlusion
Texture mapping
Color texture
Normal texture
Displacement texture
Color mapping
Color + disp + normal
Nearesth neighbor
Anisotropic
Bilinear
Trilinear
Not even death can save you from me!