Tag: opengl es 2.0

在iOS中使用OpenGL ES 2.0时,如何在两点之间绘制柱面?

我给了两个GLKVector3代表圆柱体的起点和终点。 使用这些点和半径,我需要build立和渲染一个圆柱体。 我可以build立一个点之间的正确距离,但在一个固定的方向(目前总是在y(0,1,0)向上的方向)一个圆柱体。 我不知道需要做什么样的计算才能将圆柱体置于两点之间的正确平面上,从而使得一条直线穿过两个端点。 我想有一种计算方法可以应用,因为我使用方向vector或angular度创build顶点数据,这将创build指向正确方向的柱面。 有没有人有algorithm,或知道一个,这将有助于?

iOS应用程序的快速录制

我是OpenGL ES的新手。 我正在尝试编写iOS应用程序的屏幕录制代码,尤其是游戏。 我在这个答案中使用了代码中描述的“渲染到纹理”方法来捕获屏幕并为cocos2d游戏编写video。 我做的一个修改是,当我调用CVOpenGLESTextureCacheCreate然后我使用[EAGLContext currentContext]而不是 [[GPUImageOpenGLESContext sharedImageProcessingOpenGLESContext] context] 它logging的video,但有两个问题 (1) – 开始录制时,屏幕上的新graphics停止。 我希望应用程序继续在屏幕上绘图。 由于我是OpenGL ES的新手,对帧缓冲对象没有深入的了解,所以我很难弄清楚如何同时在屏幕上绘图并捕捉屏幕。 我会欣赏这方面的代码示例。 (2) – 录制的video翻转倒置。 我怎样才能正确的方向? 以前我也考虑过glReadPixels方法,但是这有性能上的缺点。 更新:也想到了一些想法。 根据我的一点理解, 我可以简单地画我的纹理,但不知道如何。 要么 我可以有一个第二FBO,我可以附加纹理,即 glGenFramebuffersOES(1, &textureFrameBuffer); glBindFramebufferOES(GL_FRAMEBUFFER_OES, textureFrameBuffer); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, CVOpenGLESTextureGetName(renderTexture), 0); //Then I restore the screen FBO. glBindFramebufferOES(GL_FRAMEBUFFER_OES, 1); 但是,如果我这样做,那么我如何将屏幕绘图复制到我的第二FBO?

将vector<float>转换为GLfloat

我目前在iOS的OpenGL的工作,我想听听是否有任何方式将vector转换为GLfloat? 由于glBufferData: void glBufferData(GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage); 该向量是stl_bvector.h的一部分

绘图的一部分的开放的gl纹理

我正在试图只绘制我的精灵表的一部分。 但它只是缩放图像,没有绘制图像宽度的1/3。 我怎样才能裁剪图像,所以只有1/3显示。 文本在下面(ios 7,opengl es 2) – (GLKMatrix4)modelMatrix { GLKMatrix4 modelMatrix = GLKMatrix4Identity; modelMatrix = GLKMatrix4Translate(modelMatrix, x, y, 0); return modelMatrix; } – (void)setSprite:(NSString *)fileName effect:(GLKBaseEffect *)newEffect { // 1 self.effect = newEffect; // 2 NSDictionary * options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], GLKTextureLoaderOriginBottomLeft, nil]; // 3 NSError * error; NSString *path = [[NSBundle […]

从iOS上的两个jpeg加载RGBA图像 – OpenGL ES 2.0

基于我在这里的问题的概念和我在这里另一个问题中概述的PNG文件的问题,我将尝试从两个JPEG加载RGBA图像。 一个将包含RGB和另一个只包含阿尔法。 我可以将第二个保存为灰度jpeg或RGB,并从红色组件中提取alpha数据。 在第二步中,我会将原始图像数据保存到caching中的文件中。 然后,我会做一个testing,以确定加载原始数据或解压JPEG文件并构build原始数据的速度更快。 如果我确定速度更快,那么在后续的加载中,我可以检查caching中是否存在原始文件。 如果没有,我会跳过该文件保存。 我知道如何将两个jpeg加载到两个UIImage中。 我不确定的是从一个UIImage交叉rgb的最快或最有效的方式与其他UIImage我使用的alpha的任何通道。 我看到两种可能性。 一个会在下面的注释B中。遍历所有像素,并将红色从“alpha jpeg”复制到imageData蒸汽的alpha。 另一个是,也许有一些神奇的UIImage命令将频道从一个频道复制到另一个频道。 如果我这样做,这将是附近的评论A的地方。 有任何想法吗? 编辑 – 此外,该进程不能破坏任何RGB信息。 我需要这个过程的全部原因是,来自photoshop的PNG预先将alpha与rgb相乘,从而破坏了rgb的信息。 我在自定义的OpenGL着色器中使用alpha而不是alpha。 所以我正在寻找原始的RGBA数据,我可以设置阿尔法任何东西作为高光地图或照明地图或高度地图或除alpha之外的东西。 这是我的初学者代码减去我的错误检查和其他专有废话。 我有一个纹理数组,用于pipe理有关纹理的所有内容: if (textureInfo[texIndex].generated==NO) { glGenTextures(1, &textureInfo[texIndex].texture); textureInfo[texIndex].generated=YES; } glBindTexture(GL_TEXTURE_2D, textureInfo[texIndex].texture); // glTexParameteri commands are here based on options for this texture NSString *path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@_RGB",name] ofType:type]; NSData *texData = [[NSData […]

OpenGL ES 2.0绘制Fullscreen Quad非常慢

当我将内容渲染到具有绑定纹理的FBO上,然后使用基本着色器将该绑定纹理渲染为全屏四边形时,性能会下降得可笑。 例如: 直接渲染(使用基本着色器): 当渲染纹理第一,然后渲染纹理与全屏四:(具有相同的基本着色器,将通常像模糊或开花): 任何人有一个想法如何加快这一点? 由于目前的performance是不可用的。 另外,我正在使用GLKit的基本OpenGL的东西。

iPad Opengl ES程序在模拟器上工作正常,但不是设备

对于该设备,除了一个之外,我的所有着色器都可以正常加载。 对于这个着色器程序,当我调用glGetProgramInfoLog(…)时,得到“片段程序无法编译当前上下文状态”的错误,接着出现类似的顶点着色器错误。 顶点着色器: #version 100 uniform mat4 Projection; uniform mat4 Modelview; uniform mat4 Rotation; uniform vec3 Translation; uniform vec4 LightDirection; uniform vec4 MaterialDiffuse; uniform float MaterialShininess; attribute vec3 position; attribute vec3 normal; varying vec4 color; varying float specularCoefficient; void main() { vec3 _normal = normalize(mat3(Modelview[0].xyz, Modelview[1].xyz, Modelview[2].xyz)*normal); // There is an easier way to do […]

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

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

检查iOS XCode项目文件:GLKit的openGL粒子发射器

我试图将Michael Daley的粒子发射器移植到GLKView, 并在github上find了一个XCode项目,不幸的是,这个项目在一个漂亮的小游戏里面很严重。 现在我试着只把粒子发射器从他的游戏项目中重新使用(我需要它在2D中),我把它做成了一个没有任何编译错误的状态 – 但是看不到任何东西。 这是项目文件 。 有谁能告诉我为什么没有粒子发射器可见? 日Thnx!

OpenGL ES 2.0灯光不适用于iOS应用程序

我目前正在学习OpenGL 2.0和我创build一个基本的iPhone应用程序。 我已经在搅拌器中创build了一个模型,并将其导出到.obj文件,并写入了一个parsing器,用于抽取坐标。 形状显示很好,但没有颜色(黑色)。 这意味着法线有问题。 但是我已经检查了法线,ant发现了任何错误。 有没有从我的代码中缺less的东西? 我会非常感激任何帮助! 屏幕截图 这里是我的OpenGL代码 glEnable(GL_DEPTH_TEST); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glGenVertexArraysOES(1, &_vertexArray); glBindVertexArrayOES(_vertexArray); glGenBuffers(1, &_vertexBuffer); glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer); glBufferData(GL_ARRAY_BUFFER, loader.currentCountOfVerticies * sizeof(GLfloat) * 3, arrayOfVerticies, GL_STATIC_DRAW); glEnableVertexAttribArray(GLKVertexAttribPosition); glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, 12, BUFFER_OFFSET(0)); glGenVertexArraysOES(1, &_normalArray); glBindVertexArrayOES(_normalArray); glGenBuffers(1, &_normalBuffer); glBindBuffer(GL_ARRAY_BUFFER, _normalBuffer); glBufferData(GLKVertexAttribNormal, loader.currentCountOfNormals * sizeof(GLfloat) * 3,loader.arrayOfNormals , GL_STATIC_DRAW); glEnableVertexAttribArray(GLKVertexAttribNormal); glVertexAttribPointer(GLKVertexAttribNormal, 3, GL_FLOAT, GL_FALSE, 12, […]