All pastes #457048 Raw Edit

Anonymous

public text v1 · immutable
#457048 ·published 2007-04-25 04:24 UTC
rendered paste body
bool SDLRenderArea::init(RenderArea* sharedArea)
{
    std::cout << "Initializing SDLRenderArea" << std::endl;
    

#if defined(_WIN32)
    m_hglrc = wglGetCurrentContext();
    m_hdc = wglGetCurrentDC();
    WGLAttachContext(m_hdc, m_hglrc);
#elif defined(LINUX)
    m_hglrc = glXGetCurrentContext();
    m_drawable = glXGetCurrentDrawable();
    m_dpy = glXGetCurrentDisplay();
    GLXAttachContext(m_dpy, m_hglrc);
#else
#error
#endif

    makeCurrent();

    if (!nvui::RenderArea::init(sharedArea))
        throw std::string("bad");

    NVSG_ASSERT(m_renderTraverser == 0);
    NVSG_VERIFY(m_renderTraverser = new GLTraverser);

    // Load Shaders
    std::cout << "Begin loading shaders." << std::endl;
    std::string path;
    nvutil::GetCurrentDir( path );
    path += "/shaders/blue.cg";
    // Create the context, this is a container for Cg programs    
    CGcontext context = cgCreateContext();
    
    if(context == NULL){
      std::cout << "Failed to create CGcontext." << std::endl;
      exit(-1);
    }else{
      CGprogram program = cgCreateProgramFromFile(
	  context,  // The context where we want it added
	  CG_SOURCE,        // The following parameter is an
			    // array of bytes containing Cg source
	  path.c_str(),     // The sourcefile
  	  CG_PROFILE_ARBVP1,// The profile 
	  "main",           // The entry function 
	  NULL              // Compiler options
	  );

      if(program==NULL){
	std::cout << "Failed to compile the program: " << path.c_str() << std::endl;
	exit(-1);
      }else{
	std::cout << "Loaded shader: " << path << std::endl;
	// Now load the program
	cgGLLoadProgram(program);
	
	// Enable the profile
	cgGLEnableProfile(CG_PROFILE_ARBVP1);
	
	// Bind the program
	cgGLBindProgram(program);
      }
    }

    m_renderTraverser->addRef();
}