草庐IT

ios - opengl es2 预乘与直接 alpha + 混合

iPhone上的Opengles2。一些对象由多层带有alpha的sprite组成。然后我还有UI元素,这些元素也是由各种sprite合成在一起的,我在其他所有元素之上淡入/淡出。我通过调整着色器中的alpha来实现淡化。我的纹理是PNG,带有alpha,是在photoshop中制作的。我不会故意预乘它们。我希望它们是直接的alpha,但在我的应用程序中,它们就像预乘一样,我可以看到在白色背景上绘制的白色Sprite周围有黑色边缘。如果我将我的混合模式设置为:glBlendFunc(GL_ONE,GL_ONE_MINUS_SRC_ALPHA);元素很好地组合在一起,没有奇怪的边缘。但是

ios - 使用 Metal/OpenGL ES 在 iOS 中渲染视频

如何使用Metal或OpenGLES渲染视频?我说的是我自己解码和显示帧。我是Metal和OpenGLES的新手,我不知道从哪里开始。 最佳答案 对于刚开始接触此问题的人来说,您的问题并非微不足道,因此您可能希望将其分解为更小的部分。也就是说,我已经这样做了,并且可以描述一般过程。首先,您将从一个AVAssetReader开始,并为音频和视频轨道设置AVAssetReaderOutputs。从中,您可以循环访问CMSampleBufferRefs。对于每个视频帧,您将提取一个CVImageBufferRef。将视频帧上传到OpenG

ios - OpenGL ES 2.0 (iOS) 中的二维绘图

我正在学习如何在iOS上使用OpenGLES2.0。现在我只想做一些基本的2D动画(例如,在屏幕上移动一个矩形并改变它的大小)。我已经开始使用Apple在Xcode中提供的OpenGLES项目模板。我的绘图代码如下所示:staticGLfloatsquareVertices[]={-0.5f,-0.33f,0.5f,-0.33f,-0.5f,0.33f,0.5f,0.33f};//Updateattributevalues.glVertexAttribPointer(VERTEX_ATTR,2,GL_FLOAT,0,0,squareVertices);glEnableVertexAtt

ios - 为 OpenGL ES/Cocos2d 优化纹理的方法

我得到了大约30个PNG32位格式的纹理。所有纹理的大小都相同(比iPad屏幕宽)。大小不是正方形,宽度和高度都不是2的幂。相同的纹理旨在用于游戏的iPhone版本。在游戏中,假定这些纹理用于动画(每个纹理都是动画的一帧)。当然,30个纹理每个使用4MB的动画速度不是很快,内存消耗也远未达到可接受的水平。因此,作为OpenGLES和Cocos2d的新手,我正在寻找食谱如何优化这些特定纹理和一般纹理。关于我应该处理的纹理的附加信息:所有纹理都具有相同的渐变背景(海面)和不同的区域(波浪)。每个波浪都有些独特,波浪几乎占据了所有纹理。纹理从Flash导出(它们最初是矢量图像)。

iphone - OpenGL ES View : how to orient it to landscape?

在寻找有关横向定位OpenGLES应用程序的线索时,我发现的大多数信息都可以追溯到2008年,其中大部分都涉及SDK的早期版本。显然,过去,在GL的情况下,建议不要旋转View,而是将旋转应用为GL转换。现在的SDK还是这样吗?简单地旋转窗口会简单得多:所有触摸事件都将与旋转同步。换句话说:如何在横向模式下设置OpenGLView? 最佳答案 (我会用我找到的解决方案来回答我自己的问题。不过我很乐意考虑其他答案。)在CAEAGLLayer文档中,Apple指出(有点笨拙)您应该在GL本身内进行旋转:“在纵向显示器上绘制横向内容时,您

ios - OpenGL ES 2 (iOS) 两组顶点之间的变形/动画

我有两组顶点用作线条:顶点1顶点2重要的是要知道这些顶点具有以前未知的值,因为它们是动态的。我想在这两者之间制作动画过渡(变形)。我想出了两种不同的方法来做到这一点:选项1:在顶点着色器中设置时间统一,从0-1,在这里我可以做这样的事情://Insidemain()inthevertexshaderfloatoriginX=Position.x;floatdestinationX=DestinationVertexPosition.x;floatinterpolatedX=originX+(destinationX-originX)*Time;gl_Position.x=interpo

ios - 优化 openGL ES 2.0 2D 纹理输出和帧率

我希望有人能帮助我在我在OpenGLES2.0和iPhone4上做的一些纹理基准测试中取得一些进展。我有一个包含Sprite对象的数组。渲染循环循环遍历每个纹理的所有Sprite,并检索它们的所有纹理坐标和顶点坐标。它使用退化的顶点和索引将它们添加到一个巨大的交错数组中,并将它们发送到GPU(我嵌入的代码在底部)。这一切都是按纹理完成的,所以我绑定(bind)一次纹理,然后创建我的交错数组,然后绘制它。一切都很好,屏幕上的结果也正是它们应有的样子。所以我的基准测试是通过在不同的不透明度下每次触摸添加25个新Sprite并在更新时更改它们的顶点,以便它们在旋转时在屏幕上弹跳并在应用程序上

ios - 在片段着色器中优化 GLSL 代码 (iOS 5 + OpenGL ES 2.0)

我的片段着色器函数中有一些计算(如下),它被调用了很多次。我想知道是否可以优化此代码。我看了一下OpenGL.orgglsloptimisationpage,并做了一些修改,但有可能使这段代码更快?uniformintmn;highpfloatNx;highpfloatNy;highpfloatNz;highpfloatinvXTMax;highpfloatinvYTMax;intm;intn;highpvec4func(inhighpvec3texCoords3D){//tileindexintTi=int(texCoords3D.z*Nz);//(r,c)positionoftil

ios - iOS OpenGL ES 2 中的黑屏/无事件

我处理一个错误大约45天。我已经尝试了数十次方法调用,更改了整个程序,但没有任何效果。我使用GLES2,UIViewController是rootViewController,它有一个UIView类型的View,其图层类是CAEAGLLayer。当我运行该应用程序时,屏幕变黑,如果我按下屏幕,则不会生成任何事件。如果我旋转应用程序,屏幕出现并且事件起作用。更糟糕的是,如果我不旋转应用程序,而是在presentRenderbuffer之后放置一个断点,然后按下Xcode中的“CaptureOpenGLESFrame”按钮,屏幕出现并且事件开始工作!!!我觉得实际上并没有显示View,但是

ios - 是否可以将 Metal API 与 OpenGL ES 3.0 同时用于图形计算?

我想移植一些使用Metal作为计算API(因为iOS仍然不支持ES3.1计算着色器)和OpenGLES作为图形API的OpenCL示例,因为示例使用OCL/OGL互操作似乎是最简单的移植方式。问题是应用程序可以同时使用Metal和OpenGLESAPI,以及是否以及如何实现互操作,即OpenGL映射由Metal计算的数据缓冲对象。谢谢.. 最佳答案 是的,您可以同时使用openGL和MetalAPI,但请记住,两层之间的任何相互通信都会导致主机/GPU内存流量的开销:您必须在Metal/OpenGL表示之间复制纹理和缓冲区。我认为利