#include #include char *vsh="\ varying vec3 s[4];\ void main(){\ gl_Position=gl_Vertex;\ s[0]=vec3(0);\ s[3]=vec3(sin(abs(gl_Vertex.x*.0001)),\ cos(abs(gl_Vertex.x*.0001)),0);\ s[1]=s[3].zxy;\ s[2]=s[3].zzx;}"; char *fsh="\ varying vec3 s[4];\ void main(){\ float t,b,c,h=0;\ vec3 m,n,p=vec3(.2),d=normalize(.001*gl_FragCoord.rgb-p);\ for(int i=0;i<4;i++){\ t=2;\ for(int i=0;i<4;i++){\ b=dot(d,n=s[i]-p);\ c=b*b+.2-dot(n,n);\ if(b-c0){m=s[i];t=b-c;}\ }\ p+=t*d;\ d=reflect(d,n=normalize(p-m));\ h+=pow(n.x*n.x,44.)+n.x*n.x*.2;\ }\ gl_FragColor=vec4(h,h*h,h*h*h*h,h);}\ "; PIXELFORMATDESCRIPTOR pfd = {0,1,PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0}; DEVMODE dmScreenSettings = { 0,0,0,sizeof(DEVMODE),0,DM_PELSWIDTH|DM_PELSHEIGHT,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1024,768,0,0,0,0,0,0,0,0,0,0}; int WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN); HDC hdc = GetDC(CreateWindow("edit",0,WS_POPUP | WS_VISIBLE | WS_MAXIMIZE, 0, 0, 0, 0, 0, 0, 0, 0)); SetPixelFormat(hdc, ChoosePixelFormat(hdc, &pfd) , &pfd); wglMakeCurrent(hdc, wglCreateContext(hdc)); ShowCursor(0); GLuint p = ((PFNGLCREATEPROGRAMPROC)wglGetProcAddress("glCreateProgram"))(); GLuint s = ((PFNGLCREATESHADERPROC)( wglGetProcAddress("glCreateShader")))(GL_VERTEX_SHADER); ((PFNGLSHADERSOURCEPROC)wglGetProcAddress("glShaderSource"))(s, 1, &vsh,0); // load vertex shader ((PFNGLCOMPILESHADERPROC)wglGetProcAddress("glCompileShader"))(s); // compile vertex shader ((PFNGLATTACHSHADERPROC)wglGetProcAddress("glAttachShader"))(p, s); // attach vertex shader to program s = ((PFNGLCREATESHADERPROC) wglGetProcAddress("glCreateShader"))(GL_FRAGMENT_SHADER); ((PFNGLSHADERSOURCEPROC)wglGetProcAddress("glShaderSource"))(s, 1, &fsh,0); // load fragment shader ((PFNGLCOMPILESHADERPROC)wglGetProcAddress("glCompileShader"))(s); // compile fragment shader ((PFNGLATTACHSHADERPROC)wglGetProcAddress("glAttachShader"))(p, s); // attach fragment shader ((PFNGLLINKPROGRAMPROC)wglGetProcAddress("glLinkProgram"))(p); // link program ((PFNGLUSEPROGRAMPROC)wglGetProcAddress("glUseProgram"))(p); // use program loop: int t = GetTickCount(); glRecti(t,t,-t,-t); // draw a full screen rectangle, gets clipped automatically SwapBuffers(hdc); // swap backbuffer if (GetAsyncKeyState(VK_ESCAPE)) // quit if we press escape ExitProcess(0); goto loop; // loop forever }