「OpenGL」 ES 2.0 入门
- 强制类型转换的导致结果为0
255 的默认归一化; - 浮点数取余问题
用 mod, % 只能用到 int
除法误差 - gl_FragColor:中间运算时自动除以输入数据的最大可表示值;
出来的是小数,copy 成 unsigned byte 时是 int,中间会自动乘以 255 -
输入数据 glTexImage2D:不支持 int ;但是可以用 byte 和 long
支持 GL_UNSIGNED_BYTE,GL_UNSIGNED_SHORT_5_6_5,GL_UNSIGNED_SHORT_4_4_4_4,和GL_UNSIGNED_SHORT_5_5_5_1
类型就用 byte;输入数据用 int32,最大值是 255;用 int64 最大值是 10…..; 但输出要用 GL_UNSIGNED_BYTE,要不然报错; - implicit cast from “int” to “float”:两种类新在做运算,不允许;
出现类型隐式转换的,直接去找定义,一般是一个变量引起多个; - glGetIntegerv(GL_MAX_TEXTURE_SIZE) 得不到值:es2 无法获取 texture size
是因为没有初始化 context;要调用 glutCreateWindow 或者 eglCreateContext 这些之后才行; - glCreateShader 返回值为0
和上述一样的问题,没有创建环境; - vertex 初始化
OpenGL ES 中的顶点数据 Vertex 以及着色器 Shader 介绍并绘制三角形 - egletisplay 创建失败
不能在命令行模式下运行命令,必须在图形化界面下; - invalid token “es” in version line
版本用 “130” 就行,不用 “130 es” - global function texelFetch requires “#version 130” or later
用 texture2D 代替 - ’%’ requires “#extension GL_EXT_gpu_shader4 : enable” before use
如果有高版本的 es,就加一条上述的宏,如果没有,就。。。。
附录
A 参考资料
- OpenGL ES2.0 c++ 基础教程
EGL + opengl es 2, 有详细的流程中文说明; - OpenGL ES 2.0 (iOS)[06-1]:基础纹理
细致的基础说明 - Android开发OpenGL ES的流程,从着色器编写到显示在屏幕上
- 在Linux上,如何开发OpenGL ES(GLES)2.0应用程序?
- Android OpenGL ES 开发(八): OpenGL ES 着色器语言GLSL
基础知识,适合入门; - OpenGL ES着色器语言
超全基础知识; - OpenGL ES 2.0 Shader相关介绍
shader 介绍; - GPGPU数学基础教程
- 渲染API-OpenGL:1.各种buffer
- OpenGL ES 2兼容函数列表
- ogl-samples
超全面例程;
Comments