草庐IT

opengl-compat

全部标签

iOS-Metal : How to clear Depth Buffer ? 类似于OpenGL中的glClear(GL_DEPTH_BUFFER_BIT)

我需要清除深度缓冲区,为此我在OpenGL中使用了glClear(GL_DEPTH_BUFFER_BIT),在Metal中该怎么做?我已经浏览了苹果的文档,没有任何提示。 最佳答案 简短的回答是,要清除深度缓冲区,您可以在开始渲染过程之前添加这两行:mRenderPassDescriptor.depthAttachment.loadAction=MTLLoadActionClear;mRenderPassDescriptor.depthAttachment.clearDepth=1.0f;并且您不能在不结束并重新启动渲染过程的情况下

ios - 从 iOS 中的离屏 OpenGL 像素缓冲区读取像素 (OopenGL-ES)

我想从屏幕外(不受CAEAGLLayer支持)帧缓冲区读取像素。我创建缓冲区的代码如下所示:glGenFramebuffersOES(1,&_storeFramebuffer);glGenRenderbuffersOES(1,&_storeRenderbuffer);glBindFramebufferOES(GL_FRAMEBUFFER_OES,_storeFramebuffer);glBindRenderbufferOES(GL_RENDERBUFFER_OES,_storeRenderbuffer);glFramebufferRenderbufferOES(GL_FRAMEBUFF

ios - iOS 上的实际风景 OpenGL View

我正在将基于C++的引擎从Android移植到iOS,我对iOS设备上的横向模式如何工作有一些疑问。我可以在横向模式下成功启动我的设备,但无论我如何旋转(或强制旋转)我的帧缓冲区都保持纵向模式。例如,我希望分辨率为960x640而不是默认的320x480。我一直在研究它,我看到有人这样做但明确使用OpenGL旋转场景,这意味着实际的轴不处于横向模式,这对我来说是一个丑陋的解决方法。 最佳答案 确保您的OpenGLUIView附加到UIViewController而不是直接插入到UIWindow中。为此,创建一个自定义ViewCont

ios - 为什么这个最少的代码无法使用 OpenGL ES 1.1 绘制带纹理的三角形?

我正在尝试将512*512纹理渲染到由两个三角形组成的256*256正方形上。目标是学习如何在OpenGLES1.1中使用尽可能少的代码绘制两个三角形的纹理矩形。EXC_BAD_ACCESS:问题已解决!+500赏金给Sam:-)在调用glDrawArrays时,我得到了一个EXC_BAD_ACCESS。该项目使用ARC,使用Xcode5.0.2创建,我尝试在iPhone5模拟器和iPhone5S上运行它,结果相同。Sam指出,与其使用glEnableClientState(GL_COLOR_ARRAY);启用颜色数组,不如使用glEnableClientState(GL_TEXTUR

ios - 在 Instruments 中进行分析时,OpenGL ES 应用程序似乎运行得更快

我不敢问这个问题,因为它不包含细节,也没有任何代码示例,但那是因为我在过去几年开发的三个完全不同的应用程序中遇到过它几周,我认为特定的代码可能只会掩盖问题。在网上搜索了一下,没有找到我遇到的现象的引用资料,所以我只是把它扔在那里,希望其他人也看到了同样的事情:'问题'是我构建的所有iOSOpenGL应用程序,对一个人来说,当我在Instruments中对它们进行分析时,它们运行得比它们独立运行时快得多。例如,帧速率大约快两倍(例如从30fps跳到60fps)。这既可以通过代码计时循环来衡量,也可以通过观察应用程序运行来衡量。仪器似乎在做一些神奇的事情。这是在设备上,而不是iOS模拟器上

iphone - 如何使用@compatibility_alias 为以前版本的 iOS 类别名

有人可以告诉我如何使用@compatibility_alias获取一个类,例如,UIActivityViewController,这是iOS6的新功能,并使用@compatibility_alias使其在iOS5和iOS4上工作。请具体说明在哪里放置代码,以及如何使用它。 最佳答案 只是方法名的别名,仅此而已。这是Objective-C编译器而非运行时的特性看看NSHipster我们看到:@compatibility_alias:允许现有类使用不同的名称作为别名。这允许人们编写他们自己的当前SDK中不可用的类的实现,并将名称“别名”

android - iOS 和 Android 的 OpenGL ES 区别

我有一个在iOS和Android上都可以运行的OpenGLES应用程序。大部分代码是很久以前由另一个人编写的,现在我必须维护它。OpenGL的使用似乎相当简单(该游戏是2D的,并且仅以简单的方式使用带纹理的Sprite)。但我看到iOS和Android的图形代码实现有两个主要差异:1)iOS代码包含这段代码:glGenFramebuffersOES(1,&m_defaultFramebuffer);glGenRenderbuffersOES(1,&m_colorRenderbuffer);glBindFramebufferOES(GL_FRAMEBUFFER_OES,m_default

ios - glCopyTexImage2D 作为 glReadPixels (OpenGL ES) 的替代品

我目前正在使用glReadPixels抓取OpenGLES游戏的屏幕截图。屏幕截图很棒,但是对glReadPixels的调用会导致游戏出现小卡顿。glCopyTexImage2D已被建议作为glReadPixels的更有效替代品。glCopyTexImage2D是如何工作的?对于某些上下文,我使用thisApplemethod.我对OpenGL比较陌生,所以非常感谢任何帮助:-) 最佳答案 时间延迟是由GPU和CPU之间传输大量内存造成的。这可以通过分block传输来解决,每帧一点点。但是,如果您从帧缓冲区读取一系列帧,则图像会同时

ios - iOS 中的 OpenGL ES 2.0 和默认 FrameBuffer

我对FrameBuffers有点困惑。目前,为了在屏幕上绘制,我使用此代码为GL_COLOR_ATTACHMENT0生成了一个带有Renderbuffer的帧缓冲区。-(void)initializeBuffers{//BuildthemainFrameBufferglGenFramebuffers(1,&frameBuffer);glBindFramebuffer(GL_FRAMEBUFFER,frameBuffer);//BuildthecolorBufferglGenRenderbuffers(1,&colorBuffer);glBindRenderbuffer(GL_RENDE

ios - 将统一颜色传递给片段着色器 (openGL ES 2.0)

这是一个奇怪的问题。如果我尝试将统一颜色传递给片段着色器,则会出现编译错误uniformvec4uniformColor;voidmain(){gl_FragColor=uniformColor;}但是如果我将相同的统一颜色传递给顶点着色器,然后通过varying将它传递给片段着色器,那么它工作正常..attributevec4position;uniformmat4matrix;uniformvec4uniformColor;varyingvec4fragmentColor;voidmain(){gl_Position=matrix*position;fragmentColor=un