less than 1 minute read

多版本 APIOpenGL WIKIOpenGLES2.0 APIGLES2.0 讲解博客

  1. 强制类型转换的导致结果为0
    255 的默认归一化;
  2. 浮点数取余问题
    用 mod, % 只能用到 int
    除法误差
  3. gl_FragColor:中间运算时自动除以输入数据的最大可表示值;
    出来的是小数,copy 成 unsigned byte 时是 int,中间会自动乘以 255
  4. 输入数据 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,要不然报错;

  5. implicit cast from “int” to “float”:两种类新在做运算,不允许;
    出现类型隐式转换的,直接去找定义,一般是一个变量引起多个;
  6. glGetIntegerv(GL_MAX_TEXTURE_SIZE) 得不到值:es2 无法获取 texture size
    是因为没有初始化 context;要调用 glutCreateWindow 或者 eglCreateContext 这些之后才行;
  7. glCreateShader 返回值为0
    和上述一样的问题,没有创建环境;
  8. vertex 初始化
    OpenGL ES 中的顶点数据 Vertex 以及着色器 Shader 介绍并绘制三角形
  9. egletisplay 创建失败
    不能在命令行模式下运行命令,必须在图形化界面下;
  10. invalid token “es” in version line
    版本用 “130” 就行,不用 “130 es”
  11. global function texelFetch requires “#version 130” or later
    用 texture2D 代替
  12. ’%’ requires “#extension GL_EXT_gpu_shader4 : enable” before use
    如果有高版本的 es,就加一条上述的宏,如果没有,就。。。。

TOP

附录

A 参考资料

  1. OpenGL ES2.0 c++ 基础教程
    EGL + opengl es 2, 有详细的流程中文说明;
  2. OpenGL ES 2.0 (iOS)[06-1]:基础纹理
    细致的基础说明
  3. Android开发OpenGL ES的流程,从着色器编写到显示在屏幕上
  4. 在Linux上,如何开发OpenGL ES(GLES)2.0应用程序?
  5. Android OpenGL ES 开发(八): OpenGL ES 着色器语言GLSL
    基础知识,适合入门;
  6. OpenGL ES着色器语言
    超全基础知识;
  7. OpenGL ES 2.0 Shader相关介绍
    shader 介绍;
  8. GPGPU数学基础教程
  9. 渲染API-OpenGL:1.各种buffer
  10. OpenGL ES 2兼容函数列表
  11. ogl-samples
    超全面例程;

Comments