GLFW


GLFWをデスクトップでOpenGLES2.0で使う

・必要な環境
たぶんOpenGL4対応GPUが必要。
もしくはGoogle Angleを使えばできるかもしれない。

・まずGLFW3をGitHubからCloneしてきてCMakeを使ってビルドする
この時点でstableの2.7より難易度が高い。

・その後、以下のページやGLFWのコードを参考にウインドウを出そうとする

・出た



//#define GLFW_INCLUDE_ES2

#include <GL/glfw3.h>
#include <stdlib.h>
#include <stdio.h>

int main( void ) {
    if (!glfwInit()) {
        exit( EXIT_FAILURE );
    }
    
    // OpenGL ES 2.0
    glfwDefaultWindowHints();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
    glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API);
    // es2 is no profile! don't use core profile.
    //glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    // Open an OpenGL window
    GLFWwindow* window = glfwCreateWindow(800, 600, "hoge", NULL, NULL);
    if (!window) {
        glfwTerminate();
        exit( EXIT_FAILURE );
    }

    glfwMakeContextCurrent(window);

    printf("context renderer string: \"%s\"\n", glGetString(GL_RENDERER));
    printf("context vendor string: \"%s\"\n", glGetString(GL_VENDOR));
    printf("version string: \"%s\"\n", glGetString(GL_VERSION));

    int width, height;
    // Main loop
    for (;;)
    {
        glClearColor(1.0, 0.0, 0.0, 1.0);
        // OpenGL rendering goes here...
        glClear( GL_COLOR_BUFFER_BIT );
        // Swap front and back rendering buffers
        glfwSwapBuffers(window);
        glfwPollEvents();
        // Check if the ESC key was pressed or the window should be closed
        if (glfwGetKey(window, GLFW_KEY_ESCAPE))
            break;
        if (glfwGetWindowParam(window, GLFW_SHOULD_CLOSE))
            break;
    }
    // Close window and terminate GLFW
    glfwTerminate();
    // Exit program
    exit( EXIT_SUCCESS );
}


iOS に持っているか検証

・とりあえず最新のものをXCodeでiOSのSDKでビルドしてみた

以下の場所でエラー。どう見てもES1/gl.hとかES2/gl.hがないです。つまり未対応

/* Include the chosen client API headers.

 */

#if defined(__APPLE_CC__)

  #if defined(GLFW_INCLUDE_GLCOREARB)

    #include <OpenGL/gl3.h>

  #else

    #define GL_GLEXT_LEGACY

    #include <OpenGL/gl.h>

  #endif

  #if defined(GLFW_INCLUDE_GLU)

    #include <OpenGL/glu.h>

  #endif

#else

  #if defined(GLFW_INCLUDE_GLCOREARB)

    #include <GL/glcorearb.h>

  #elif defined(GLFW_INCLUDE_ES1)

    #include <GLES/gl.h>

  #elif defined(GLFW_INCLUDE_ES2)

    #include <GLES2/gl2.h>

  #elif defined(GLFW_INCLUDE_ES3)

    #include <GLES3/gl3.h>

  #else

    #include <GL/gl.h>

  #endif

  #if defined(GLFW_INCLUDE_GLU)

    #include <GL/glu.h>

  #endif

#endif


・ググったところ、ここに持っていきかけた人が既にいた

これをベースにビルド中・・・まだうまくいってない


Comments