一、书写背景:

做为井底之蛙的我,之前一直做的2D游戏开发,最近搞了一个3D项目发现自己原来还有这么多欠缺的地方。另外看到群里大家讨论的各种渲染流程,渲染shader的实现自己竟然不知道别人说的专业名词都不知道是啥。于是决定开始沉下心来把openGL好好学习一下。

一开始学习的时候没摸准门路各种找书看各种看完就忘记,而且一直都浪费时间在openGL 那些api的功能查询中,而且又时间一久很多api又忘记了。发现自己走了不少弯路。最后在github看到了一个openGL的好书(简介 - LearnOpenGL CN)。跟着学习一下子门路摸清了。

把这本书看了几遍发现看了虽然对一些概念有所了解但是发现还是知之深浅。于是决定跟着书一边学习一边将自己做游戏这么多年对游戏引擎的理解和对cocos 引擎代码阅读总结经验。写一个opengl的简易引擎,这个引擎主要目标是吸收总结学习到的opengl知识,并且写出来变成可视的效果。于是有了(GitHub - xzben/openGLStudy: 我的openGL学习)这个库。

目前已经实现了一些基本的渲染功能,包括了 纹理加载处理,灯光处理,shader 处理,摄像机,天空盒子等功能。后续随着学习的深入还会继续加强功能,并且优化代码设计提升性能。目前编码的第一目标是先完成要的渲染目的(所以有些设计并不是最优的后续等到全部渲染的功能都写好了再进行优化整理)。

本来想等全部写完整个渲染的所有周边功能再写总结文章的。但是发现这个过程可能会持续很长时间,担心时间长了写代码时发现的一些看文章会忽略的点和自己的一些心得会遗忘所以决定还是要定期的把一些内容记录下来。所以本系列文章会随着学习的深入经常会有所改变调整。

二、OpenGL大纲总结

可能用过3D 引擎的同学发现普遍存在几个常见的类,Camera、Model、Material、Texture,天空盒子、shader 就是 顶点着色器,片段着色器,几何着色器,可能看得深入点还会看到 渲染管线,framebuffer 等内容。作为刚入门的同学肯定会对这些东西只是知道有,知道能用来能做啥效果,但是背后的细节就不太清楚了。本系列文章将安装这些对象逐一分析。

1、OpenGL 渲染流程

2、Camera 和 矩阵变换

3、Texture

4、Mesh 物体的骨骼

5、Shader

6、Material

7、framebuffer (帧缓冲)

8、渲染管线

9、后期处理

OpenGL学习小结相关推荐

  1. 【OpenGL】傅老师OpenGL学习

    [OpenGL]傅老师OpenGL学习 https://www.bilibili.com/video/av24353839?p=1 https://learnopengl-cn.readthedocs ...

  2. 无限风光 : 近来地形算法学习小结【转】

    无限风光 : 近来地形算法学习小结 原文链接   目录 -写在前面 -本文话题整体观 -概念(Concepts): 入门须知      -高度图(HeightMap)      -分形(Fractal ...

  3. Python - 输出格式 (学习小结)

    Python - 输出格式 (学习小结) Bu.xing 利用现代手段,创建学习家园 ​关注他 1 人赞同了该文章 Python 输出格式 我们常说的输出格式分两种含义: # 一种是指数据在屏幕上的显 ...

  4. Page 的生命周期学习小结

    (以前我在 csdn 写的翻译文章,现在转到这里来.) Page 的生命周期学习小结 原文链接:Page Events: Order and PostBack 作者:Paul Wilson 翻译:木野 ...

  5. c语言基本类型学习小结

    基本类型学习小结 环境: Dev-C++ 4.9.6.0 (gcc/mingw32), 使用-Wall编译选项 基本类型包括字节型(char).整型(int)和浮点型(float/double). 定 ...

  6. python中字典和集合的区别_Python中字典和集合学习小结

    映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表. ...

  7. 【转载】Hyperledger学习小结

    Hyperledger学习小结 自学Hyperledger Composer也有段时间了,是时候对所学的知识总结一下了.因为没有实际项目参与的话,差不多也就到此为止了.后续可能会去了解一下以太坊的技术 ...

  8. 图片裁剪功能学习小结

    图片裁剪功能学习小结 近期有需要使用图片裁剪的功能,在使用插件和自己写裁剪组件之间犹豫了很久,后来根据需求经过反复的考虑,还是自己封装吧,毕竟自己动手,丰衣足食,对吧?嗯,??????是的!最后生成裁 ...

  9. pthread多线程编程的学习小结

    pthread多线程编程的学习小结 pthread 同步3种方法: 1 mutex 2 条件变量 3 读写锁:支持多个线程同时读,或者一个线程写 程序员必上的开发者服务平台 -- DevStore p ...

  10. ShaderLab学习小结(十九)RenderToCubemap创建能反射周围环境的效果

    继续用"ShaderLab学习小结(十八)cubemap"中所做的shader 想要让它能对周围的环境进行反射 思路就是要让它的cubemap里的内容是周围环境的映射 shader ...

最新文章

  1. 如何自学python到做项目-如何使用python进行第一个机器学习项目(详细教程篇)...
  2. Linux环境下配置Tomat
  3. Linux 图片传输功能c/c++(初版)
  4. c# u盘使用记录_U盘如何快速清除使用记录【详解】
  5. 简历javaweb项目描述怎么写_硬件工程师简历-项目经验怎么写【范文】
  6. Spring boot配置log4j
  7. 【Vue2.0】—组件(十一)
  8. 几种Intent 的用法
  9. 输电线路巡检机器人PPT_国网泰安供电公司开展输电线路无人机精细化巡检
  10. 什么是动作分析?动作分析的方法有哪些?
  11. 西门子840d备份到u盘_840dsl 启动服务U盘制作和CF卡数据备份回装
  12. ArcGIS之图斑净面积计算工具(支持二调,三调)
  13. 阿里云服务器到底有什么好处?
  14. 红色警戒最新版本哪个服务器好,红色警戒2里面哪个版本最好玩?
  15. oracle的固定值
  16. Generator cannot target libraries that have not been migrated to null-safety.
  17. trace-event
  18. Hybrid A*路径规划器的代码注释
  19. 使用树莓派4b和OpenCV做机械臂夹取
  20. Py2neo安装(未完待续)

热门文章

  1. 异常来自 HRESULT:0x80070057 (E_INVALIDARG)
  2. 解决phpstudy的Apache启动失败
  3. Android关于Activity屏蔽/拦截Home键
  4. html/css(1)
  5. linux 三网卡 双网关,三网卡双机互联共享Internet
  6. 报错:Vue.js not detected
  7. 名人名言摘选-李嘉诚
  8. 基于MATLAB GUI的指纹识别系统
  9. 软件架构师的“不归之路“——架构师的职责
  10. Portal for ArcGIS是什么东东