Пример #1
0
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);
}
Пример #2
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;
}