GLFW实验 1

参考

网上查了一些资料,入门决定使用 GLFW官网.

实验过程

Example_Code

#include <GLFW/glfw3.h>

void render(GLFWwindow *window) {
    glfwSwapBuffers(window);
    float ratio;
    int width, height;
    glfwGetFramebufferSize(window, &width, &height);
    ratio = width / (float) height;
    glViewport(0, 0, width, height);
    glClear(GL_COLOR_BUFFER_BIT);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-ratio, ratio, -1.f, 1.f, 1.f, -1.f);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glRotatef((float) glfwGetTime() * 50.f, 0.f, 0.f, 1.f);
    glBegin(GL_TRIANGLES);
    glColor3f(1.f, 0.f, 0.f);
    glVertex3f(-0.6f, -0.4f, 0.f);
    glColor3f(0.f, 1.f, 0.f);
    glVertex3f(0.6f, -0.4f, 0.f);
    glColor3f(0.f, 0.f, 1.f);
    glVertex3f(0.f, 0.6f, 0.f);
    glEnd();
    glfwSwapBuffers(window);
}


int main(void) {
    GLFWwindow *window;

    // 初始化库
    if(!glfwInit())
        return 1;

    // 创建一个窗体
    window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if(!window) {
        glfwTerminate();
        return 1;
    }

    // 创建这个窗体的OpenGL上下文
    glfwMakeContextCurrent(window);

    // 收到窗体的关闭信号
    while(!glfwWindowShouldClose(window)) {

        // 渲染函数
        render(window);

        // 消息传递函数,只有设置了这个函数,窗体才会收到事件
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

阅读完官网教程之后,对 Example_Code进行编译

g++ main.cpp `pkg-config --cflags glfw3` `pkg-config --static --libs glfw3` -o main

运行结果

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容