草庐IT

ios - OpenGL ES 着色器和 64 位 iPhone 5S

我刚刚开始使用iPhone5S和64位架构在OpenGLES应用程序上进行测试。我看到的问题是(CGFloat)值在到达着色器时是错误的。我传入0.8并在调试着色器时更改为-1.58819e-23。我正在使用glUniform4fv()来传递值。我需要使用不同的数据类型还是?或传递值的不同方法?当我在32位上测试时,该值通过正常CGFloatbrushColor[4];brushColor[0]=0.8;brushColor[1]=0.1;brushColor[2]=0.1;brushColor[3]=0.3;glUniform4fv(program[PROGRAM_POINT].un

android - 轻量级跨平台C GUI(OpenGL)

我正在为不同的信号处理应用程序寻找一个轻量级的跨平台GUI库。一个ansi-c程序必须与之静态链接,并且大小很重要。一个完成的应用程序必须在任何平台上都具有相同的外观,如ipad、iphone、android、ubuntu、leopard、windows等。Qt是不合适的,因为它是C++,太大,在iOS设备上不工作。我倾向于使用基于OpenGL的图形用户界面库,因为OpenGL受每一个现代目标平台的支持,而且OpenGL应用程序在每一个设备上都有相同的外观和感觉。最好,这样的gui必须支持使用声明性语义的表单定义,例如来自c字符串或来自外部文本文件的表单定义。

iphone - OpenGL ES 2d 渲染成图像

我需要在iOS上编写OpenGLES二维渲染器。它应该将一些图元(例如线和多边形)绘制成二维图像(它将渲染矢量图)。在该任务中,哪种方式最适合从OpenGL上下文获取图像?我的意思是,我应该将这些图元渲染成纹理,然后从中获取图像,还是什么?此外,如果有人提供看起来像我需要的东西(2dGL渲染成图像)的示例或教程,那将会很棒。提前致谢! 最佳答案 如果您需要渲染OpenGLES二维场景,然后提取该场景的图像以在OpenGLES外部使用,您有两个主要选择。第一种是简单地渲染场景并使用glReadPixels()获取场景的RGBA数据并将

Opengl ES之YUV数据渲染

YUV回顾记得在音视频基础知识介绍中,笔者专门介绍过YUV的相关知识,可以参考:《音视频基础知识-YUV图像》YUV数据量相比RGB较小,因此YUV适用于传输,但是YUV图不能直接用于显示,需要转换为RGB格式才能显示,因而YUV数据渲染实际上就是使用OpenglES将YUV数据转换程RGB数据,然后显示出来的过程。也就是说OpenglES之所以能渲染YUV数据其实就是使用了Opengl强大的并行计算能力,快速地将YUV数据转换程了RGB数据。本文首发于微信公总号号:思想觉悟更多关于音视频、FFmpeg、Opengl、C++的原创文章请关注微信公众号:思想觉悟YUV的格式比较多,我们今天就以Y

ios - 如何使用 OpenGL ES 共享组在 iPad 上共享渲染缓冲区以进行屏幕镜像?

我正在尝试使用OpenGL1.1在iPad上进行屏幕镜像。我已经到了设置外部窗口和View的地步。我在第一个屏幕上使用OpenGL,并且我读到我可以设置共享渲染缓冲区,但是由于我有点像OpenGL初学者,所以我在启动和运行可以共享渲染的东西时遇到了一些麻烦缓冲区。我已经设置了两个独立的上下文并为两者呈现不同的东西,但为了效率,我当然想共享渲染缓冲区。Apple文档解释了如何设置共享组对象并初始化共享上下文,但我还想知道如何设置和共享渲染缓冲区,以便外部屏幕可以将此渲染缓冲区绘制到它是帧缓冲区。最终目标是尽可能高效地进行屏幕镜像,因此非常感谢任何有关此事的建议。

iphone - iOS 中 opengl 顶点数据的对齐有多重要

OpenGLES编程指南讨论了您应该避免未对齐的顶点数据,并给出了将数据对齐到4字节block的示例。OpenGLESProgrammingGuide然而,在我在网上找到的大多数演示Material和教程中,我没有看到任何人这样做。以下示例来自71Squared上的演示项目:staticconstSSTexturedVertexData3DEnemyFighterVertexData[]={{/*v:*/{1.987003,-0.692074,-1.720503},/*n:*/{0.946379,-0.165685,-0.277261},/*t:*/{0.972816,0.024320

ios - 为什么 Apple 建议在串行后台队列中分派(dispatch) OpenGL 命令,因为这不可避免地会导致崩溃?

他们suggest:WhenusingGCD,useadedicatedserialqueuetodispatchcommandstoOpenGLES;thiscanbeusedtoreplacetheconventionalmutexpattern.我不明白这个建议。存在我无法解决的冲突:当应用的应用委托(delegate)接收到-applicationWillResignActive调用时,它必须立即停止调用任何OpenGL函数。如果应用在-applicationWillResignActive返回后继续调用OpenGL函数,应用将崩溃。如果我按照Apple的建议在串行后台队列中调

iphone - OpenGL-ES 2.0 VS OpenGL-ES 1.1,哪个更快?

我已经使用OpenGL-ES1.1编写了一个应用程序,但我想知道是否可以通过切换到2.0来提高速度。有没有人用大多边形计数模型做过任何测试?我只想渲染具有不同颜色的三角形,没什么特别的。但是,我想为我的比较测试渲染大约100万个三角形。 最佳答案 OpenGLES1.1和2.0提供了两种截然不同的3-D图形处理方式,因此我不知道直接进行性能比较是否有意义。如果您创建仅模拟OpenGLES1.1的固定功能管线的2.0着色器,则您可能会看到使用两者的相同性能。这是由Apple'sdocumentationonthePowerVRSGX支

ios - 关于 CIContext、OpenGL 和 Metal (SWIFT) 的困惑。 CIContext 默认使用 CPU 还是 GPU?

所以我正在制作一个应用程序,其中一些主要功能围绕着将CIFilters应用于图像。letcontext=CIContext()letcontext=CIContext(eaglContext:EAGLContext(api:.openGLES3)!)letcontext=CIContext(mtlDevice:MTLCreateSystemDefaultDevice()!)所有这些都让我在我的CameraViewController上使用了大约相同的CPU使用率(70%),我在其中将滤镜应用于帧并更新ImageView。所有这些似乎都以完全相同的方式工作,这让我觉得我错过了一些重要的信

ios - 将 Swift 数组以外的其他内容用于传递给 OpenGL 缓冲区的可变固定大小线程安全数据

我正在尝试从我正在处理的应用程序中榨取每一点效率。我有几个满足以下条件的数组:它们永远不会附加到,我总是自己计算索引分配一次并且从不改变大小如果它们是线程安全的就好了,只要不影响性能有些保存基本类型,如float或无符号整数。其中一个确实开设了一个类(class)。这些数组中的大部分在某个时候被传递到glBuffer从不清除只是覆盖一些数组的单个元素完全由=更改,其他的由+=更改我目前正在使用swiftnative数组,并像vararr=[GLfloat](count:999,repeatedValue:0)一样分配它们,但是我已经阅读了很多文档,听起来像Swift数组比传统的C风格数