Tag: opengl

如何在iOS中使用OpenGL ES 3.0和GLKit创建360视频播放器

360视频是同时记录每个方向的视图的视频记录。 在播放期间,观众可以像全景图(Wiki)一样控制观看方向。 现在,它越来越受欢迎,通常您会在Facebook的新闻源,Youtube的360个频道中看到360个视频,甚至在诸如NYTimes和Wallstreet Journal之类的新闻应用程序中也是如此。 在本教程中,您将学习如何使用OpenGL ES 3.0和GLKit从零开始制作360视频播放器。 由于该实现很大程度上依赖于OpenGL,并且OpenGL是跨平台的,因此该应用程序可以移植到其他平台,例如Android,Windows甚至是Web(WebGL)。 在此过程中,您将学到: 如何使用GLKit在iOS中以编程方式绘制几何 如何与OpenGL几何体交互 如何将视频帧用作OpenGL纹理 不禁开始? 让我们开始🙂 注意:此360视频播放器应用程序教程假定您了解OpenGL和GLKit开发的基础知识。 如果您不熟悉OpenGL或GLKit开发,请查看我们的iOS OpenGL教程:OpenGL ES 2.0,以GLKit和OpenGL视频教程开始OpenGL ES 2.0,首先是OpenGL ES和GLKit入门系列。 入门 下载入门项目, 然后在Xcode中打开Go360.xcodeproj 。 在Xcode控制台左侧的导航栏中,您将看到demo.m4v 360视频,最终将其显示在应用程序中。 另外还有4个其他文件夹: Main , Shader , Model和Extension 。 当时无需关心它们。 生成并运行应用程序; 您将看到一个彩色的球体旋转。 目前,您只听到360度视频的音乐。 不用担心 您最终将看到该视频。 如何绘制球体 您只能在OpenGL中绘制三角形。 通过连接Vertex ,您可以绘制三角形。 使用越来越多的三角形,您可以建立一个看起来光滑的球体。 在项目中,使用OpenGL ES 3.0编程指南中的示例代码esShapes.c。 该代码用于以编程方式生成球体的“ 顶点” ,“ 纹理坐标”和“ 索引” 。 […]

CVOpenGL TextureCaches是否与浮点格式不兼容?

在OSX10.4 / iOS5及以上版本中,您可以使用CVOpenGL[ES]TextureCaches优化纹理上传和下载。 用glTexImage2D上传纹理和用glReadPixels从帧缓冲中读取数据,你可以使用CVOpenGL[ES]TextureCache将你的纹理/ FBO操作转换成CoreVideo CVPixelBuffers的语言。 这与字节(可能是短的)大小的整数格式非常吻合,但除了一个奇特的YUV像素格式之外,浮点数在Core Video的像素格式中显然不足。 这是否意味着我不能使用GL_FLOAT纹理并使用CVOpenGL[ES]TextureCaches渲染目标?

两幅图像相乘的animation

我有两个图像: bg Image1和叠加Image2(高度大于bg image1) 现在,我需要将[Image2]放在[Image1]上,并使用混合模式乘法。 但之后,我需要animationImage2的Y位置,但保持混合模式,以获得这样的animation: https : //www.youtube.com/watch?v=D4Gqm9_Eo68 那我该怎么做到呢? 可能是我应该使用OpenGL? 如果是,那么究竟是如何?

当我在我的xcode项目中使用#include <OpenGL / gl.h>时,它在哪里查找gl.h文件?

我正在将一个开源的C ++程序移植到OS X上。 我一直在改变线路 #include <GL/gl.h> 对此 #include <OpenGL/gl.h> 基于这篇文章的build议: 如何在我从Linux移植的C ++项目中使用Open GL 这种改变摆脱了编译器错误,但我很困惑:xcode /它使用的C ++编译器在哪里去寻找该文件? 如果我search我的xcode项目,我没有看到名为OpenGL的目录或文件= gl.h? 我习惯于根据.html文件的工作目录在网页中包含图片或JavaScript库。 xcode在这里发生了其他事情。

使用核心graphics的优点

我想知道从使用Core Graphics而不是Open GL ES得到什么样的优势。 我的主要问题是基于这个: 创build简单的视图animation。 创build一些视觉吸引力的对象(像核心绘图的graphics,例如animation对象等)。 费时(包括学习和实施) 简单的2D游戏 复杂的2D游戏 3D游戏 代码维护广告也更干净的代码。 与其他UI元素更容易集成。 谢谢。

如何为着色器devise一个简单的GLSL包装器

更新:因为我马上需要一些东西,所以我创build了一个简单的着色器包装器,它可以处理我需要的东西。 你可以在这里find它: GitHub上的ShaderManager 。 请注意,它是为Objective-C / iOSdevise的,因此可能对每个人都没用。 如果您有任何关于devise改进的build议,请告诉我! 原始问题: 我是使用GLSL着色器的新手。 我对GLSL语言和OpenGL接口非常熟悉,但是在devise使用着色器的简单API时遇到了麻烦。 OpenGL的C接口与着色器交互看起来很麻烦。 我似乎无法在网上find任何涵盖这些APIdevise的教程。 我的问题是: 任何人都有一个好的,简单的APIdevise或模式来包装OpenGL着色器程序API? 以下面的简单例子。 假设我有一个模拟固定function的顶点着色器和两个片段着色器 – 一个用于绘制光滑的矩形,一个用于绘制光滑的圆。 我有以下文件: Shader.vsh : Simple vertex shader, with the following inputs/outputs: — Uniforms: mat4 Model, mat4 View, mat4 Projection — Attributes: vec4 Vertex, vec2 TexCoord, vec4 Color — Varying: vec4 vColor, vec2 vTexCoord Square.fsh : Fragment shader […]