@think3r2018-05-09 22:56:27
参考链接 :
现已不再维护此项目中的代码, 仅更新 OpenGL 笔记, 具体代码及 demo 正在移植到 Android 平台, 参考 https://gitee.com/think3r/Android_openGLES
- 该项目采用 Android studio + NDK 来开发, 相应的 OGL-ES demo 渲染均在 native 层, 采用 C++ 编写;
- 记录 OGL 学习笔记;
- 参照 learnopengl, 在 windwos 上移植的 OGL-ES demo;
demo 主要架构:
- MFC 创建窗口与交互处理;
- Mali OGL-ES Emulator;
- 编译平台 MinGW64, 编译工具 WSL ;
docker 支持?(代做)
参考链接:
- 打算使用 OpenGL Es 实现一遍 learnopengl 之中的例程(仅仅实现最简单的和最复杂的两个).
- 环境则使用
Ubuntuwindows mingw 和 Arm 的 OpenGL-ES 模拟器来搭建;- 预留 Android 下的 surface 传递接口, 以 so 的形式来调用.
- 预留 surface 配置的接口.
- EGL 后续可能使用 Java 实现, 固将 EGL 和 GL 分别封装成两个库;
- 预留键盘/鼠标操作的统一接口;
- 开发环境 : source Insight + make;
wsl 远程时执行窗口相关的命令时, 容易出现(在 1903 下的 wsl 中 wsl 以不能直接运行...)GFW等相关的错误, 可使用export DISPLAY=:1来搞定;- 需在 windows 环境变量
Path中添加../file/Mali_OpenGL_ES_Emulator-v3.0.4-2-g8d905-Windows-64bit或者直接拷贝输出成果物至上述路径下;- 至于
-Wl,-rpath=则因为 mingw 不支持而作罢, 可参考链接 : MinGW-w64 - for 32 and 64 bit Windows -- A complete runtime environment for gcc
rpath is not used on windows. DLLs are loaded as described https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order
- 至于
- 而静态库链接一直有问题... 暂且停滞...
- 关于 cmd 下
printf()颜色的支持 :
- can't run mail-cube with emulator on ubuntu 16.04
- OpenGl 4 support for VMWare Workstation Pro
- 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 下;
- Note :
由于deInif()崩溃, 固暂时不对 OGL 资源做完全的释放- Mali OGL-ES 模拟器的 GLSL 编译有 bug, 相同类型的不同变量只能写在同一行, 否则会报错;
make 1.helloTriangle- 环境测试 && 最初入门;
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_TRANGLES6 顶点直接绘制四边形;-D USE_TRANGLES_STRIP4 顶点直接绘制四边形;
- 全局变量
make 3.triangle2-D ONE_VBO使用 1 VBO + 2 EBO + 2 VAO + 2 program 绘制颜色不同的四边形;-D TWO_VBO使用 2 VBO + 2 VAO + 2 program 绘制颜色不同的四边形;
make 4.shader_glsl-D TWO_VERTEX_ATTRI_POINTER1 VBO + 1 VAO + 双顶点数组指针, 绘制调色板三角形;-D UINFORM_TEST使用 GLSL 中的 uniform 绘制变色三角形;
make 5.shader_glsl2- shaderToy 着色器代码移植, 炫酷的动态调色盘;
make 6.textureCombined- 纹理初步使用 + 颜色混合(使用了 VAO);
make 7.textureCombined- 纹理 x 2 混合 + 颜色混合;
make 8.textureMode- 纹理缩放和渲染模式;
- note: glsl 中的两个纹理, 必须放到一行, 否则会报错!
make 9.transFormations平面矩形- 对应
transformations_exercise2;
- 对应
make 10.coordinateSystem立方体- 无宏定义, 对应
6.2.coordinate_systems_depth -D MULTIPLE_CUBE对应6.3.coordinate_systems_multiple
- 无宏定义, 对应
make 11.camera摄像机 :- 增加了 MFC 鼠标支持 :
- 方向键/WASD -------> 前进, 后退, 左, 右 ;
- 鼠标滚轮 ------------> 放大 ;
ctrl+ 鼠标移动 ----> 旋转 ;
- WASD -- 百度百科
- WASD ,位于键盘的左手面。这四个按键在第一人称射击游戏上通常作为控制玩家角色的移动。W 和 S 键用来控制角色向前或向后移动, A 和 D 键则用来控制角色左右转身。这组按键还有另一个变化 W-A-X-D,用以迁就一些习惯使用数字键盘的方向按键(8-4-6-2)的使用者。
- 增加了 MFC 鼠标支持 :