Ignore:
Timestamp:
08/21/08 16:31:03 (16 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/DeferredShader.cpp

    r2858 r2859  
    11#include "DeferredShader.h" 
    2 #include "glInterface.h" 
     2#include "FrameBufferObject.h" 
     3#include "RenderState.h" 
    34 
    45 
     
    910{ 
    1011 
     12 
     13static void PrintGLerror(char *msg) 
     14{ 
     15        GLenum errCode; 
     16        const GLubyte *errStr; 
     17         
     18        if ((errCode = glGetError()) != GL_NO_ERROR)  
     19        { 
     20                errStr = gluErrorString(errCode); 
     21                fprintf(stderr,"OpenGL ERROR: %s: %s\n", errStr, msg); 
     22        } 
     23} 
     24 
     25 
     26static CGprogram sCgDeferredProgram; 
     27static CGparameter sColorsTexParam; 
     28static CGparameter sPositionsTexParam; 
     29static CGparameter sNormalsTexParam; 
     30 
     31 
     32DeferredShader::DeferredShader(int w, int h): 
     33mWidth(w), mHeight(h) 
     34{} 
     35 
     36 
     37void DeferredShader::Init(CGcontext context) 
     38{ 
     39         
     40        sCgDeferredProgram =  
     41                cgCreateProgramFromFile(context,  
     42                                                                CG_SOURCE, 
     43                                                                "src/shaders/deferred.cg",  
     44                                                                RenderState::sCgFragmentProfile, 
     45                                                                "main", 
     46                                                                NULL); 
     47 
     48        if (sCgDeferredProgram != NULL) 
     49        { 
     50                cgGLLoadProgram(sCgDeferredProgram); 
     51 
     52                // we need size of texture for scaling 
     53                sPositionsTexParam = cgGetNamedParameter(sCgDeferredProgram, "positions");   
     54                sColorsTexParam = cgGetNamedParameter(sCgDeferredProgram, "colors");   
     55                sNormalsTexParam = cgGetNamedParameter(sCgDeferredProgram, "normals");  
     56        } 
     57        else 
     58                cerr << "deferred program failed to load" << endl; 
     59 
     60 
     61        PrintGLerror("init"); 
     62} 
     63 
     64 
    1165void DeferredShader::Render(FrameBufferObject *fbo) 
    1266{ 
     67        GLuint positionsTex = fbo->GetColorBuffer(0)->GetTexture(); 
     68        GLuint colorsTex = fbo->GetColorBuffer(0)->GetTexture(); 
     69        GLuint normalsTex = fbo->GetColorBuffer(0)->GetTexture(); 
     70 
    1371        glPushAttrib(GL_VIEWPORT_BIT); 
    14         glViewport(0, 0, fbo->GetWidth(), fbo->GetHeight()); 
     72        glViewport(0, 0, mWidth, mHeight); 
    1573 
    1674        glDisable(GL_ALPHA_TEST); 
     
    3593        cgGLBindProgram(sCgDeferredProgram); 
    3694 
     95        cgGLSetTextureParameter(sColorsTexParam, colorsTex); 
     96        cgGLEnableTextureParameter(sColorsTexParam); 
     97 
    3798        cgGLSetTextureParameter(sPositionsTexParam, positionsTex); 
    3899        cgGLEnableTextureParameter(sPositionsTexParam); 
    39  
    40         cgGLSetTextureParameter(sColorsTexParam, colorsTex); 
    41         cgGLEnableTextureParameter(sColorsTexParam); 
    42100 
    43101        cgGLSetTextureParameter(sNormalsTexParam, normalsTex); 
Note: See TracChangeset for help on using the changeset viewer.