void intro_do( long time ) { //--- update parameters ----------------------------------------- const float t = 0.001f*(float)time; // camera position fparams[ 0] = 2.0f; fparams[ 1] = 0.0f; fparams[ 2] = 2.0f; // camera target fparams[ 4] = 0.0f; fparams[ 5] = 0.0f; fparams[ 6] = 0.0f; // sphere fparams[ 8] = 0.0f; fparams[ 9] = 0.0f; fparams[10] = 0.0f; fparams[11] = 1.0f; /* // Gen renderbuffer glGenRenderbuffersEXT(1, &frontb); // Bind renderbuffer glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, frontb); // Init as a depth buffer glRenderbufferStorageEXT( GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, XRES, YRES); // Attach to the FBO for depth glFramebufferRenderbufferEXT( GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, frontb); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);*/ //--- render ----------------------------------------- static float reso[4]; reso[0] = XRES; reso[1] = YRES; reso[2] = XRES; reso[3] = YRES; oglUseProgram( pid ); glUniform1fARB( oglGetUniformLocation( pid, "iGlobalTime" ), t ); oglUniform4fv( oglGetUniformLocation( pid, "iResolution" ), 1, reso ); oglUniform4fv( oglGetUniformLocation( pid, "fpar" ), 4, fparams ); glRects( -1, -1, 1, 1 ); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0); }
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASS wc; // create window ZeroMemory( &wc, sizeof(WNDCLASS) ); wc.style = CS_OWNDC|CS_HREDRAW|CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.hInstance = hPrevInstance; wc.lpszClassName = "iq"; if( !RegisterClass(&wc) ) return( 0 ); const int dws = WS_VISIBLE | WS_CAPTION | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_SYSMENU; AdjustWindowRect( &rec, dws, 0 ); HWND hWnd = CreateWindowEx( WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, wc.lpszClassName, "accio", dws, (GetSystemMetrics(SM_CXSCREEN)-rec.right+rec.left)>>1, (GetSystemMetrics(SM_CYSCREEN)-rec.bottom+rec.top)>>1, rec.right-rec.left, rec.bottom-rec.top, 0, 0, hPrevInstance, 0 ); if( !hWnd ) return( 0 ); HDC hDC=GetDC(hWnd); if( !hDC ) return( 0 ); // init opengl int pf = ChoosePixelFormat(hDC,&pfd); if( !pf ) return( 0 ); if( !SetPixelFormat(hDC,pf,&pfd) ) return( 0 ); HGLRC hRC = wglCreateContext(hDC); if( !hRC ) return( 0 ); if( !wglMakeCurrent(hDC,hRC) ) return( 0 ); // init extensions for( int i=0; i<(sizeof(funcPtrs)/sizeof(void*)); i++ ) { funcPtrs[i] = wglGetProcAddress( funcNames[i] ); if( !funcPtrs[i] ) return 0; } // create shader int p = oglCreateProgram(); // int v = oglCreateShader(GL_VERTEX_SHADER); // oglShaderSource(v, 1, &vertexShader, 0); // oglCompileShader(v); // oglAttachShader(p,v); int f = oglCreateShader(GL_FRAGMENT_SHADER); oglShaderSource(f, 1, &fragmentShader, 0); oglCompileShader(f); oglAttachShader(p,f); oglLinkProgram(p); oglUseProgram(p); ShowCursor(0); // run /* do { glColor3f(t,sinf(.25f*t),0.0f); glRects(-1,-1,1,1); SwapBuffers(hDC); //wglSwapLayerBuffers( hDC, WGL_SWAP_MAIN_PLANE ); }while ( !GetAsyncKeyState(VK_ESCAPE) ); */ int done = 0; while( !done ) { const float t = .0025f*(float)(GetTickCount()&65535); MSG msg; while( PeekMessage(&msg,0,0,0,PM_REMOVE) ) { if( msg.message==WM_QUIT ) done=1; TranslateMessage( &msg ); DispatchMessage( &msg ); } glColor3f(t,sinf(.25f*t),0.0f); glRects(-1,-1,1,1); SwapBuffers( hDC ); } ExitProcess( 0 ); return 0; }