Tag: opengl es

使用四元数的Arcball旋转(使用iOS GLKit)

我正在寻找一个四元数三维模型arcball旋转的简单实现, 特别是在iOS上使用GLKit 。 到目前为止,我已经检查了以下来源: 使用GLKit进行Arcball旋转 如何使用OpenGL触摸旋转3D对象 我也一直在尝试从这里和这里了解源代码和math。 我可以旋转我的物体,但是它一直在某个angular度跳跃,所以我担心万向节锁正在发挥作用。 我正在使用手势识别器来控制旋转(平移手势会影响滚动和偏航,旋转手势会影响音高)。 我附上我的四元数处理以及模型视图matrix转换的代码。 variables: GLKQuaternion rotationE; 四元数处理: – (void)rotateWithXY:(float)x and:(float)y { const float rate = M_PI/360.0f; GLKVector3 up = GLKVector3Make(0.0f, 1.0f, 0.0f); GLKVector3 right = GLKVector3Make(1.0f, 0.0f, 0.0f); up = GLKQuaternionRotateVector3(GLKQuaternionInvert(self.rotationE), up); self.rotationE = GLKQuaternionMultiply(self.rotationE, GLKQuaternionMakeWithAngleAndVector3Axis(x*rate, up)); right = GLKQuaternionRotateVector3(GLKQuaternionInvert(self.rotationE), right); self.rotationE = GLKQuaternionMultiply(self.rotationE, GLKQuaternionMakeWithAngleAndVector3Axis(y*rate, right)); } – […]

OpenGL ES 2.0片段着色器模糊速度慢,质量差

我正在尝试为iPad写一个模糊着色器。 我有它的工作,但我不是很高兴的结果。 我得到非常不连贯的帧率,模糊量高时,模糊看起来像废话。 任何想法如何改善事情? 一些示例输出: uniform sampler2D texture; varying mediump vec2 fragTexCoord; varying mediump vec3 eyespaceNormal; varying highp float blurAmount; void main(void) { highp vec2 gaussFilter[7]; gaussFilter[0] = vec2(-3.0, 0.015625); gaussFilter[1] = vec2(-2.0, 0.09375); gaussFilter[2] = vec2(-1.0, 0.234375); gaussFilter[3] = vec2(0.0, 0.3125); gaussFilter[4] = vec2(1.0, 0.234375); gaussFilter[5] = vec2(2.0, 0.09375); gaussFilter[6] = vec2(3.0, 0.015625); highp […]

在iOS 4.3中将YpCbCr iPhone 4相框渲染为OpenGL ES 2.0纹理

我正在尝试在iPhone 4上的iOS 4.3中将本机平面图像渲染为OpenGL ES 2.0纹理。然而,纹理全部变黑。 我的相机configuration如下: [videoOutput setVideoSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange] forKey:(id)kCVPixelBufferPixelFormatTypeKey]]; 我像这样将像素数据传递给我的纹理: glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, bufferWidth, bufferHeight, 0, GL_RGB_422_APPLE, GL_UNSIGNED_SHORT_8_8_REV_APPLE, CVPixelBufferGetBaseAddress(cameraFrame)); 我的战斗着色器是: varying highp vec2 textureCoordinate; uniform sampler2D videoFrame; void main() { lowp vec4 color; color = texture2D(videoFrame, textureCoordinate); lowp vec3 convertedColor = vec3(-0.87075, 0.52975, -1.08175); convertedColor += 1.164 * color.g; // Y convertedColor += […]

金属屏幕撕裂和相机捕获

为了避免同时从gpu和cpu写入一个常量缓冲区,Applebuild议在信号量的帮助下使用一个三重缓冲系统,以防止cpu在gpu之前过多(这是很好的,并且覆盖在现阶段至less有三个金属video)。 但是,当常量资源是MTLTexture并且AVCaptureVideoDataOutput委托单独运行而不是渲染循环(CADisplaylink)时,类似的三重缓冲系统(如Apple的示例代码MetalVideoCapture中所用的)如何保证同步? 如果使用MetalVideoCapture代码,只需渲染全屏四边形并将预设更改为AVCaptureSessionPresetHigh(在撕裂被旋转四边形和低质量预设遮挡的时刻),则可以观察到撕裂(纹理撕裂)。 我意识到渲染循环和captureOutput委托方法(在这种情况下)都在主线程上,并且信号量(在渲染循环中)保持_constantDataBufferIndex整数被检查(哪些索引进入MTLTexture进行创build和编码),但仍然可以观察到屏幕撕裂,这是令人费解的(如果纹理的GPU写入不是编码后的下一帧,而是2或3帧之后,这是有意义的,但我不认为这是事实)。 此外,只是一个小点:渲染循环和captureOutput不应该有一个缓冲的纹理系统相同的帧率,所以旧的帧不交替与最近的交错。 任何想法或澄清这个问题将不胜感激; McZonk还有另外一个例子,它没有使用三重缓冲系统,但是我也观察到这种方法(但不那么重要)。 显然,如果我使用waitUntilCompleted(相当于Open GL的glfinish),那么就不会有撕裂的痕迹,但是就像在背后系着一只arm来演奏手风琴一样!

适用于iOS的ffmpeg的替代方法

我一直在尝试在我的iOS应用程序中实施ffmpeg几个星期。 现在我可以播放几个AVI文件,但其他文件,如FLV,WMA,MP4播放缓慢。 我花了很多时间与ffmpeg和opengl,我没有find解决办法。 我正在寻找其他的select来播放这个文件在iOS设备上。 有人知道其他库,框架,…我可以用来播放这个文件。 不pipe有没有营业执照 很感谢, 编辑: 初始着色器: shader = [[GLShader alloc] initWithFileName:@"render" attributes:[NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:0], @"position", [NSNumber numberWithInt:1], @"texCoords", nil] uniforms:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:0], @"sampler0", [NSNumber numberWithInt:0], @"viewProjectionMatrix",nil]]; render.fsv: uniform sampler2D sampler0; varying highp vec2 _texcoord; void main() { gl_FragColor = texture2D(sampler0, _texcoord);} render.vsf: attribute vec4 position; attribute vec2 texCoords; varying vec4 colorVarying; […]

在iOS上加载obj文件的最佳方式

由于OpenGL没有像GLLoadObjFile('myModel.obj')这样的函数,因此在iOS应用程序中加载像.obj这样的3D模型文件的最佳教程是什么? 我已经尝试了波前加载器,但似乎并没有工作。

如何为iPad创build1536x2048 framebuffer视网膜样本(GLGravity)

所以当然,我在我的新iPad(4g)上尝试的第一件事是旧的GLGravity示例。 我所做的唯一修改是将目标设备设置为“iPad”。 但是,在设备上运行时,UIView的边界被设置为768,1024,就像createFramebuffer中的“backingWidth,backingHeight”一样。 目光确认图像仍然在768×1024处呈现。 我错过了什么 – 我如何得到这个以原始分辨率呈现?

iOS 11 beta 4 presentRenderbuffer崩溃

当调用[EAGLContext presentRenderbuffer:]方法时,我的应用程序在iOS 11 beta 4(15A5327g)上崩溃。 只有当我在Xcode中debugging时才会发生。 当我手动启动应用程序时,它不会崩溃。 在低于iOS 11 beta 4的版本中,它也不会崩溃。 我怎样才能防止这个问题? 你可以在截图中看到崩溃细节

从CMRotationMatrix获取俯仰,偏航,滚动

我有一个CMRotationMatrix *腐,我想从matrix中得到音调,偏航,滚动。 任何想法我怎么能做到这一点? 谢谢

iPhone / iOS自定义控件

我想知道如何从头创build一个自定义的iPhone控件,或使用现有的库或框架。 我已经看到了three20图书馆,以及tapku和触摸习惯,这是专业的iOS控制,如表视图等不错,但我在这里谈论完全自定义,交互式控制。 比方说,我想做一个类似于这个应用程序的拨号控制: http : //store.apple.com/us/product/H2654LL/A 。 我从哪里开始? 我会inheritanceUIView并定制它吗? 我会用石英2d吗? 我会用OpenGL ES来画这样的东西到屏幕上吗? 我仍然可以使用IB来devise/布置我的自定义视图吗? 我只是有点困惑到哪里去这里。 是的 – 这个问题已经被问及过几次了,但是我还没有find满意的答案来解决上述问题。