“特效编程”笔记 -- 计算机图形学 OPENGL 入门

以前随便找点代码,改吧改吧就能跑,今天算是入门学习了一下。 顶点着色器、几何着色器、片段着色器。又酷又通透,身心愉悦 ——

本文源码 LearnOpenGL-Introduction

uni-marburg.de 课程

https://www.uni-marburg.de/en/fb12/research-groups/grafikmultimedia/lectures/graphics

https://www.mathematik.uni-marburg.de/~thormae/lectures/graphics1/graphics_9_1_eng_web.html

OpenGL Step by Step - OpenGL Development

历史

1988 年 5 月,Pixar 公布了第三版 RenderMan 规范,将「着色器」的使用推广到了我们目前所知的各大应用领域。

随着图形处理器的进步,OpenGL 和 Direct3D 等主要的图形软件库都开始支持着色器。 第一批支持着色器的 GPU 仅支持像素着色器,但随着开发者逐渐认识到着色器的强大,很快便出现了顶点着色器。 2000 年,第一款支持可编程像素着色器的显卡 Nvidia GeForce 3(NV20)问世。Direct3D 10 和 OpenGL 3.2 则引入了几何着色器。


利用 gpu 渲染一个巨人的图像

计算机图形学 OPENGL 入门

https://ke.qq.com/course/package/25480?flowToken=1019441

https://learnopengl-cn.github.io/

Others

错误 LNK2019 无法解析的外部符号 __imp__vsnprintf,该符号在函数 __glfwInputError 中被引用 LearnOpenGL E:\kSource\LearnOpenGLk\LearnOpenGL\glfw3.lib(init.obj) 1

原因:问题是 glfw 静态 libs 是用与您正在使用的版本不同的 visual studio 版本构建的。

你也可以添加一个额外的库到你的链接器输入,即 legacy_stdio_definitions.lib。进入“属性”>“链接器”>“输入”。在其他依赖项中添加上面提到的库。https://zgserver.com/parsing-6.html

第一课

OpenGL ES in iOS - 2. 画一个三角形

// Default VAO needed for OpenGL 3.3+ core profiles
void setVertexEnv() {
    float vertices[] = {
        -0.5f, -0.5f, 0.0f, // left, down
        0.5f, -0.5f, 0.0f,  // right, down
        -0.5f, 0.5f, 0.0f,  // left, top
    };
    float colors[] = {
        1, 0, 0, // left, down
        0, 1, 0, // right, down
        0, 0, 1, // left, top
    };

    unsigned int VAO; // VAO: vertex array object
    unsigned int VBO[2]; // VBO: vertex buffer object

    glGenVertexArrays(1, &VAO);
    glGenBuffers(2, VBO);

    // 绑定当前上下文
    glBindVertexArray(VAO);

    glBindBuffer(GL_ARRAY_BUFFER, VBO[0]);
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
    glEnableVertexAttribArray(0);

    glBindBuffer(GL_ARRAY_BUFFER, VBO[1]);
    glBufferData(GL_ARRAY_BUFFER, sizeof(colors), colors, GL_STATIC_DRAW);
    glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
    glEnableVertexAttribArray(1);
}

第二课

第三课

运行结果

相机源码:https://github.com/JoeyDeVries/LearnOpenGL/blob/master/src/1.getting_started/7.4.camera_class/camera_class.cpp


Reference snapshot, script generated automatically. ---
本文短链接:
If you have any questions or feedback, please reach out haihoing@qq.com.

自由转载-非商用-非衍生-保持署名(创意共享 3.0 许可证)