为什么使用此OpenGL上下文创建的窗口打开透明?

时间:2016-04-10 04:09:23

标签: c++ opengl glfw

执行后,背景应呈现为深蓝色,但我显然错过了一些东西。而是使用与其后面的图像相同的背景(例如,其他打开的窗口或桌面等)来渲染窗口。我无法确定问题所在。

目前我在编译期间没有使用任何-std,我正在使用以下与输出可执行文件的链接:

-lGL -lGLU -lGLEW -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi -ldl -lXcursor -lXinerama

以下是我的.cpp文件的内容:

#include <stdio.h>
#include <stdio.h>

#include <GL/glew.h>

#include <GLFW/glfw3.h>
GLFWwindow* window;

#include <glm/glm.hpp>
using namespace glm;

int main( void )
{

    //Initialize GLFW
    if( !glfwInit() )
    {
        fprintf( stderr, "Failes to intialize GLFW\n" );
        return -1;
    }

    glfwWindowHint(GLFW_SAMPLES, 4); // 4x antialiasing
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    // Open a Window and create it's OpenGL context
    window = glfwCreateWindow( 1024, 768, "playground", NULL, NULL);
    if( window == NULL) {
        fprintf( stderr, "Failed to open GLFW window.\n" );
        glfwTerminate();
        return -1;
    }

    glfwMakeContextCurrent(window);
    glewExperimental = true;
    if (glewInit() != GLEW_OK) {
        fprintf(stderr, "Failed to initialize GLEW\n");
        return -1;
    }

    glfwSetInputMode(window, GLFW_STICKY_KEYS, GL_TRUE);

    // Dark blue background
    glClearColor(0.0f, 0.0f, 0.4f, 0.0f);

    do{

        glfwSwapBuffers(window);
        glfwPollEvents();

    }

    while( glfwGetKey(window, GLFW_KEY_ESCAPE ) != GLFW_PRESS &&
           glfwWindowShouldClose(window) == 0 );

    glfwTerminate();

    return 0;

}

我是OpenGL的新人。随意评论整体结构,或者是否应该/必须完全重写。谢谢!

0 个答案:

没有答案