Tutorials

Tutorials for getting started with programming on Linux

Fragment Shader

Simple Astroids clone

Published
Liked the article? Share it!

If you noticed any problems with black being drawn on top of sprites, that is because transparent fragments aren’t being discarded. This step is just a quick change to the fragment shader to fix this problem.

shader/fragment.glsl
#version 120 varying vec2 texcoord; uniform sampler2D mytexture; void main(void) { vec2 flipped_texcoord = vec2(texcoord.x, 1.0 - texcoord.y); vec4 frag = texture2D(mytexture, flipped_texcoord); if(frag.z == 0) { discard; } gl_FragColor = frag; }

Compile

Since our shader code is compiled by our program, there’s no need to recompile. But just to have as a reference, compile command is below.

$ gcc -c -o DashGL/dashgl.o DashGL/dashgl.c -lepoxy -lpng -lm
$ gcc `pkg-config --cflags gtk+-3.0` main.c DashGL/dashgl.o `pkg-config --libs gtk+-3.0` \
-lepoxy -lm -lpng

Run

$ ./a.out