码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • OpenGL ES Windows 搭建环境(MFC版本)


    目录

    • 一.OpenGL 和 OpenGL ES
      • 1.OpenGL
      • 2.OpenGL ES
    • 二.EGL 和 WGL
    • 三.OpenGL ES EGL API 简介
    • 四.OpenGL ES 案例
    • 五.依赖动态库
    • 六.猜你喜欢

    零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础

    零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效

    零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 转场

    零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 函数

    零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES GPUImage 使用

    零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES GLSL 编程

    一.OpenGL 和 OpenGL ES

    1.OpenGL

    OpenGL(全写 Open Graphics Library)是个定义了一个跨编程语言、跨平台的应用程序接口(API)的规格,它用于生成二维、三维图像。OpenGL 广泛用于 PC 平台(windows、Linux、Unix、Mac OS X);

    2.OpenGL ES

    OpenGL ES 是 OpenGL 的嵌入式设备版本,用于移动端平台(Android、iOS),但由于嵌入式设备要求的是高性能,所以一些其它纯追求高性能的设备也开始用这种 API 方式;

    OpenGL ES 是 OpenGL 的子集,区别在于 OpenGL ES 删减了 OpenGL 一切低效能的操作方式,有高性能的决不留低效能的,即只求效能不求兼容性。(即:OpenGL ES 能实现的,OpenGL 也能实现;OpenGL 部分 API,OpenGL ES 不支持)

    二.EGL 和 WGL

    EGL 是渲染 API(如 OpenGL ES)和原生窗口系统之间的接口。通常来说,OpenGL 是一个操作 GPU 的 API,它通过驱动向 GPU 发送相关指令,控制图形渲染管线状态机的运行状态,但是当涉及到与本地窗口系统进行交互时,就需要这么一个中间层,因此 EGL 被设计出来,作为 OpenGL 和原生窗口系统之间的桥梁,且它与平台无关的。

    在不同平台上有不同的机制以关联窗口系统,在 Windows 上是 WGL ,在 Linux 上是 GLX ,在 Apple OS 上是 AGL 等。

    EGL 则是平台上 WGL / GLX / AGL 的等价物。EGL 假设 OS 会提供窗口系统,但 EGL 与平台无关,并不局限于任何特定的窗口系统,所有用到本地窗口系统的地方都用屏蔽指针来处理,这就是易于移植的关键。

    简单点来讲:在 Windows OPenGL 使用 WGL,在 Windows OPenGL ES 使用 EGL

    三.OpenGL ES EGL API 简介

    EGLNativeDisplayType – 系统显示类型,标识你所开发设备的物理屏幕,DX/OPenGL ES/Metal/Vulkan….

    EGLNativeWindowType – 系统窗口,渲染显示的窗口句柄

    EGLDisplay – 关联 EGLNativeDisplayType 系统物理屏幕的通用数据类型,是平台上 WGL / GLX / AGL 的等价物

    EGLSurface – 渲染区域,相当于 OpenGL ES 绘图的画布 (一块内存空间),用户想绘制的信息首先都要先绘制到 EGLSurface 上,然后通过 EGLDisplay 显示

    EGLConfig – 对 EGLSurface 的 EGL 配置,可以理解为绘制目标 framebuffer 的配置属性

    EGLContext – OpenGL ES 图形上下文

    1. 获取 EGL Display 对象:eglGetDisplay
    2. 初始化与 EGLDisplay 之间的连接:eglInitialize
    3. 获取 EGLConfig 对象:eglChooseConfig / eglGetConfigs
    4. 创建 EGLContext 实例:eglCreateContext
    5. 创建 EGLSurface 实例:eglCreateWindowSurface / eglCreatePbufferSurface
    6. 连接 EGLContext 和 EGLSurface 上下文 eglMakeCurrent
    7. 使用 OpenGL ES API 绘制图形:gl_*
    8. 切换 front buffer 和 back buffer 显示:eglSwapBuffer
    9. 断开并释放与 EGLSurface 关联的 EGLContext 对象:eglRelease
    10. 删除 EGLSurface 对象 eglDestroySurface
    11. 删除 EGLContext 对象 eglDestroyContext
    12. 终止与 EGLDisplay 之间的连接

    四.OpenGL ES 案例

    demo 下载:《Windows OpenGL ES 图像白平衡色温》

    demo 下载:《Windows OpenGL ES 图像绿幕抠图》

    demo 下载:《Windows OpenGL ES 图像色调》

    demo 下载:《Windows OpenGL ES 图像色彩替换》

    demo 下载:《Windows OpenGL ES 图像饱和度调节》

    五.依赖动态库

    1. d3dcompiler_47.dll
    2. libEGL.dll
    3. libGLESv2.dll

    六.猜你喜欢

    1. OpenGL ES 简介
    2. OpenGL ES 版本介绍
    3. OpenGL ES 2.0 和 3.0 区别
    4. OpenGL ES 名词解释(一)
    5. OpenGL ES 名词解释(二)
    6. OpenGL ES GLSL 着色器使用过程
    7. OpenGL ES EGL 简介
    8. OpenGL ES EGL 名词解释
    9. OpenGL ES EGL eglGetDisplay
    10. OpenGL ES EGL eglInitialize
    11. OpenGL ES EGL eglGetConfigs
    12. OpenGL ES EGL eglChooseConfig
    13. OpenGL ES EGL eglGetError
    14. OpenGL ES EGL eglCreateContext
    15. OpenGL ES EGL eglCreateWindowSurface
    16. OpenGL ES EGL eglCreatePbufferSurface
    17. OpenGL ES EGL eglMakeCurrent
    18. OpenGL ES EGL eglSwapBuffer
    19. OpenGL ES EGL eglDestroySurface
    20. OpenGL ES EGL eglDestroyContext
    21. OpenGL ES EGL eglQueryContext
    22. OpenGL ES EAGLContext 和 EGLContext
    23. OpenGL ES OpenGL WebGL EGL WGL 区别
    24. OpenGL ES freeglut 下载和使用
    25. OpenGL ES glew 下载和使用
    26. OpenGL ES glut 下载和使用
    27. OpenGL ES glfw 下载和使用
    28. OpenGL ES glad 下载和使用
    29. OpenGL ES glut glew glfw glad freeglut
    30. OpenGL ES google angle
    31. OpenGL Windows 搭建环境(MFC 版本)
    32. OpenGL ES Windows 搭建环境(MFC 版本)
  • 相关阅读:
    python基于PHP+MySQL的个人博客系统毕设
    数据库隔离级别
    【TypeScript】枚举类型和泛型的详细介绍
    PAT 1025 反转链表
    大数据 - HBase《一》- Hbase基本概念
    Java#8(对一些知识点的补充)
    初学者程序员要学好.Net,只要学习这几个框架就够了
    树 —— 树和森林的遍历
    Java学习笔记40——Lambda表达式
    为什么Java中你写的swap()函数无法实现两数交换?你真的深入了解Java中的栈和堆了吗?
  • 原文地址:https://blog.csdn.net/ZhaDeNianQu/article/details/127781687
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号