几何着色器 GEOMETRY SHADER

OpenGL ES不支持几何着色器,需要移除代码中所有和GL_GEOMETRY_SHADER相关的内容

glPolygonMode

OpenGL ES移除了glPolygonMode

glPointSize

OpenGL ES移除了glPointSize,如果需要设置点的大小,可以直接在顶点着色器中对gl_PointSize进行赋值,其内部声明是mediump float gl_Position;
example:

#version 300 es
layout(location = 0) in vec3 aPos;uniform vec4 color;
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;out vec4 vertexColor;void main()
{gl_Position = projection * view * model * vec4(aPos, 1.0f);vertexColor = color;gl_PointSize = 2.0f; // 设置点大小
}

着色器代码版本

需要将着色器代码的版本声明由#version 330 core改为#version 300 es,其中core为OpenGL的声明,es为OpenGL ES的声明,330和300版本号,根据需要填写

着色器精度设置

OpenGL ES中有三个精度描述的关键字lowpmediumphighp,分别代表低、中、高三种精度,所有整型、浮点型或者采样器都需要用精度描述符进行修饰。例如下面OpenGL中的着色器代码在OpenGL ES中会报错

#version 300 es
out vec4 FragColor;     // 没有精度描述符
in vec4 vertexColor;    // 没有精度描述符void main()
{FragColor = vertexColor;
}

报错

vec4是float类型的向量,需要用精度描述符进行修饰,可以修改成如下:

#version 300 es
out mediump vec4 FragColor;     // 中精度
in mediump vec4 vertexColor;    // 中精度void main()
{FragColor = vertexColor;
}

也可以使用precision关键字批量设置类型精度,如precision mediump float;,上面报错的代码也可以修改为如下:

#version 300 es
precision mediump float;out vec4 FragColor;     // 中精度
in vec4 vertexColor;    // 中精度void main()
{FragColor = vertexColor;
}

上述的精度描述关键字的问题我只在片段着色器中遇到,在顶点着色器中没有报这个错误。在顶点着色器中我没有使用精度关键字,也能够编译通过。

另外在OpenGL中,也有这些关键字,但它们并没有任何实际意义,只是为了方便将OpenGL ES的着色器代码运行到OpenGL中,而不用修改代码。

最后,附上这三给关键字的具体说明

参考

https://www.khronos.org/registry/OpenGL-Refpages/es3.0/
https://www.khronos.org/registry/OpenGL-Refpages/gl4/
https://www.khronos.org/files/opengles3-quick-reference-card.pdf
https://www.khronos.org/registry/OpenGL/specs/es/3.0/GLSL_ES_Specification_3.00.pdf

将代码从OPENGL移植到OPENGL ES需要修改什么相关推荐

  1. android opengl版本,Android OpenGL ES(一)开发入门

    早就听过大名鼎鼎的 OpenGL,却迟迟没有实践学习,有些惭愧.今天开始通过实践+博文方式学习掌握 OpenGL.此文对于 OpenGL 的学习分为以下部分: OpenGL 基础概念 OpenGL 坐 ...

  2. hwui opengl VS skia opengl VS skia vulkan?

    之前讨论过skia codec部分在o,p上的变化,比如增加了heif解码等. 其实skia在android o,p的变化不只这些. 印象最深刻的还是渲染部分 从o开始hwui渲染支持skia ope ...

  3. 如何将三万行代码从Flow移植到TypeScript?

    作者 | David Gomes 译者 | 弯月 责编 | 郭芮 来源 |  CSDN(ID:CSDNnews) [编者按]在内存安全中,类型安全是很重要的一个命题.为了确保JavaScript项目运 ...

  4. 【OpenGL】九、OpenGL 绘制基础 ( OpenGL 状态机概念 | OpenGL 矩阵概念 )

    文章目录 一.OpenGL 状态机概念 二.OpenGL 矩阵概念 上一篇博客 [OpenGL]八.初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗 ...

  5. OpenGL版本与OpenGL扩展机制

    1 opengl的版本区别(在opengl官方文档中有详细说明)     针对Opengl不同版本的升级是主要是扩展指令集.     现在版本是4.0啦 1.1 opengl1.1 1995年,SGI ...

  6. 如何将三万行代码从 Flow 移植到 TypeScript?

    [CSDN编者按]在内存安全中,类型安全是很重要的一个命题.为了确保JavaScript项目运行的类型安全,本文的作者介绍了2016年时使用Flow的经历:由Facebook支持的Flow方案,不仅拥 ...

  7. 【OpenGL】使用OpenGL的GLU库绘制BSpline曲线

    [OpenGL]使用OpenGL的GLU库绘制BSpline曲线. 1.绘制目标 2.核心代码 3.运行结果 1.绘制目标 使用OpenGL的GLU库绘制BSpline曲线. 2.核心代码 /// T ...

  8. Java opengl openal_OpenCL、OpenGL、OpenAL

    OpenGL是个与硬件无关的软件接口,可以在不同的平台如Windows 95.Windows NT.Unix.Linux.MacOS.OS/2之间进行移植.因此,支持OpenGL的软件具有很好的移植性 ...

  9. paho.mqtt.c开源代码的ARM移植

    paho.mqtt.c开源代码的ARM移植 1.环境及背景 2.开源资源下载 3.编译过程 3.1编译OpenSSL 3.2编译paho.mqtt.c 1.环境及背景 CSDN上关于paho.mqtt ...

最新文章

  1. TVMNN编译Compiler栈
  2. 惠普z840工作站linux,全模块战神 惠普旗舰级Z840工作站评测
  3. JAVA自学笔记07
  4. Flume实操(三)【实时读取目录文件到HDFS案例】
  5. 获取文本中你须要的字段的 几个命令 grep awk cut tr sed
  6. 数组合并假设有 n 个长度为 k 的已排好序(升序)的数组,请设计数据结构和算法,将这 n 个数组合并到一个数组,且各元素按升序排列。即实现函数-C-icoding-排序-数据结构
  7. lanmp之二 (奇葩问题)
  8. Apache beam其他学习记录
  9. Centos在线安装nginx
  10. 2018福建省考c语言成绩查询,福建省公务员考试录用网成绩查询系统:2019福建省考分数查询入口...
  11. 如何利用大数据技术构建用户画像
  12. http://my.oschina.net/huangyong/blog/372491?fromerr=hobPLCmQ#OSC_h2_5
  13. 内网win10安装flash插件
  14. VS2017中添加Flash控件
  15. 【React源码】(十八)React 算法之调和算法
  16. 杭州电子科技大学ACM-1093
  17. HashSet的遍历和使用特点
  18. 村田【元宇宙】要火,但不能“起火”—— 电池:半固态凝胶软包电池篇
  19. 成都拓嘉辰丰:拼多多关键词搜不到自家商品怎么回事?
  20. The JAVA_HOME environment variable is not defined correctly This environment variable is needed to r

热门文章

  1. 制作CYDIA发布源的DEB文件,详解!
  2. 白话空间统计二十九:空间插值(二)
  3. 2021知到答案,公共关系与人际交往能力(见面课答案).
  4. 解决 Sniffer Pro 4.7 sp5 安装中有关JRE的问题
  5. ]许多代码段,没准儿有你需要的 C++ Builder
  6. 腾讯信鸽推送Android SDK快速指南
  7. 热爱生命 --《年轻的潮》 汪国真
  8. 傅里叶分析和图像的傅里叶频谱解析
  9. 头歌 DNS协议分析 第4关 NS 类型的 DNS 解析报文分析
  10. TestStand-用户界面