图形学笔记 -- ARM MALI OpenGL ES Emulator for Windows

Windows OpenGL ES Sample

搞了一天,终于转起来了。Windows 上用 ARM MALI OpenGL ES Emulator 模拟一个 OpenGL ES 环境。

Introduction

Android 是 OpengGL ES,Windows 上用 ARM MALI OpenGL ES Emulator 模拟一个 OpenGL ES 环境。

OpenGL ES is an embedded version of OpenGL mostly used on mobile devices that offer only limited GPU capabilities compared to modern desktop GPUS.

EGL is a native platform interface that connects the windowing systems to one of Khronos’ APIs, e.g. OpenGL ES.

相关下载:https://www.khronos.org/registry/OpenGL/index_es.php

ARM MALI OpenGL ES Emulator for Windows OpenGL ES Emulator: 3.0.2 February 23, 2017 https://developer.arm.com/tools-and-software/graphics-and-gaming/opengl-es-emulator/downloads

EGL 是什么

EGL 实际上是 OpenGL 和设备(又或者叫操作系统)间的中间件,因为 OpenGL 是标准的,但设备是千奇百怪的,要对接就需要一个中间件做协调。也就是说一个设备要支持 OpenGL,那么它需要开发一套相对应的 EGL 来对接。EGL 主要负责初始化 OpenGL 的运行环境和设备间的交互,简单的说就是 OpenGL 负责绘图 EGL 负责和设备交互。

Khronos 是 OpenGL,OpenGL ES,OpenVG 和 EGL 等规范的定义者。


图形处理的一般流程

OpenGL ES 2.0 的可编程管线

坐标系统

OpenGL ES Emulator 横向比较

PowerVR、Adreno、Mali 三大主流移动 GPU。from

厂商 名称
AMD OpenGL ES 2.0 Emulator 2008 年卖给了高通(Qualcomm)
ARM OpenGL ES 2.0 Emulator v1.2 ARM Mali Emulator
Qualcomm Adreno SDK 2.2 Adreno GPU SDK
NVIDIA Windows OpenGL ES 2.0 Emulator Tegra 没有找到地方下载
PowerVR PowerVR SDK PowerVR Graphics SDK
Google ANGLE - Almost Native Graphics Layer Engine Chrome、Qt & Webgl 也是基于它实现的!QT GLES & Android emulator 自己编译 Angle 有点费力,在最新版本的 cocos2dx 拷贝出来不能用,最后发现:从最新版本的 QT 包里面把 EGL & GLESv2.dll 拷贝出来,跑的非常完美。

ANGLE A conformant OpenGL ES implementation for Windows, Mac, Linux, iOS and Android.

费不尽力的老力,都下载下来,整理好了:https://gitee.com/hawkhai/opengl-3rd.git

维基百科给出的列表,也不知道真的假的。link

  • PowerVR – Imagination Technologies 研发的移动 GPU,用于第三方授权。
  • Mali – ARM Norway 研发的移动 GPU,用于第三方授权。
  • Vivante – 图芯技术 研发的移动 GPU,用于第三方授权。
  • Tegra – NVIDIA 研发的移动 SoC,不向第三方授权。
  • VideoCore – Broadcom 研发的移动 GPU,允许第三方授权。
  • Intel Atom – Intel 计算机处理器产品,不向第三方授权。
  • AMD APU – AMD 计算机处理器产品,不向第三方授权。
  • Adreno – Qualcomm 研发的移动 GPU,用于第三方授权。

ARM Mali

eglChooseConfig 的第二个参数里必须包含 EGL_OPENGL_ES2_BIT 才能建立 ES 2.0 的 context。

gpu profiling tools

How to optimize the graphics performance of your Cocos2d-x games There are three major mobile GPU vendors nowadays and they provide decent graphics profiling tools:

Android 模拟器

D/libEGL: loaded /vendor/lib/egl/libEGL_emulation.so
D/libEGL: loaded /vendor/lib/egl/libGLESv1_CM_emulation.so
D/libEGL: loaded /vendor/lib/egl/libGLESv2_emulation.so
D/EGL_emulation: eglCreateContext: 0xf279fb20: maj 3 min 0 rcv 3
D/EGL_emulation: eglMakeCurrent: 0xf279fb20: ver 3 0 (tinfo 0xf2af3030) (first time)
D/HostConnection: HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1
                                      ANDROID_EMU_native_sync_v2
                                      ANDROID_EMU_native_sync_v3
                                      ANDROID_EMU_native_sync_v4
                                      ANDROID_EMU_dma_v1
                                      ANDROID_EMU_direct_mem
                                      ANDROID_EMU_host_composition_v1
                                      ANDROID_EMU_host_composition_v2
                                      ANDROID_EMU_YUV_Cache
                                      ANDROID_EMU_async_unmap_buffer
                                      GL_OES_EGL_image_external_essl3
                                      GL_OES_vertex_array_object
                                      GL_KHR_texture_compression_astc_ldr
                                      ANDROID_EMU_host_side_tracing
                                      ANDROID_EMU_async_frame_commands
                                      ANDROID_EMU_gles_max_version_3_0

References


参考资料快照
参考资料快照

本文短链接:
If you have any questions or feedback, please reach out .