コード例 #1
0
ファイル: ogldev_glfw_backend.cpp プロジェクト: qunny0/FTools
void GLFWBackendRun(ICallbacks* pCallbacks)
{
    if (!pCallbacks) {
        OGLDEV_ERROR("callbacks not specified");
        exit(1);
    }

    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
    glFrontFace(GL_CW);
    glCullFace(GL_BACK);
    glEnable(GL_CULL_FACE);

    if (sWithDepth) {
        glEnable(GL_DEPTH_TEST);
    }

    s_pCallbacks = pCallbacks;
    InitCallbacks();

    while (!glfwWindowShouldClose(s_pWindow)) {
        s_pCallbacks->RenderSceneCB();        
        glfwSwapBuffers(s_pWindow);
        glfwPollEvents();
    }
}
コード例 #2
0
OGLDEV_KEY GLUTKeyToOGLDEVKey(uint Key)
{
    switch (Key) {
		case GLUT_KEY_F1:        
			return OGLDEV_KEY_F1;
		case GLUT_KEY_F2:        
			return OGLDEV_KEY_F2;
		case GLUT_KEY_F3:       
			return OGLDEV_KEY_F3;
		case GLUT_KEY_F4:   
			return OGLDEV_KEY_F4;
		case GLUT_KEY_F5:      
			return OGLDEV_KEY_F5;
		case GLUT_KEY_F6:     
			return OGLDEV_KEY_F6;
		case GLUT_KEY_F7:     
			return OGLDEV_KEY_F7;
		case GLUT_KEY_F8:     
			return OGLDEV_KEY_F8;
		case GLUT_KEY_F9:     
			return OGLDEV_KEY_F9;
		case GLUT_KEY_F10:    
			return OGLDEV_KEY_F10;
		case GLUT_KEY_F11:   
			return OGLDEV_KEY_F11;
		case GLUT_KEY_F12:    
			return OGLDEV_KEY_F12;
		case GLUT_KEY_LEFT:         
			return OGLDEV_KEY_LEFT;
		case GLUT_KEY_UP:         
			return OGLDEV_KEY_UP;
		case GLUT_KEY_RIGHT:         
			return OGLDEV_KEY_RIGHT;
		case GLUT_KEY_DOWN:        
			return OGLDEV_KEY_DOWN;            
		case GLUT_KEY_PAGE_UP:   
			return OGLDEV_KEY_PAGE_UP;
		case GLUT_KEY_PAGE_DOWN:      
			return OGLDEV_KEY_PAGE_DOWN;
		case GLUT_KEY_HOME:    
			return OGLDEV_KEY_HOME;
		case GLUT_KEY_END:     
			return OGLDEV_KEY_END;	
		case GLUT_KEY_INSERT:         
            return OGLDEV_KEY_INSERT;
        case GLUT_KEY_DELETE:        
            return OGLDEV_KEY_DELETE;
        default:
            OGLDEV_ERROR("Unimplemented GLUT key");
            /*exit(1);*/  ///< this is a really crappy place to just exit.  Rather ignore.
            break;
    }
    
    return OGLDEV_KEY_UNDEFINED;
}
コード例 #3
0
ファイル: glut_backend.cpp プロジェクト: andriyut/ogldev
OGLDEV_KEY GLUTKeyToOGLDEVKey(uint Key)
{
    switch (Key) {
		case GLUT_KEY_F1:        
			return OGLDEV_KEY_F1;
		case GLUT_KEY_F2:        
			return OGLDEV_KEY_F2;
		case GLUT_KEY_F3:       
			return OGLDEV_KEY_F3;
		case GLUT_KEY_F4:   
			return OGLDEV_KEY_F4;
		case GLUT_KEY_F5:      
			return OGLDEV_KEY_F5;
		case GLUT_KEY_F6:     
			return OGLDEV_KEY_F6;
		case GLUT_KEY_F7:     
			return OGLDEV_KEY_F7;
		case GLUT_KEY_F8:     
			return OGLDEV_KEY_F8;
		case GLUT_KEY_F9:     
			return OGLDEV_KEY_F9;
		case GLUT_KEY_F10:    
			return OGLDEV_KEY_F10;
		case GLUT_KEY_F11:   
			return OGLDEV_KEY_F11;
		case GLUT_KEY_F12:    
			return OGLDEV_KEY_F12;
		case GLUT_KEY_LEFT:         
			return OGLDEV_KEY_LEFT;
		case GLUT_KEY_UP:         
			return OGLDEV_KEY_UP;
		case GLUT_KEY_RIGHT:         
			return OGLDEV_KEY_RIGHT;
		case GLUT_KEY_DOWN:        
			return OGLDEV_KEY_DOWN;            
		case GLUT_KEY_PAGE_UP:   
			return OGLDEV_KEY_PAGE_UP;
		case GLUT_KEY_PAGE_DOWN:      
			return OGLDEV_KEY_PAGE_DOWN;
		case GLUT_KEY_HOME:    
			return OGLDEV_KEY_HOME;
		case GLUT_KEY_END:     
			return OGLDEV_KEY_END;	
		case GLUT_KEY_INSERT:         
            return OGLDEV_KEY_INSERT;
        case GLUT_KEY_DELETE:        
            return OGLDEV_KEY_DELETE;
        default:
            OGLDEV_ERROR("Unimplemented GLUT key");
            exit(1);
    }
    
    return OGLDEV_KEY_UNDEFINED;
}
コード例 #4
0
ファイル: ogldev_glfw_backend.cpp プロジェクト: qunny0/FTools
bool GLFWBackendCreateWindow(uint Width, uint Height, bool isFullScreen, const char* pTitle)
{
    GLFWmonitor* pMonitor = isFullScreen ? glfwGetPrimaryMonitor() : NULL;

    s_pWindow = glfwCreateWindow(Width, Height, pTitle, pMonitor, NULL);

    if (!s_pWindow) {
        OGLDEV_ERROR("error creating window");
        exit(1);
    }
    
    glfwMakeContextCurrent(s_pWindow);
    
    // Must be done after glfw is initialized!
    glewExperimental = GL_TRUE;
    GLenum res = glewInit();
    if (res != GLEW_OK) {
        OGLDEV_ERROR((const char*)glewGetErrorString(res));
        exit(1);
    }    
    
    return (s_pWindow != NULL);
}
コード例 #5
0
static OGLDEV_MOUSE GLUTMouseToOGLDEVMouse(uint Button)
{
    switch (Button) {
    case GLUT_LEFT_BUTTON:
            return OGLDEV_MOUSE_BUTTON_LEFT;
    case GLUT_RIGHT_BUTTON:
            return OGLDEV_MOUSE_BUTTON_RIGHT;
    case GLUT_MIDDLE_BUTTON:
            return OGLDEV_MOUSE_BUTTON_MIDDLE;
    default:
            OGLDEV_ERROR("Unimplemented GLUT mouse button");
    }

    return OGLDEV_MOUSE_UNDEFINED;
}
コード例 #6
0
ファイル: glut_backend.cpp プロジェクト: aqchin/hqrendering
static void KeyboardCB(unsigned char Key, int x, int y)
{
	if (
		((Key >= '0') && (Key <= '9')) ||
		((Key >= 'A') && (Key <= 'Z')) ||
		((Key >= 'a') && (Key <= 'z')) 
		) {
		OGLDEV_KEY OgldevKey = (OGLDEV_KEY)Key;
		s_pCallbacks->KeyboardCB(OgldevKey);
	}
	else {
		OGLDEV_ERROR("Unimplemented GLUT key");
	}

}
コード例 #7
0
ファイル: ogldev_glfw_backend.cpp プロジェクト: qunny0/FTools
void GLFWBackendInit(int argc, char** argv, bool WithDepth, bool WithStencil)
{
    sWithDepth = WithDepth;
    sWithStencil = WithStencil;

    if (glfwInit() != 1) {
        OGLDEV_ERROR("Error initializing GLFW");
        exit(1);
    }
    
    int Major, Minor, Rev;
    
    glfwGetVersion(&Major, &Minor, &Rev);
    
    printf("GLFW %d.%d.%d initialized\n", Major, Minor, Rev);
    
    glfwSetErrorCallback(GLFWErrorCallback);
}
コード例 #8
0
ファイル: ogldev_glfw_backend.cpp プロジェクト: qunny0/FTools
static OGLDEV_KEY GLFWKeyToOGLDEVKey(uint Key)
{
    if (Key >= GLFW_KEY_SPACE && Key <= GLFW_KEY_RIGHT_BRACKET) {
        return (OGLDEV_KEY)Key;
    }
    
    switch (Key) {
        case GLFW_KEY_ESCAPE:            
            return OGLDEV_KEY_ESCAPE;
        case GLFW_KEY_ENTER:         
            return OGLDEV_KEY_ENTER;
        case GLFW_KEY_TAB:          
            return OGLDEV_KEY_TAB;
        case GLFW_KEY_BACKSPACE:  
            return OGLDEV_KEY_BACKSPACE;
        case GLFW_KEY_INSERT:         
            return OGLDEV_KEY_INSERT;
        case GLFW_KEY_DELETE:        
            return OGLDEV_KEY_DELETE;
        case GLFW_KEY_RIGHT:         
            return OGLDEV_KEY_RIGHT;
        case GLFW_KEY_LEFT:         
            return OGLDEV_KEY_LEFT;
        case GLFW_KEY_DOWN:        
            return OGLDEV_KEY_DOWN;            
        case GLFW_KEY_UP:         
            return OGLDEV_KEY_UP;
        case GLFW_KEY_PAGE_UP:   
            return OGLDEV_KEY_PAGE_UP;
        case GLFW_KEY_PAGE_DOWN:      
            return OGLDEV_KEY_PAGE_DOWN;
        case GLFW_KEY_HOME:    
            return OGLDEV_KEY_HOME;
        case GLFW_KEY_END:     
            return OGLDEV_KEY_END;
        case GLFW_KEY_F1:        
            return OGLDEV_KEY_F1;
        case GLFW_KEY_F2:        
            return OGLDEV_KEY_F2;
        case GLFW_KEY_F3:       
            return OGLDEV_KEY_F3;
        case GLFW_KEY_F4:   
            return OGLDEV_KEY_F4;
        case GLFW_KEY_F5:      
            return OGLDEV_KEY_F5;
        case GLFW_KEY_F6:     
            return OGLDEV_KEY_F6;
        case GLFW_KEY_F7:     
            return OGLDEV_KEY_F7;
        case GLFW_KEY_F8:     
            return OGLDEV_KEY_F8;
        case GLFW_KEY_F9:     
            return OGLDEV_KEY_F9;
        case GLFW_KEY_F10:    
            return OGLDEV_KEY_F10;
        case GLFW_KEY_F11:   
            return OGLDEV_KEY_F11;
        case GLFW_KEY_F12:    
            return OGLDEV_KEY_F12;
        default:
            OGLDEV_ERROR("Unimplemented OGLDEV key");
    }
    
    return OGLDEV_KEY_UNDEFINED;
}
コード例 #9
0
ファイル: io_buffer.cpp プロジェクト: FNickRU/OGL_project
bool IOBuffer::Init(uint WindowWidth, uint WindowHeight, bool WithDepth, GLenum InternalType)
{
    m_internalType = InternalType;
    
    GLenum Format, Type;
    
    switch (InternalType) {
        case GL_RGB32F:
            Format = GL_RGB;
            Type = GL_FLOAT;
            break;
        case GL_R32F:
            Format = GL_RED;
            Type = GL_FLOAT;
            break;
        case GL_NONE:
            break;
        default:
            OGLDEV_ERROR("Invalid internal type");
    }
    
    // Create the FBO
    glGenFramebuffers(1, &m_fbo);    
	glBindFramebuffer(GL_FRAMEBUFFER, m_fbo);

    // Create the textures
    if (InternalType != GL_NONE) {
        glGenTextures(1, &m_texture);

        glBindTexture(GL_TEXTURE_2D, m_texture);
        glTexImage2D(GL_TEXTURE_2D, 0, InternalType, WindowWidth, WindowHeight, 0, Format, Type, NULL);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);        
        glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_texture, 0);

    	GLenum DrawBuffers[] = { GL_COLOR_ATTACHMENT0 };

        glDrawBuffers(ARRAY_SIZE_IN_ELEMENTS(DrawBuffers), DrawBuffers);
    }
        
    // Create the depth buffer 
    if (WithDepth) {
        glGenTextures(1, &m_depth);

        // depth
        glBindTexture(GL_TEXTURE_2D, m_depth);
        glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT32F, WindowWidth, WindowHeight, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);        
        glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, m_depth, 0);        
    }
    
    GLenum Status = glCheckFramebufferStatus(GL_FRAMEBUFFER);

    if (Status != GL_FRAMEBUFFER_COMPLETE) {
        printf("FB error, status: 0x%x\n", Status);
        return false;
    }

	// restore default FBO
	glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);

    return true;
}
コード例 #10
0
static int OgldevKeyToATBKey(OGLDEV_KEY OgldevKey)
{
    if (OgldevKey >= OGLDEV_KEY_SPACE && OgldevKey <= OGLDEV_KEY_RIGHT_BRACKET) {
        return OgldevKey;
    }

    switch(OgldevKey) {

        case OGLDEV_KEY_BACKSPACE:
            return TW_KEY_BACKSPACE;
        case OGLDEV_KEY_TAB:
            return TW_KEY_TAB;
//            return TW_KEY_CLEAR;
        case OGLDEV_KEY_ENTER:
            return TW_KEY_RETURN;
            
            //return TW_KEY_PAUSE;
        case OGLDEV_KEY_ESCAPE:
            return TW_KEY_ESCAPE;
        case OGLDEV_KEY_DELETE:
            return TW_KEY_DELETE;
        case OGLDEV_KEY_UP:
            return TW_KEY_UP;
        case OGLDEV_KEY_DOWN:
            return TW_KEY_DOWN;
        case OGLDEV_KEY_RIGHT:
            return TW_KEY_RIGHT;
        case OGLDEV_KEY_LEFT:
            return TW_KEY_LEFT;
        case OGLDEV_KEY_INSERT:
            return TW_KEY_INSERT;
        case OGLDEV_KEY_HOME:
            return TW_KEY_HOME;
        case OGLDEV_KEY_END:
            return TW_KEY_END;
        case OGLDEV_KEY_PAGE_UP:
            return TW_KEY_PAGE_UP;
        case OGLDEV_KEY_PAGE_DOWN:
            return TW_KEY_PAGE_DOWN;
        case OGLDEV_KEY_F1:
            return TW_KEY_F1;
        case OGLDEV_KEY_F2:            
            return TW_KEY_F2;
        case OGLDEV_KEY_F3:
            return TW_KEY_F3;
        case OGLDEV_KEY_F4:
            return TW_KEY_F4;
        case OGLDEV_KEY_F5:
            return TW_KEY_F5;
        case OGLDEV_KEY_F6:
            return TW_KEY_F6;
        case OGLDEV_KEY_F7:
            return TW_KEY_F7;
        case OGLDEV_KEY_F8:
            return TW_KEY_F8;
        case OGLDEV_KEY_F9:
            return TW_KEY_F9;
        case OGLDEV_KEY_F10:
            return TW_KEY_F10;
        case OGLDEV_KEY_F11:
            return TW_KEY_F11;
        case OGLDEV_KEY_F12:
            return TW_KEY_F12;
        default:
            OGLDEV_ERROR("Unimplemented OGLDEV to ATB key");
    }
    
    return TW_KEY_LAST;
}
コード例 #11
0
ファイル: tutorial45.cpp プロジェクト: GLDemos/ogldev-glsl130
    bool Init()
    {
   //    Vector3f Pos(0.0f, 23.0f, -5.0f);
  //      Vector3f Target(-1.0f, 0.0f, 0.1f);
        Vector3f Pos(0.0f, 24.0f, -38.0f);
        Vector3f Target(0.0f, -0.5f, 1.0f);

        Vector3f Up(0.0, 1.0f, 0.0f);

        m_pGameCamera = new Camera(WINDOW_WIDTH, WINDOW_HEIGHT, Pos, Target, Up);

        if (!m_geomPassTech.Init()) {
            OGLDEV_ERROR("Error initializing the geometry pass technique\n");
            return false;
        }

        if (!m_SSAOTech.Init()) {
            OGLDEV_ERROR("Error initializing the SSAO technique\n");
            return false;
        }

        m_SSAOTech.Enable();
        m_SSAOTech.SetSampleRadius(1.5f);
        Matrix4f PersProjTrans;
        PersProjTrans.InitPersProjTransform(m_persProjInfo);
        m_SSAOTech.SetProjMatrix(PersProjTrans);

        if (!m_lightingTech.Init()) {
            OGLDEV_ERROR("Error initializing the lighting technique\n");
            return false;
        }
        
        m_lightingTech.Enable();
        m_lightingTech.SetDirectionalLight(m_directionalLight);
        m_lightingTech.SetScreenSize(WINDOW_WIDTH, WINDOW_HEIGHT);
        m_lightingTech.SetShaderType(0);
        
        if (!m_blurTech.Init()) {
            OGLDEV_ERROR("Error initializing the blur technique\n");
            return false;
        }                
        
        //if (!m_mesh.LoadMesh("../Content/crytek_sponza/sponza.obj")) {
        if (!m_mesh.LoadMesh("../Content/jeep.obj")) {
            return false;            
        }        
     
        m_mesh.GetOrientation().m_scale = Vector3f(0.05f);
        m_mesh.GetOrientation().m_pos = Vector3f(0.0f, 0.0f, 0.0f);
        m_mesh.GetOrientation().m_rotation = Vector3f(0.0f, 180.0f, 0.0f);
        
        if (!m_quad.LoadMesh("../Content/quad.obj")) {
            return false;
        }
        
        if (!m_gBuffer.Init(WINDOW_WIDTH, WINDOW_HEIGHT, true, GL_RGB32F)) {
            return false;
        }

        if (!m_aoBuffer.Init(WINDOW_WIDTH, WINDOW_HEIGHT, false, GL_R32F)) {
            return false;
        }

        if (!m_blurBuffer.Init(WINDOW_WIDTH, WINDOW_HEIGHT, false, GL_R32F)) {
            return false;
        }
        
#ifndef WIN32
        if (!m_fontRenderer.InitFontRenderer()) {
            return false;
        }
#endif        	      
        return true;
    }