Tag: opengl es 2.0

OpenGL ES 2.0顶点转换algorithm

我正在使用OpenGL ES 2.0开发图像扭曲的iOS应用程序。 我对设置,pipe道等有很好的把握,现在正在进行math运算。 由于我的图像变形经验是零,我正在接触一些algorithm的build议。 目前,我在网格types的方式设置点的初始顶点,它将图像平分为正方形。 然后,我在每个方块的中间放置一个额外的顶点。 当我绘制索引时,每个正方形都包含四个X形的三angular形。请参见下图: 在用photoshop稍微玩一下之后,我注意到Adobe为他们的木偶使用了一个稍微复杂的algorithm,但是对于他们的标准warp,使用了一个更简单的algorithm。 你认为最适合我在这里/个人的喜好是什么? 其次,当我移动一个顶点时,我想对所有其他顶点应用加权变换来平滑边缘(而不是我下面只有选定顶点被变换的位置)。 我应该在这里应用什么样的algorithm?

如何在iPhone上的OpenGL ES 2.0中混合两种纹理与不同的坐标?

当两个纹理覆盖相同的矩形时,我可以在片段着色器中混合两种具有不同混合模式的纹理。 但现在我的问题是,一个纹理是一个没有旋转的普通矩形,另一个纹理是另一个旋转/缩放和平移的矩形。 如何以我想要的方式合并这些纹理? (图片中) 我知道如何做到这一点… 但不知道如何做到这一点… 为了在一个矩形(第一个图像)中混合纹理,我使用了下面的代码。 Objective C代码… – (void) display { [EAGLContext setCurrentContext:context]; glBindFramebuffer(GL_FRAMEBUFFER, targetFBO); glUseProgram(program); glActiveTexture(GL_TEXTURE2); glBindTexture(GL_TEXTURE_2D, textureTop); glActiveTexture(GL_TEXTURE3); glBindTexture(GL_TEXTURE_2D, textureBot); glUniform1i(inputTextureTop, 2); glUniform1i(inputTextureBot, 3); glUniform1f(alphaTop, alpha); glEnable (GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glVertexAttribPointer(position, 2, GL_FLOAT, 0, 0, imageVertices); glVertexAttribPointer(inputTextureCoordinate, 2, GL_FLOAT, 0, 0, textureCoordinates); glClearColor(0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); glBindRenderbuffer(GL_RENDERBUFFER, […]

在OpenGL ES 2.0中进行抗锯齿?

有没有办法在OpenGL ES 2.0中实现Anitaliasing技术? 我已经看到了,发现了很less的方法,但是输出没有变化。 在最坏的情况下,我已经计划实现多遍渲染,通过显示每个像素周围的像素的平均颜色来平滑片段着色器中的边缘,但是它会花费更多的GPU性能。 有什么build议么 ?

iOS和多个OpenGL视图

我目前正在开发一个iPad应用程序,使用OpenGL在多个OpenGL视图中绘制一些非常简单的 (不超过1000或2000个顶点)旋转模型。 网格中有6个视图,每个视图运行自己的显示链接来更新graphics。 由于模型的简单性,它是迄今为止最简单的方法,我没有时间编写完整的OpenGL接口。 目前,它在性能方面做得很好,但也有一些恼人的故障。 前3个OpenGL视图显示没有问题,最后3个只显示几个三angular形 (同时仍然保留旋转模型的能力)。 还有一些情况下,glDrawArrays调用直接进入EXC_BAD_ACCESS (特别是在模拟器上),这告诉我缓冲区有问题。 我检查(以及双重和三重检查)是: 缓冲区分配似乎还行 所有资源都释放dealloc 仪器显示一些警告,但似乎没有任何关系 我想这可能与我同时画多个视图有关,那么在那里我应该做什么已知的事情? 每个视图都有自己的上下文,但也许我做错了那个… 另外,我刚刚注意到,在模拟器中,受影响的视图在右图与所有顶点之间闪烁,而错误的绘图仅在less量之间闪烁。 无论如何,如果您有任何想法,谢谢分享!

OpenGL ES 2.0渲染纹理

我试图渲染到使用OpenGL ES 2.0纹理,但我似乎无法使其工作。 这是我如何进行: struct RenderTexture { GLuint framebuffer; GLuint tex; GLint old_fbo; RenderTexture(GLuint width, GLuint height) { glGetIntegerv(GL_FRAMEBUFFER_BINDING, &old_fbo); glGenFramebuffers(1, &framebuffer); glGenTextures(1, &tex); glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); glBindTexture(GL_TEXTURE_2D, tex); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex, 0); glClearColor(1, 0, 0, 1); glClear(GL_COLOR_BUFFER_BIT); GLuint status = glCheckFramebufferStatus(GL_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) […]

OpenGL ES 2.0到iPad / iPhone上的video

尽pipeStackOverflow中有很好的信息,但我仍然在这里结束 我正在尝试在iPad 2上使用iOS 4.3编写一个OpenGL渲染缓冲区到video。 这正是我正在尝试的: A)设置一个AVAssetWriterInputPixelBufferAdaptor 创build一个指向video文件的AVAssetWriter 设置适当的设置AVAssetWriterInput 设置AVAssetWriterInputPixelBufferAdaptor将数据添加到video文件 B)使用AVAssetWriterInputPixelBufferAdaptor将数据写入video文件 将OpenGL代码渲染到屏幕上 通过glReadPixels获取OpenGL缓冲区 从OpenGL数据创build一个CVPixelBufferRef 使用appendPixelBuffer方法将PixelBuffer附加到AVAssetWriterInputPixelBufferAdaptor 但是,我有这个问题。 我现在的策略是当按下button时设置AVAssetWriterInputPixelBufferAdaptor。 一旦AVAssetWriterInputPixelBufferAdaptor有效,我设置一个标志来指示EAGLView创build一个像素缓冲区,并通过appendPixelBuffer将它附加到video文件中给定数量的帧。 现在我的代码崩溃,因为它试图追加第二个像素缓冲区,给我以下错误: -[__NSCFDictionary appendPixelBuffer:withPresentationTime:]: unrecognized selector sent to instance 0x131db0 这里是我的AVAsset设置代码(很多是基于Rudy Aramayo的代码,它在正常的图像上工作,但没有设置纹理): – (void) testVideoWriter { //initialize global info MOVIE_NAME = @"Documents/Movie.mov"; CGSize size = CGSizeMake(480, 320); frameLength = CMTimeMake(1, 5); currentTime = kCMTimeZero; currentFrame = 0; NSString *MOVIE_PATH […]

从AVCaptureSessionDataOutput与AVCaptureSessionPresetPhoto iOS iOS CVImageBuffer扭曲

在很高的层面上,我创build了一个应用程序,让用户指向他或她的iPhone摄像头,并看到视觉效果处理过的video帧。 此外,用户可以点击一个button,将当前预览的冻结帧作为保存在其iPhone库中的高分辨率照片。 要做到这一点,应用程序遵循这个过程: 1)创build一个AVCaptureSession captureSession = [[AVCaptureSession alloc] init]; [captureSession setSessionPreset:AVCaptureSessionPreset640x480]; 2)使用背面照相机连接AVCaptureDeviceInput。 videoInput = [[[AVCaptureDeviceInput alloc] initWithDevice:backFacingCamera error:&error] autorelease]; [captureSession addInput:videoInput]; 3)将AVCaptureStillImageOutput连接到会话,以便能够以照片分辨率捕捉静帧。 stillOutput = [[AVCaptureStillImageOutput alloc] init]; [stillOutput setOutputSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; [captureSession addOutput:stillOutput]; 4)将AVCaptureVideoDataOutput连接到会话,以便能够以较低的分辨率捕获单独的video帧(CVImageBuffers) videoOutput = [[AVCaptureVideoDataOutput alloc] init]; [videoOutput setVideoSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; [videoOutput setSampleBufferDelegate:self queue:dispatch_get_main_queue()]; [captureSession addOutput:videoOutput]; 5)当video帧被捕获时,委托的方法被称为每个新的帧作为CVImageBuffer: – (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer […]

iOS上的OpenGL ES 2.0对象拾取

什么是select在OpenGL ES 2.0(iOS)中绘制的对象的最佳方法? 我正在绘制点。

在iOS上学习OpenGLES 2.0

我是OpenGL ES 2.0的初学者,我正在寻找一本能帮助我学习的好书/资源。 我find了几本书: OpenGL®ES 2.0编程指南 iPhone 3D编程:使用OpenGL ES开发graphics应用程序 但阅读亚马逊的评论,我看到他们要么承担以前的知识与OpenGL或不是专门为iOS编写的。 (我知道OpenGL应该很容易移植,但是我正在寻找一个C语言书籍/资源,而不是C ++,在iOS环境下讨论OpenGL) 我也发现了这个 ,它帮助我掌握了基本概念,但不幸的是,它们涵盖了OpenGL ES 1.1,只是描述了基础知识。 任何帮助,将不胜感激!