精华内容
下载资源
问答
  • 安装了OpenGl Extension Viewer 查看本机的OpenGl版本: 确实版本低 首先到任务管理器中,找到设备显示器,打开,删除,显卡, 下载安装驱动精灵 打开后它自动检测本机需要更新或者安装的驱动,如下图: ...

    最近安装Genymotion时出现如下错误:

    解决办法:

    打不开Genymotion

    安装了OpenGl Extension Viewer 查看本机的OpenGl版本:

    确实版本低

    首先到任务管理器中,找到设备显示器,打开,删除,显卡,

     

    下载安装驱动精灵

    打开后它自动检测本机需要更新或者安装的驱动,如下图:

    然后就可以打开Genymotion了:

    展开全文
  • gll:适用于Go的多可读,跨版本兼容OpenGL包装器
  • bindbc-opengl兼容@nogc和nothrow ,并且可以与被编译-betterC兼容性。 此软件包旨在替代 ,后者不提供相同级别的兼容性。 请注意, bindbc-gl当前不支持不推荐使用的OpenGL功能。 将bindbc-opengl添加到您的...
  • 为了启用映射层,解决设备上没有OpenCL和OpenGL硬件驱动时的兼容性问题,公司目前已经在微软商店中发布了兼容性包。该兼容性包的标题为 "OpenCL和OpenGL兼容性包",目前可以从微软商店(之前称为Windows商店)中下载。...

    今年早些时候,微软宣布正在努力在Windows 10的Direct3D 12(D3D12)中启用对OpenCL和OpenGL映射层的支持。为了启用映射层,解决设备上没有OpenCL和OpenGL硬件驱动时的兼容性问题,公司目前已经在微软商店中发布了兼容性包。

    该兼容性包的标题为 "OpenCL和OpenGL兼容性包",目前可以从微软商店(之前称为Windows商店)中下载。该兼容性包针对的是运行Windows 10 May 2020 Update、Windows 10 October 2020 Update或更新版本的系统。

    在产品列表中,微软指出,当适当的硬件驱动程序缺失或默认情况下未启用时,这个兼容性包可以让你在设备上运行OpenCL和OpenGL应用。Windows 10将在启用硬件加速功能后自动启动支持的应用程序,以提高性能。

    需要注意的是,只有设备和应用支持DirectX 12时,这个功能才会发挥作用。对于驱动安装齐全的计算机而言,只有很少一些应用会使用这个兼容包,但微软表示,它正在开发一个捆绑包,允许更多应用使用兼容层。Windows Insiders可以获得这个捆绑包的预览版,并使用它来运行更多的应用。

    微软希望兼容性层能够让开发者和用户更容易使用。目前,并不是每台Windows机器都对OpenCL和OpenGL有很好的原生支持,而映射层将显著提高兼容性。

    Windows 10的OpenCL和OpenGL兼容包还将帮助生产力和创意应用,所以它真的不仅仅是只能用于游戏

    微软正在鼓励开发者将他们的应用和游戏移植到DirectX 12上,微软希望开发者社区和用户能够从通过微软商店提供的Windows 10兼容层中受益。

    d6b1346b226751d550279350ff89cbf8.png

    OpenCL和OpenGL的兼容层下载地址:

    https://www.microsoft.com/en-gb/p/opencl-and-opengl-compatibility-pack/9nqpsl29bfff?

    展开全文
  • OpenGL 4.5规范 OpenGL 4.5 Compatibility Profile Specification The OpenGL R Graphics System: A Specification (Version 4.5 (Compatibility Profile) - May 28, 2015) Mark Segal Kurt Akeley Editor (version...
  • 这是OpenGL官网提供的关于OpenGL平台兼容性的细节性的详细讨论,适合于OpenGL专家阅读
  • 一、相同点 相比于 OpenGL ES 1.x 系列的固定功能管线,OpenGL ES 2.0 和 OpenGL ES...OpenGL ES 3.0 是向后兼容 OpenGL ES 2.0 的。也就是说使用 2.0 编写的应用程序是可以在 3.0 中继续使用的。 基于 2.0 拥有的...

    一、相同点

    相比于 OpenGL ES 1.x 系列的固定功能管线,OpenGL ES 2.0OpenGL ES 3.0 都是可编程图形管线。开发者可以自己编写图形管线中的 顶点着色器片段着色器 两个阶段的代码。

    二、不同点

    1. 兼容性

    OpenGL ES 3.0 是向后兼容 OpenGL ES 2.0 的。也就是说使用 2.0 编写的应用程序是可以在 3.0 中继续使用的。

    2. 新特性

    采用阴影贴图、体渲染(volume rendering)、基于 GPU 的粒子动画、几何形状实例化、纹理压缩和伽马校正等技术的重要功能在 2.0 中都不具备。3.0 将这些功能引入,同时继续适应嵌入系统的局限性。这一部分在下一章详细介绍。

    3. 渲染管线

    3.0 中移除了 Alpha 测试逻辑操作(LogicOp) 两部分,这两部分存在于 OpenGL ES 2.0 和 OpenGL ES 1.x 中。
    移除 Alpha 测试 是因为片段着色器可能抛弃片段,因此 Alpha 测试可以在片段着色器中进行。
    移除 逻辑操作(LogicOp) 是因为它很少被使用。

    4. 着色器脚本编写

    着色器脚本的编写发生了比较大的变化,其中几点为:

    • 版本声明

    必须在着色器脚本中使用 #version 300 es 声明为指定使用 OpenGL ES 3.0 版本。例如:

    #version 300 es
    
    layout(location = 0) in vec4 vPosition;
    
    void main() {
        gl_Position = vPosition;
    }
    

    而不添加版本声明或者使用 #version 100 es 声明版本则指定使用 OpenGL ES 2.0。

    备注: 以往 2.0 刚刚出来可编程的图形管线,所以版本声明为 #version 100 es ,后来为了使版本号相匹配,OpenGL ES 3.0 的 shader 版本直接从1.0 跳到了 3.0 。

    • 输入输出

    3.0 中新增了 inoutinout 关键字,用来取代 attributevarying 关键字。同时 gl_FragColorgl_FragData 也删除了,片段着色器可以使用 out 声明字段输出。

    • 变量赋值

    3.0 中可以直接使用 layout 对指定位置的变量赋值。例如:

    # shader脚本中
    layout (location = 1) uniform float a;
    

    代码中,直接写上对应的 layout 的值就可以赋值

    GLES30.glUniform1f(1, 1f);
    

    而 2.0 中必须使用如下形式赋值:

    GLES20.glUniform1f(GLES20.glGetAttribLocation(program, "a"), 1f)
    

    三、新功能

    OpenGL ES 3.0 加入了许多新的功能和特性,使得我们的开发更加灵活和便捷,下面是 3.0 的一些新功能。这部分摘自《OpenGL ES 3.0 编程指南》一书:

    1. 纹理

    • sRGB纹理和帧缓冲区——允许应用程序执行伽马校正渲染。纹理可以保存在经过伽马校正的sRGB空间,在着色器中读取时反校正到线性空间,然后在输出到帧缓冲区时转换回sRGB伽马校正空间。通过在线性空间中正确地进行照明和其它计算,可能得到更高的视觉保真度。
    • 2D纹理数组——保存一组2D纹理的纹理目标。例如这些数组可以用于执行纹理动画。在2D纹理数组出现之前,这种动画一般通过在单个2D纹理中平铺动画帧并修改纹理坐标改变动画帧来实现。有了2D纹理数组,动画的每个帧可以在数组的一个2D切片中指定。
    • 3D纹理。一些OpenGL ES 2.0实现通过扩展支持3D纹理,而OpenGL ES3.0将此作为强制的功能。
    • 深度纹理和阴影比较——启用存储在纹理中的深度缓冲区。深度纹理的最常见用途是渲染阴影,这时深度缓冲区从光源的角度渲染,然后用于在渲染场景时比较,以确定片段是否在阴影中。除了深度纹理外,OpenGL ES 3.0可以在读取时比较深度纹理,从而在深度纹理上完成双线性过滤。
    • 无缝立方图。以往立方图渲染可能在立方图各面之间的边界产生伪像。在OpenGL ES 3.0中,立方图可以进行采样如过滤来使用相邻面的数据并删除接缝处的伪像。
    • 浮点纹理。OpenGL ES 3.0扩展了支持的纹理格式。支持并可以过滤半浮点纹理(16位),也支持全浮点纹理(32位),但不能过滤。
    • ETC2/EAC纹理压缩。OpenGL ES 3.0中强制支持ETC2/EAC。ETC2/EAC的格式为RGB888,RGBA8888和单通道及双通道有符号/无符号纹理数据。纹理压缩的好处包括更好的性能以及减少GPU内存占用。
    • 整数纹理。OpenGL ES 3.0引入了渲染和读取保存为未规范化有符号或无符号8位、16位和32位整数纹理的能力。
    • 其它纹理格式。OpenGL ES 3.0还包含了对11-11-10 RGB浮点纹理、共享指数RGB 9-9-9-5纹理、10-10-10-2整数纹理以及8位分量有符号规范化纹理的支持。
    • 非2幂次纹理(NPOT)。纹理现在可以指定为不为2的幂次尺寸。
    • 纹理细节级别(LOD)。现在可以强制使用用于确定读取哪个Mipmap的LOD参数。此外,可以强制基本和最大Mipmap级别。这两个功能组合起来,可以流化Mipmap。在更大的Mipmap级别可用时,可以提高基本级别,LOD值可以平滑地增加,以提供平滑的流化纹理。这一功能非常有用,例如用于通过网络连接下载纹理Mipmap。
    • 纹理调配。引入新的纹理对象状态,允许独立控制纹理数据每个通道(R、G、B、A)在着色器中的映射。
    • 不可变纹理。为应用程序提供在加载数据之前指定纹理格式和大小的机制。在这样做的时候,纹理格式不可变,OpenGL ES驱动程序可以预先执行所有一致性和内存检查。通过允许驱动程序在绘制的时候跳过一致性检查,可以改善性能。
    • 最小尺寸增大。OpenGL ES 3.0支持远大于OpenGL ES 2.0的纹理资源。

    2. 着色器

    • 二进制程序文件。在OpenGL ES 2.0中可以二进制格式存储着色器,但是仍需要在运行时链接到程序。在OpenGL ES 3.0中,完全链接过的二进制程序文件可以保存为离线二进制格式,运行时不需要链接步骤。这有助于减少应用程序的加载时间。
    • 强制的在线编译器。在OpenGL ES 2.0可以选择驱动程序是否支持着色器的在线编译,意图是降低驱动程序的内存需求,但是这一功能代价很大,开发人员不得不依靠供应商专用工具来生成着色器。在OpenGL ES 3.0中,所有实现都有在线着色器编译器。
    • 非方矩阵。支持方阵之外的新矩阵类型,并在API中增加了相关的统一调用,以支持这些矩阵的加载。非方矩阵可以减少执行变换所需的指令。例如执行仿射变换时,可以使用43矩阵代替最后一行为(0, 0, 0, 1)的44矩阵,从而减少执行变换所需的指令。
    • 全整数支持。支持整数(以及无符号整数)标量和向量类型以及全整数操作。有各种内建函数可以实现从整数到浮点数、从浮点数到整数的转换以及从纹理中读取整数值和向整数颜色缓冲区中输出整数值的功能。
    • 质心采样。为了避免在多重采样时产生伪像,可以用质心采样声明顶点着色器和片段着色器的输出变量
    • 平面/平滑插值程序。在OpenGL ES 2.0中所有插值程序均隐含地在图元之间采用线性插值。在OpenGL ES 3.0中插值程序可以显式声明为平面或者平滑着色。
    • 统一变量块。统一变量值可以组合为统一变量块。统一变量块可以更高效地加载,也可在多个着色器程序间共享。
    • 布局限定符。顶点着色器输入可以用布局限定符声明,以显式绑定着色器源代码中的位置,而不需要调用API。布局限定符也可以用于片段着色器的输出,在渲染到多个渲染目标时将输出绑定到各个目标。而且,布局限定符可以用于控制统一变量块的内存布局。
    • 实例和顶点ID。顶点索引现在可以在顶点着色器中访问,如果使用实例渲染,还可以访问实例ID。
    • 片段深度。片段着色器可以显式控制当前片段的深度值,而不是依赖深度值的插值。
    • 新的内建函数。引入了许多新的内建函数,以支持新的纹理功能、片段导数、半浮点数据转换和矩阵及数学运算。
    • 宽松的限制。大大放松了对着色器的限制。着色器不再限于指令长度,完全支持变量为基础的循环和分支,并支持数组索引。

    3. 几何形状

    • 变换反馈。可以在缓冲区对象中捕捉顶点着色器的输出。这对许多在GPU上执行动画而不需要CPU干预的技术很实用,例如,粒子动画或者使用“渲染到顶点缓冲区”的物理学模拟。
    • 布尔遮挡查询。应用程序可以查询一个(或者一组)绘制调用的任何像素是否通过深度测试。这个功能可以在各种技术中使用,例如镜头眩光效果的可见性确定,以及避免在边界被遮挡的对象上进行几何形状处理的优化。
    • 实例渲染。有效地渲染包含类似几何形状但是属性(例如变化矩阵、颜色或者大小)不同的对象。这一功能在渲染大量类似对象时很有用,例如人群的渲染。
    • 图元重启。在OpenGL ES 2.0中为新图元使用三角形条带时,应用程序必须在索引缓冲区中插入索引,以表示退化的三角形。在OpenGL ES 3.0中,可以还是要特殊的索引值表示新图元的开始。这就消除了使用三角形条带时生成退化三角形的需求。
    • 新顶点格式。支持包括10-10-10-2有符号和无符号规范化顶点属性;8位、16位和32位整数属性;以及16位半浮点。

    4. 缓冲区对象

    引入了许多新的缓冲区对象,以提高为图形管线各部分指定数据的效率和灵活性。

    • 统一变量缓冲区对象。为存储/绑定大的统一变量块提供高效的方法。统一变量缓冲区对象可以减少将统一变量值绑定带着色器的性能代价,这是OpenGL ES 2.0应用程序中的常见瓶颈。
    • 顶点数组对象。提供绑定和在顶点数组状态之间切换的高效方法。顶点数组对象实际上是顶点数组状态的容器对象。使用它们,应用程序可以在一次API调用中切换顶点数组状态,而不是发出多个调用。
    • 采样器对象。将采样器状态(纹理循环模式和过滤)与纹理对象分离。这为在纹理中共享采样器状态提供了更高效的方法。
    • 同步对象。为应用程序提供检查一组操作是否在GPU上完成执行的机制。相关的新功能是栅栏(Fence),它为应用程序提供了通知GPU应该等待一组操作结束才能接受更多操作进入执行队列的方法。
    • 像素缓冲对象。使应用程序能够执行对像素操作和纹理传输操作的异步数据传输。这种优化主要是为了在CPU和GPU之间提供更快的数据传输,在传输操作期间,应用程序可以继续工作。
    • 缓冲区子界映射。使应用程序能够映射缓冲区的一个子区域,供CPU访问。这可以提供比传统缓冲区映射更好的性能,在传统缓冲区映射中,必须使整个缓冲区可用于客户。
    • 缓冲区对象间拷贝。提供了高效地从一个缓冲区对象向另一个缓冲区对象传输数据的机制,不需要CPU干预。

    5. 帧缓冲区

    增添了许多与屏幕外渲染带帧缓冲区对象相关的新功能

    • 多重渲染目标(MRT)。允许应用程序同时渲染到多个颜色缓冲区。利用MRT技术,片段着色器输出多个颜色,每个用于一个相连的颜色缓冲区。MRT用于许多高级的渲染算法,例如延迟着色。
    • 多重采样渲染缓冲区。使应用程序能够渲染到具备多重采样抗锯齿功能的屏幕外帧缓冲区。多重采样帧缓冲区不能直接绑定到纹理,但是可以用新引入的帧缓冲区块移动解析为单采样纹理。
    • 帧缓冲区失效提示。OpenGL ES 3.0的许多实现使用基于块状渲染(TBR)的GPU。TBR常常在必须为了进一步渲染到帧缓冲区而毫无必要地恢复图块内容时导致很高的性能代价。帧缓冲区失效为应用程序提供了通知驱动程序不再需要帧缓冲区内容的机制。这使驱动程序能够采取优化步骤,跳过不必要的图块恢复操作。这一功能对于在许多应用程序中实现峰值性能很重要,特别是那些进行大量屏外渲染的程序。
    • 新的混合方程式。OpenGL ES 3.0支持最大值/最小值函数作为混合方程式。
    展开全文
  • 关于OpenGL(含ES)的资料汗牛充栋,但是普遍存在的问题是,OES的资料不够系统,OGL的...此列表来自Qt的QOpenGLFunctions类,该类用于创建OpenGLOpenGL ES兼容项目(在一个工程里) 注:Qt支持各种版本的GL头文...

    关于OpenGL(含ES)的资料汗牛充栋,但是普遍存在的问题是,OES的资料不够系统,OGL的资料过于庞大

    此列表详细记录了GLES2兼容函数的情况,使大家在学习时,对于算法和资料可以有针对性的选择

    此列表来自Qt的QOpenGLFunctions类,该类用于创建OpenGL和OpenGL ES兼容项目(在一个工程里)

    注:Qt支持各种版本的GL头文件导入,命名方式为QOpenGLFunctions_X_Y,对于更高级的3+桌面版,使用例如QOpenGLFunctions_3_0这种类 


    很多人对这个表怎么用,不是很清楚,这里再补充一下,目前跨平台OpenGL开发(桌面+移动 )主流API选择是OpenGL ES 2。这个表纪录了OpenGL ES2所有函数的兼容情况。如果你是走这个方向的,这个表很有用。


    网上资料,很多都是OpenGL ES 1或者还有立即模式那种很古老的API,那些都是淘汰的。对于新手来说,你把那些资料里面,出现的gl打头的函数在这个表里搜索一下,如果是 这个表里没有的,基本上那份资料就可以不用看了。(不过你得注意一些工具库比如glm,glew,glut,别认错了)


    补充一份:详细的OpenGL(ES)各版本API差别在这里:http://docs.gl/



        // GLES2 + OpenGL1 common subset 
        void glBindTexture(GLenum target, GLuint texture); 
        void glBlendFunc(GLenum sfactor, GLenum dfactor); 
        void glClear(GLbitfield mask); 
        void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); 
        void glClearStencil(GLint s); 
        void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); 
        void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
        void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
        void glCullFace(GLenum mode); 
        void glDeleteTextures(GLsizei n, const GLuint* textures); 
        void glDepthFunc(GLenum func); 
        void glDepthMask(GLboolean flag); 
        void glDisable(GLenum cap); 
        void glDrawArrays(GLenum mode, GLint first, GLsizei count); 
        void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices); 
        void glEnable(GLenum cap); 
        void glFinish(); 
        void glFlush(); 
        void glFrontFace(GLenum mode); 
        void glGenTextures(GLsizei n, GLuint* textures); 
        void glGetBooleanv(GLenum pname, GLboolean* params); 
        GLenum glGetError(); 
        void glGetFloatv(GLenum pname, GLfloat* params); 
        void glGetIntegerv(GLenum pname, GLint* params); 
        const GLubyte *glGetString(GLenum name); 
        void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params); 
        void glGetTexParameteriv(GLenum target, GLenum pname, GLint* params); 
        void glHint(GLenum target, GLenum mode); 
        GLboolean glIsEnabled(GLenum cap); 
        GLboolean glIsTexture(GLuint texture); 
        void glLineWidth(GLfloat width); 
        void glPixelStorei(GLenum pname, GLint param); 
        void glPolygonOffset(GLfloat factor, GLfloat units); 
        void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); 
        void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); 
        void glStencilFunc(GLenum func, GLint ref, GLuint mask); 
        void glStencilMask(GLuint mask); 
        void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); 
        void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
        void glTexParameterf(GLenum target, GLenum pname, GLfloat param); 
        void glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params); 
        void glTexParameteri(GLenum target, GLenum pname, GLint param); 
        void glTexParameteriv(GLenum target, GLenum pname, const GLint* params); 
        void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
        void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); 

        // GL(ES)2 
        void glActiveTexture(GLenum texture); 
        void glAttachShader(GLuint program, GLuint shader); 
        void glBindAttribLocation(GLuint program, GLuint index, const char* name); 
        void glBindBuffer(GLenum target, GLuint buffer); 
        void glBindFramebuffer(GLenum target, GLuint framebuffer); 
        void glBindRenderbuffer(GLenum target, GLuint renderbuffer); 
        void glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); 
        void glBlendEquation(GLenum mode); 
        void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); 
        void glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); 
        void glBufferData(GLenum target, qopengl_GLsizeiptr size, const void* data, GLenum usage); 
        void glBufferSubData(GLenum target, qopengl_GLintptr offset, qopengl_GLsizeiptr size, const void* data); 
        GLenum glCheckFramebufferStatus(GLenum target); 
        void glClearDepthf(GLclampf depth); 
        void glCompileShader(GLuint shader); 
        void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data);
        void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data);
        GLuint glCreateProgram(); 
        GLuint glCreateShader(GLenum type); 
        void glDeleteBuffers(GLsizei n, const GLuint* buffers); 
        void glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers); 
        void glDeleteProgram(GLuint program); 
        void glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers); 
        void glDeleteShader(GLuint shader); 
        void glDepthRangef(GLclampf zNear, GLclampf zFar); 
        void glDetachShader(GLuint program, GLuint shader); 
        void glDisableVertexAttribArray(GLuint index); 
        void glEnableVertexAttribArray(GLuint index); 
        void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
        void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
        void glGenBuffers(GLsizei n, GLuint* buffers); 
        void glGenerateMipmap(GLenum target); 
        void glGenFramebuffers(GLsizei n, GLuint* framebuffers); 
        void glGenRenderbuffers(GLsizei n, GLuint* renderbuffers); 
        void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name);
        void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name);
        void glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders); 
        GLint glGetAttribLocation(GLuint program, const char* name); 
        void glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params); 
        void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params);
        void glGetProgramiv(GLuint program, GLenum pname, GLint* params); 
        void glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, char* infolog); 
        void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params); 
        void glGetShaderiv(GLuint shader, GLenum pname, GLint* params); 
        void glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog); 
        void glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision); 
        void glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, char* source); 
        void glGetUniformfv(GLuint program, GLint location, GLfloat* params); 
        void glGetUniformiv(GLuint program, GLint location, GLint* params); 
        GLint glGetUniformLocation(GLuint program, const char* name); 
        void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params); 
        void glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params); 
        void glGetVertexAttribPointerv(GLuint index, GLenum pname, void** pointer); 
        GLboolean glIsBuffer(GLuint buffer); 
        GLboolean glIsFramebuffer(GLuint framebuffer); 
        GLboolean glIsProgram(GLuint program); 
        GLboolean glIsRenderbuffer(GLuint renderbuffer); 
        GLboolean glIsShader(GLuint shader); 
        void glLinkProgram(GLuint program); 
        void glReleaseShaderCompiler(); 
        void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); 
        void glSampleCoverage(GLclampf value, GLboolean invert); 
        void glShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLint length); 
        void glShaderSource(GLuint shader, GLsizei count, const char** string, const GLint* length); 
        void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); 
        void glStencilMaskSeparate(GLenum face, GLuint mask); 
        void glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass); 
        void glUniform1f(GLint location, GLfloat x); 
        void glUniform1fv(GLint location, GLsizei count, const GLfloat* v); 
        void glUniform1i(GLint location, GLint x); 
        void glUniform1iv(GLint location, GLsizei count, const GLint* v); 
        void glUniform2f(GLint location, GLfloat x, GLfloat y); 
        void glUniform2fv(GLint location, GLsizei count, const GLfloat* v); 
        void glUniform2i(GLint location, GLint x, GLint y); 
        void glUniform2iv(GLint location, GLsizei count, const GLint* v); 
        void glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z); 
        void glUniform3fv(GLint location, GLsizei count, const GLfloat* v); 
        void glUniform3i(GLint location, GLint x, GLint y, GLint z); 
        void glUniform3iv(GLint location, GLsizei count, const GLint* v); 
        void glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 
        void glUniform4fv(GLint location, GLsizei count, const GLfloat* v); 
        void glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w); 
        void glUniform4iv(GLint location, GLsizei count, const GLint* v); 
        void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); 
        void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); 
        void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); 
        void glUseProgram(GLuint program); 
        void glValidateProgram(GLuint program); 
        void glVertexAttrib1f(GLuint indx, GLfloat x); 
        void glVertexAttrib1fv(GLuint indx, const GLfloat* values); 
        void glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); 
        void glVertexAttrib2fv(GLuint indx, const GLfloat* values); 
        void glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); 
        void glVertexAttrib3fv(GLuint indx, const GLfloat* values); 
        void glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 
        void glVertexAttrib4fv(GLuint indx, const GLfloat* values); 
        void glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr);




     本文转自 老G 51CTO博客,原文链接:http://blog.51cto.com/goldlion/1670948,如需转载请自行联系原作者




    展开全文
  • Android中OpenGl ES兼容性问题

    千次阅读 2019-05-05 16:30:56
    在前面使用OpenGLEs的过程中由于使用的是OpenGlEs3.0的版本所以会带来不少因为版本兼容问题的坑(开始的时候没有发现,因为一直使用的是Android8.1.0的系统的手机。后来测试兼容性的时候发现了坑,我这里最低版本的...
  • 在使用OpenGL ES做开发的时候,发现不是所有机型对OpenGL的代码都兼容的那么好,同样的代码在某些机型上总是会出现问题,但是在其他手机上就是好的。下面是本人总结的OpengGL 兼容问题: 一、验证当前手机支持的...
  • OpenGL ES 3.0 简介

    2019-03-31 13:39:01
    简介 OpenGL ES (OpenGL for Emberdded Systems)是以 手持 和 嵌入式设备 为目标的高级3D图形应用编程接口(API)。...OpenGL ES 3.0 向后兼容 OpenGL ES 2.0。 OpenGL ES 3.0 是从 OpenGL 3.3规范 衍...
  • 初识OpenGL-ES

    2019-09-13 23:35:56
    OpenGL-ES目标 在OpenGL基础上, 删繁就简 兼容OpenGL 适应嵌入式设备的特点, 如耗电量, Shader性能 确保图像输出质量 确立为开发标准 继承关系 OpenGL ES 1.0(1.1) -OpenG...
  • nix-install-vendor-gl:确保系统兼容OpenGL驱动程序可用于“ nix-shell”封装的程序
  • OPENGL ES 2.0显卡兼容性测试

    千次阅读 2014-02-13 13:18:29
    近期要做一个Opengl es 2.0 显卡CAPS数据采集,测试兼容性的项目。 主要原理是做一个监测程序监测在调用OPENGL画图时调用了哪些函数,以及返回值参数列表都是什么。 在PC上有类似已经完工的软件,现在需要在手机上...
  • 原文如下:obj2opengl: convert obj 3D models to arrays compatible with iPhone OpenGL ES obj2opengl在GitHub中的主页:https://github.com/HBehrens/obj2opengl 终于找到一个iPhone OpenGL ES转换和...
  • Android OpenGL ES 2.0 与3.0兼容方案

    千次阅读 2018-06-14 18:06:06
    检查系统支持的OpenGL版本的方法有一下几种方法: 查看EGL版本, 1.4以上 EGL 查询Client版本号 GL_VERSION GL_SHADING_LANGUAGE_VERSION 1.1 EGL版本检查 此方法适用于创建EGLContext阶段。 要支持GLES3.0 ...
  • 为了启用映射层,解决设备上没有OpenCL和OpenGL硬件驱动时的兼容性问题,公司目前已经在微软商店中发布了兼容性包。该兼容性包的标题为 "OpenCL和OpenGL兼容性包",目前可以从微软商店(之前称为Windows商店)中下载。...
  • windows下搭建OpenGL ES开发环境

    千次阅读 2015-09-11 10:48:36
    硬件上需要兼容OpenGL 2.0的显卡, Windows XP or Windows Vista 。 1。 安装vc2005或更高版本,安装后会有opengl的库。 2。 安装shader分析工具 http://developer.amd.com/GPU/SHADER/Pages/default.aspx ...
  • vs2019 开始自己的第一个C++程序 vs2019配置OpenGL ...Visual Studio 2017(2019)配置OpenGL环境完美兼容 OpenGL+VS2017 环境配置(亲测好使)<附带必要知识点> VS2017+OpenGL环境的配置(完结篇) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 612
精华内容 244
关键字:

兼容opengl