GLFW3和GLFW_INCLUDE_GLCOREARB

时间:2014-07-30 08:53:22

标签: c++ opengl opengl-3 glfw

我正在使用Visual Studio 2013,因为我正在学习OpenGL 3.3,我认为最好使用

#define GLFW_INCLUDE_GLCOREARB
#include <GLFW/glfw3.h>

迫使'intellisense'甚至不显示旧的折旧函数,例如glVertex2f等......

然而,包含所述#define会阻止任何gl *函数出现。甚至glViewport都是未定义的。在尝试编译一个简单的应用程序时,我会遇到许多错误

error C3861: 'glViewport': identifier not found

glcorearb.h是我的包含文件路径,仅在昨天从http://www.opengl.org/registry/api/GL/glcorearb.h下载。

我可能在这里做了一些完全错误的事情。但这是我的完整源代码......

// Include standard headers
#include <stdio.h>
#include <stdlib.h>

#define GLFW_INCLUDE_GLCOREARB

// Include GLFW3
#include <GLFW/glfw3.h>

//Error Callback - Outputs to STDERR
static void error_callback(int error, const char* description)
{
    fputs(description, stderr);
}

//Key Press Callback
static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
{
    if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
        glfwSetWindowShouldClose(window, GL_TRUE);
}

int main(){

    GLFWwindow* window;
    glfwSetErrorCallback(error_callback);

    // Initialise GLFW
    if (!glfwInit())
    {
        fputs("Failed to initialize GLFW\n", stderr);
        exit(EXIT_FAILURE);
    }

    glfwWindowHint(GLFW_SAMPLES, 2); // 2x antialiasing
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); // We want OpenGL 3.3
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); //We don't want the old OpenGL

    // Open a window and create its OpenGL context
    window = glfwCreateWindow(640, 480, "Test", NULL, NULL);
    if (!window)
    {
        glfwTerminate();
        exit(EXIT_FAILURE);
    }

    glfwMakeContextCurrent(window);
    glfwSetKeyCallback(window, key_callback);

    while (!glfwWindowShouldClose(window))
    {
        float ratio;
        int width, height;
        glfwGetFramebufferSize(window, &width, &height);
        ratio = width / (float)height;

        glViewport(0, 0, width, height);
        glClearColor(0.5f, 0.7f, 1.0f, 0.0f);
        glClear(GL_COLOR_BUFFER_BIT);
        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    glfwDestroyWindow(window);
    glfwTerminate();
    exit(EXIT_SUCCESS);
}

0 个答案:

没有答案