Tag: opengl es

如何在iPhone应用程序中将2D图像转换为3D

input: 2D图像 输出: 3D图像 平台: IOS 我需要在我的ios应用程序中将2D图像转换为3D。如何在我的ios应用程序中执行此操作? 什么是我需要使用的框架? OpenGL-es会有帮助吗? 或者IOS里有其他的软件包来做这个吗? 我需要遵循什么步骤来制作2D图像到3D? 项目描述:我需要做一个类似于这个“ Morfo ”或“ 照片说话 ”的应用程序。 在这些应用程序中,我相信他们正在将2D图像转换为3D图像,这就是我在这里发布的一些启动和帮助的原因。

OpenGL ES的glFragColor取决于iOS上的片段着色器的条件

我在iOS上编写应用程序允许在屏幕上绘制自由样式(使用手指)和绘制图像。 我使用OpenGL ES来实现。 我有2个function,一个是画自由风格,一个是画纹理 —代码绘制自由风格 – (void)drawFreeStyle:(NSMutableArray *)pointArray { //Prepare vertex data ….. // Load data to the Vertex Buffer Object glBindBuffer(GL_ARRAY_BUFFER, vboId); glBufferData(GL_ARRAY_BUFFER, vertexCount*2*sizeof(GLfloat), vertexBuffer, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(ATTRIB_VERTEX); glVertexAttribPointer(ATTRIB_VERTEX, 2, GL_FLOAT, GL_FALSE, 0, 0); **GLuint a_ver_flag_drawing_type = glGetAttribLocation(program[PROGRAM_POINT].id, "a_drawingType"); glVertexAttrib1f(a_ver_flag_drawing_type, 0.0f); GLuint u_fra_flag_drawing_type = glGetUniformLocation(program[PROGRAM_POINT].id, "v_drawing_type"); glUniform1f(u_fra_flag_drawing_type, 0.0);** glUseProgram(program[PROGRAM_POINT].id); glDrawArrays(GL_POINTS, 0, (int)vertexCount); // Display the […]

iOS的纹理倒置,也只在纹理的一部分渲染?

重新渲染所有数据后,我可以将videostream缓冲区打开到OpenGL。 但是video是倒置的,只能渲染整个纹理的一部分。 我从stream式video捕捉帧并将其渲染为纹理。 这是我的顶点着色器 static const char *kVertexShaderString = "#version 100\n" "\n" "uniform mat4 uMVP; \n" "uniform vec3 uPosition; \n" "attribute vec3 aVertex; \n" "attribute vec4 aColor;\n" "varying vec4 vColor;\n" "varying vec3 vGrid; \n" "attribute vec2 v_TextCoord;\n" "varying vec2 texCoord;\n" "void main(void) { \n" " vGrid = aVertex + uPosition; \n" " vec4 pos = […]

为什么我在4.2模拟器中看不到特定的OpenGL ES图表?

我正在编写一个包含在OpenGL ES中绘制的一些graphics的应用程序。 这些图表中的每一个都在表格单元格中,当我按下其中一些图表时,它将以全屏模式打开。 一切工作完美,因为我升级到iOS4.2。 现在问题出在模拟器中,我看不到在单元格中绘制的graphics,但在全屏模式下,我看到图表。 没有改变没有设备,它只在模拟器上,只在一个案件。 其他Mac在这里的行为是一样的。 有人有线索吗?

iOS的OpenGL ES – 渲染屏幕上的FBO应用程序退出稍后重绘

我想把我的屏幕渲染成纹理,这样当我再次回到应用程序时,我可以将纹理“粘贴”到屏幕上。 目前在我的应用程序中,我正在绘制一个kEAGLDrawablePropertyRetainedBacking设置为TRUE的波形。 它的工作原理,但我离开我的应用程序,并再次回来后屏幕被清除。 kEAGLDrawablePropertyRetainedBacking TRUE是否正常? 当我回到我的应用程序时,我再也买不起fps了。 我已经偶然发现了这个问题: 如何在OpenGL ES中保存和重画屏幕内容,并试图将答案应用于我的需求,但是我仍然遇到问题。 参考另一个问题的答案,我试图做到这一点。 @property (nonatomic) GLuint framebuffer; @property (nonatomic) GLuint texture; 在glkviewcontroller加载的代码。 – (void)viewDidLoad { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillResignActive) name:UIApplicationWillResignActiveNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillTerminate) name:UIApplicationWillTerminateNotification object:nil]; glGenFramebuffers(1, &_framebuffer); glBindFramebuffer(GL_FRAMEBUFFER_OES, _framebuffer); glGenTextures(1, &_texture); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, _texture); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 768, 1024, 0, […]

从vector <float>切换到vector <short>时出错

我有一个应用程序,我正在做什么,我想改变一个vector,我创build从浮动到短。 我的代码是这样的头文件: vector<float> vertices; 它工作正常,但如果我切换到这个: vector<short> vertices; 并编译,它崩溃与以下错误: malloc: *** error for object 0x1035804: incorrect checksum for freed object – object was probably modified after being freed. *** set a breakpoint in malloc_error_break to debug 我不知道发生了什么事。 如果有帮助,这是我为iPad开发的一个OpenGL应用程序。

OpenGL iOS视图不绘制

我正在尝试使用OpenGL绘制视图,这是另一个视图的子视图。 我为此创build了一个视图类,如果我在一个简单的testing应用程序中使用这个类,它可以正常工作。 但是,如果我将这个类的实例放在我的应用程序的特定页面上,则OpenGL绘画不会显示任何内容。 我确信视图是可见的(我可以设置一个背景颜色,并显示,我可以接收触摸事件)。 我也可以通过OpenGL初始化和绘制例程来追踪,一切似乎都很好。 我的绘画例程被调用,我经常调用glGetError,并没有错误返回。 我可以比较一下这个例程跟案例的结果,一切看起来都差不多,但是没有任何东西可以描绘出来(我甚至只是简单地尝试着什么也不做,只是把窗口清理成黑色,但是也没有任何东西)。 该应用程序不起作用的代码是很复杂的张贴在这里。 我认为我做错了什么,但是对于我的生活,我无法弄清楚什么。 任何人都可以给我任何想法,为什么OpenGL绘画看起来会成功,但没有绘制任何东西,或build议一个策略来搞清楚这一点? 谢谢。

如何在glkview中使用dispatch_async?

我正在学习如何在我的iOS Opengl-es应用程序中使用线程。 我试图修改opengl游戏模板代码: – (void)glkView:(GLKView *)view drawInRect:(CGRect)rect { glClearColor(0.65f, 0.65f, 0.65f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glBindVertexArrayOES(_vertexArray); // Render the object with GLKit [self.effect prepareToDraw]; glDrawArrays(GL_TRIANGLES, 0, 36); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ sleep(1); dispatch_async(dispatch_get_main_queue(), ^{ // Render the object again with ES2 glUseProgram(_program); glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEWPROJECTION_MATRIX], 1, 0, _modelViewProjectionMatrix.m); glUniformMatrix3fv(uniforms[UNIFORM_NORMAL_MATRIX], 1, 0, _normalMatrix.m); glDrawArrays(GL_TRIANGLES, 0, 36); }); }); } […]

在iOs中使用Open GL 1.0模板缓冲区进行屏蔽的问题

我一直在努力寻找一个解决scheme,使用OPEN GL 1.0中的Stencil Buffer在iOs上进行简单的掩膜。 我绘制背景,然后使用glPushMatrix绘制使用drawFrame绘制的框架。 我的框架是由VideoFrameTexture构成的,我尝试使用模板缓冲区使用maskTexture进行遮罩。 我的目标是只绘制videoFrameTexture的一部分(这是由我的面具的白色区域,并对应于一个圆形)定义在背景上。 我使用下面的代码,但掩模图像不考虑。 这是一个黑色和白色的PNG。 -(void) drawFrame{ GLfloat vertexes[] = { -1.0f, -1.0f, 0.0f, 1.0f, -1.0f, 0.0f, 1.0f, 1.0f, 0.0f, -1.0f, 1.0f, 0.0f }; GLshort texes[] = { 1, 1, 0, 1, 0, 0, 1, 0, }; glColor4f(1.0, 1.0, 1.0, 1.0); glVertexPointer(3, GL_FLOAT, 0, vertexes); glEnableClientState(GL_VERTEX_ARRAY); glTexCoordPointer(2, GL_SHORT, 0, texes); glEnableClientState(GL_TEXTURE_COORD_ARRAY); […]

OpenGL ES模板操作

在参考OpenGL文章中讨论的问题后,出现了一个新的问题。 我正在实现基于节点的2D场景图的裁剪。 每当剪辑框轴alignment,我正在使用像在OpenGL剪辑中提出的glScissor。 我已经成功实现了轴alignment框的节点裁剪。 事实certificate,每个节点必须与它的裁剪矩形的剪切矩形相交。 (对于与祖先的剪贴框重叠的兄弟姐妹,这是必要的)。 交叉非轴alignment矩形的机制必须使用模板缓冲区来实现。 我开始在OpenGL剪辑中实现所提出的解决scheme,但是在chidrens中存在剪辑反转与其祖先重叠的问题。 现在,模板剪裁只用一个剪辑框就完美了。 但是,对于与祖先相交的小孩或大孩子来说,algorithm会失败,因为这里需要包含2个矩形的交点(如轴alignment版本),而不是孩子的全矩形。 我已经想出了以下algorithm: 最上面的节点写入从计数器值1开始,并将其填充1的剪切矩形绘制到模板缓冲区中,并将其模板化testing的结果显示为1.每个同时具有剪裁的兄弟模型都会打开它的边界矩形,模板缓冲区,然后testing2等等。 现在,当一个兄弟剪裁matrix与一个祖先剪裁matrix重叠时,它们重叠的区域会被2s填充,在对2进行testing时给出完美剪辑。该algorithm可以扩展到最多255个嵌套剪辑节点。 这里是我的问题: 如何执行对模板缓冲区的渲染,而不是1s正在写入,每当执行渲染时,都将1s添加到当前模板缓冲区值。 这是我用来准备渲染到模板缓冲区的代码: glEnable(GL_STENCIL_TEST); glStencilFunc(GL_ALWAYS, ref, mask); glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE); 我正在寻找一个设置,将通过ref的值而不是将ref写入缓冲区来增加模板缓冲区当前值。 有人可以帮我吗?