I totally agree with samcl
The main reason for not using assembler is that you can no longer access Videomemory. Back in the early days (you mentioned Castle Wolfenstein), a special video mode called 0x13h appeared , where your graphic was just a block of memory (each pixel was a palette color ranging from 0-255 to 1 byte). You were able to access this memory through this particular video mode, however today everything is much more complicated.
Today you have a very fast Videomemory, and using your processor to access it simply disrupts all the performance, since your processor is connected via PCI-Express / AGP / PCI / VESA-LOCALBUS / ISA (<- remember someone !?)
Graphical programming often provides many read and write capabilities (reading pixels, checking transparency, multiplying by alpha, pix, etc.). Modern memory interfaces are much slower than direct access internally to the graphics card. That's why you really should use shaders, as Robert Gould suggests. This way you can write faster and easier to understand code, and it will not stop your GFX memory.
IF you're more interested in GFX programming, you can water your appetite shadertoy , a community dedicated to shaderbased effects, complemented by Running Shadercode using WebGL.
Also your beginner assembler code will be pretty lame. in quality, as in performance. Trust me. Optimizing such primitive code takes a lot of time. Thus, your compiled C / C ++ code will significantly exceed your handwritten asm.
If you are initialized in Assembler, try doing something like diskaccess. Here you can get great performance.
source share