0 Star 1 Fork 2

think3r / openGL-learn

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

openGL 学习笔记

@think3r 2018-05-09 22:56:27
参考链接 :

  1. OpenGL学习路径
  2. Android 开发者官方开发者指南
  3. learnopengl
  4. OpenGL-wikipedia
  5. OPENGL ES 3.0编程指南 原书第2版 --- github
  6. https://github.com/KhronosGroup
  7. khronos 官网
  8. OpenGL-man-Page
  9. OpenGL-Refpages---> github
  10. 杀不死的 GPU 系列 --> 知乎:环太平洋

现已不再维护此项目中的代码, 仅更新 OpenGL 笔记, 具体代码及 demo 正在移植到 Android 平台, 参考 https://gitee.com/think3r/Android_openGLES

  • 该项目采用 Android studio + NDK 来开发, 相应的 OGL-ES demo 渲染均在 native 层, 采用 C++ 编写;
  1. 记录 OGL 学习笔记;
  2. 参照 learnopengl, 在 windwos 上移植的 OGL-ES demo;

demo 主要架构:

  • MFC 创建窗口与交互处理;
  • Mali OGL-ES Emulator;
  • 编译平台 MinGW64, 编译工具 WSL ;
  • docker 支持?(代做)

0x00 学习笔记

  1. openGL 概述
  2. EGL
  3. EGL 之外的东西
  4. OpenGL 和 OpenGL-ES
  5. GLSL
  6. 坐标变换

0x01 学习环境搭建

windwos 下 OpenGL-ES 模拟环境的搭建(已不在维护)

参考链接:

  1. vs2017下搭建opengl es 3.0开发环境
  2. OpenGL ES Emulator
  3. 虚拟机中使用OpenGL遇到的错误总结
  1. 打算使用 OpenGL Es 实现一遍 learnopengl 之中的例程(仅仅实现最简单的和最复杂的两个).
  2. 环境则使用 Ubuntu windows mingw 和 Arm 的 OpenGL-ES 模拟器来搭建;
    • 预留 Android 下的 surface 传递接口, 以 so 的形式来调用.
    • 预留 surface 配置的接口.
    • EGL 后续可能使用 Java 实现, 固将 EGL 和 GL 分别封装成两个库;
    • 预留键盘/鼠标操作的统一接口;
  3. 开发环境 : source Insight + make;
  4. 关于 cmd 下 printf() 颜色的支持 :

ubuntu 下的 OpenGL Es 模拟限制

  1. can't run mail-cube with emulator on ubuntu 16.04
  2. OpenGl 4 support for VMWare Workstation Pro
  3. How to update to latest OpenGL version on Virtualbox Ubuntu Linux machine?

根据 Arm 的文档, 我们得到了如下的问题描述 :

In general, the Mali OpenGL ES Emulator will work on any system that supports at least:
• OpenGL 3.2 – when OpenGL ES 2.0 contexts are used1
• OpenGL 3.3 – when OpenGL ES 3.0 contexts are used
• OpenGL 4.3 – when OpenGL ES 3.1 or 3.2 contexts are used

According to the Mali OpenGL ES Emulator documentation:

The emulator requires a graphics card that supports at least OpenGL 4.3. 而 VmWare 下的模拟器, 则只支持到 OpenGL 3.0; VirtualBox 更是只有 2.0 ; 因此将环境先迁移 windows 下;

Windows 下 OpenGL-Es 模拟环境的搭建


0x02 demo on Windows-OpenGL-ES

  1. Note :
    • 由于 deInif() 崩溃, 固暂时不对 OGL 资源做完全的释放
    • Mali OGL-ES 模拟器的 GLSL 编译有 bug, 相同类型的不同变量只能写在同一行, 否则会报错;
  2. make 1.helloTriangle
    • 环境测试 && 最初入门;
  3. make 2.triangleIndxed
    • 全局变量 u32DrawMode 绘制模式, 可为 : GL_TRIANGLES, GL_POINTS, GL_LINE_LOOP 等;
    • -D USE_VAO 使用 BO + VBO + VAO + EBO 绘制四边形;
      • hello_triangle_indexed
    • -D USE_VBO 使用 BO + VBO 绘制四边形;
    • -D USE_EBO 使用 BO + VBO + EBO 绘制四边形;
    • -D USE_TRANGLES 6 顶点直接绘制四边形;
    • -D USE_TRANGLES_STRIP 4 顶点直接绘制四边形;
  4. make 3.triangle2
    • -D ONE_VBO 使用 1 VBO + 2 EBO + 2 VAO + 2 program 绘制颜色不同的四边形;
    • -D TWO_VBO 使用 2 VBO + 2 VAO + 2 program 绘制颜色不同的四边形;
  5. make 4.shader_glsl
    • -D TWO_VERTEX_ATTRI_POINTER 1 VBO + 1 VAO + 双顶点数组指针, 绘制调色板三角形;
    • -D UINFORM_TEST 使用 GLSL 中的 uniform 绘制变色三角形;
  6. make 5.shader_glsl2
    • shaderToy 着色器代码移植, 炫酷的动态调色盘;
  7. make 6.textureCombined
    • 纹理初步使用 + 颜色混合(使用了 VAO);
  8. make 7.textureCombined
    • 纹理 x 2 混合 + 颜色混合;
  9. make 8.textureMode
    • 纹理缩放和渲染模式;
    • note: glsl 中的两个纹理, 必须放到一行, 否则会报错!
  10. make 9.transFormations 平面矩形
    • 对应 transformations_exercise2;
  11. make 10.coordinateSystem 立方体
    • 无宏定义, 对应 6.2.coordinate_systems_depth
    • -D MULTIPLE_CUBE 对应 6.3.coordinate_systems_multiple
  12. make 11.camera 摄像机 :
    • 增加了 MFC 鼠标支持 :
      • 方向键/WASD -------> 前进, 后退, 左, 右 ;
      • 鼠标滚轮 ------------> 放大 ;
      • ctrl + 鼠标移动 ----> 旋转 ;
    • WASD -- 百度百科
      • WASD ,位于键盘的左手面。这四个按键在第一人称射击游戏上通常作为控制玩家角色的移动。W 和 S 键用来控制角色向前或向后移动, A 和 D 键则用来控制角色左右转身。这组按键还有另一个变化 W-A-X-D,用以迁就一些习惯使用数字键盘的方向按键(8-4-6-2)的使用者。

空文件

简介

1. 记录 OGL 学习笔记; 2. OGL-ES demo on windows; 展开 收起
C/C++ 等 6 种语言
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C/C++
1
https://gitee.com/think3r/openGL-learn.git
git@gitee.com:think3r/openGL-learn.git
think3r
openGL-learn
openGL-learn
master

搜索帮助