Tag: opengl es

OpenGL:与片段着色器的圆斜面?

我正在试图制作一个圆形的粒子,看上去它的顶部有一道光芒。 这就是我想让它看起来像: 以下是它目前的样子: 不太好。 由于我使用的是GL_POINTS,所以我得到了gl_PointCoordvariables,这会让事情变得更简单,除非我不知道如何正确使用它,这导致了这个混乱: varying lowp vec4 DestinationColor; void main(void) { lowp vec2 circCoord = 2.0 * gl_PointCoord – 1.0; if (dot(circCoord, circCoord) > 1.0) { discard; } gl_FragColor = mix(DestinationColor, vec4(1, 0.5, 0.2, 1), (1.0-gl_PointCoord.t)*(max(abs(gl_PointCoord.t-0.5),abs(gl_PointCoord.s-0.5)))); // the world's worst slowest math } 我会高度赞赏,如果有人能给我一点帮助,因为我卡住了自己可怕的math技能。

glReadPixels只保存1/4屏幕大小的快照

我正在为客户端开发增强现实应用程序。 OpenGL和EAGL部分已经在Unity 3D中完成,并在我的应用程序中实现了View。 我现在需要的是一个button,捕捉OpenGL内容的屏幕截图,这是最后面的视图。 我试图自己写,但是当我点击一个button与分配的IBAction,它只保存了1/4的屏幕(左下angular) – 虽然它确实保存到相机胶卷。 所以基本上,我怎样才能保存整个screenize,而不是只有四分之一? 这里是我的代码的方法: -(IBAction)tagBillede:(id)sender { UIImage *outputImage = nil; CGRect s = CGRectMake(0, 0, 320, 480); uint8_t *buffer = (uint8_t *) malloc(s.size.width * s.size.height * 4); if (!buffer) goto error; glReadPixels(0, 0, s.size.width, s.size.height, GL_RGBA, GL_UNSIGNED_BYTE, buffer); CGDataProviderRef ref = CGDataProviderCreateWithData(NULL, buffer, s.size.width * s.size.height * 4, NULL); if […]

绑定第二个顶点缓冲区似乎破坏了我的第一个顶点缓冲区,OpenGL OES ios 5.1

我创build了两个不同的顶点缓冲区, 使用两个不同的着色器来渲染它们 。 只要我绑定第二个顶点缓冲区,我停在第一个顶点缓冲区的数据似乎已经损坏或丢失。 如果我只生成和绘制一个顶点缓冲区,像这样: glGenBuffers( 1, &vb1 ) ; glBindBuffer( GL_ARRAY_BUFFER, vb1 ) ; // fill it.. glBufferData( .. ) 然后,在draw()循环中, glUseProgram( shader1 ) ; glBindBuffer( vb1 ) ; // make sure it is bound glDrawArrays( … ) // draw it 然后它工作正常,没有问题,没有错误(我每 gl *调用glGettingLastError(),所以看来这个代码是完全没问题) 现在,如果我生成并绑定了第二个顶点缓冲区,那么在第一个顶点缓冲区生成并绑定之后的任何时候, // ran in init() — then previously working code […]

Opengl着色器问题 – 奇怪的光reflection文物

这几天我一直在摔跤。 我想我已经把它缩小到每个顶点切线的问题了,但我不确定解决这个问题的最好方法。 上下文是iPhone应用程序,opengl es2使用我自己的引擎。 我的着色器是使用提供的每个顶点切线创buildTBNmatrix的凹凸贴图(法线贴图)。 顶点着色器将光vector和眼vector转换为切空间,将它们传递给碎片着色器并计算光照。 但是我的前两个testing模型中的一些几何graphics在光照中显示了奇怪的伪像。 在镜面reflection中最容易看到。 在试图debugging这个我已经取代了正常的地图与平坦的普通PNG ..所有像素是128,128,255。 我也硬编码的颜色。 我的第一个模型是一个button形状。 它显示了神器在外圈上的扇形镜面reflection。 重要的是要注意的是,这里的UV贴图方法是“平坦的”,使得垂直于贴图的边基本上在那里纹理纹理。 我会认为这会使切线难以计算,因为两个点将具有完全相同的纹理坐标。 我尝试debugging渲染设置gl_FragColor不同的variables。 当设置为每个顶点的法线时,我们看到扇形消失,表明法线是正确的。 但是,将其设置为每个顶点的切线时,您可以看到扇贝。 下一个形状是一个简单的球体。 有了它,模型的顶部和底部就是神器展示的地方。 在线框中,你会看到这是几个三angular形在一个顶点相遇的地方。 因为每个三angular形都有完全不同的紫外线贴图,所以我无法将自己的头围绕在切线上。 如果我不显示着色器代码,我想我会得到很多flack。 顶点着色器: v_fragmentTexCoord0 = a_vertexTexCoord0; gl_Position = u_modelViewProjectionMatrix * vec4(a_vertexPosition,1.0); vec3 normal = normalize(u_normalMatrix * a_vertexNormal); vec3 tangent = normalize(u_normalMatrix * a_vertexTangent); vec3 bitangent = cross(normal, tangent); mat3 TBNMatrix = mat3(tangent, bitangent, normal); […]

神秘的应用程序与OpenGL崩溃

我正在使用GPUIImage库来开发iOS相机应用程序。 有时,当应用程序在2-3分钟后暂停时,Xcode会在应用程序中给我一个崩溃,指向方法中的行: – (void)presentBufferForDisplay; { [self.context presentRenderbuffer:GL_RENDERBUFFER]; } 什么可能是这次事故的原因? 我有一个非常长的相机设置,代码本身在GPUImageContext类。 我可能在这里做错了什么?

不调用glkView drawInRect

我正在学习OpenGLES,我正在尝试将一个GLKViewer放在UIViewController中。 我知道我可以通过使用GLViewController来解决主要问题,但我正在尝试学习如何使用这种方法。 我发现这个问题,将GLKView嵌套到UIViewController和嵌套的GLKView和GLKViewController中,但是我必须缺less一些东西,即使我想我正在做所有正确的步骤,因为当我运行我的项目时,我没有进入drawInRect打印行。 在故事板中,我将ViewController作为glkview组件的代表。 我尽量保持代码尽可能简单,任何帮助都将被认可: MyController.h #import <Foundation/Foundation.h> #import <GLKit/GLKit.h> @interface MyGLController : UIViewController <GLKViewDelegate> { GLuint vertexBufferID; } @property (weak, nonatomic) IBOutlet GLKView *glview; @property (strong, nonatomic) GLKBaseEffect *baseEffect; @end MyGLController.m #import "MyGLController.h" @implementation MyGLController //@synthesize baseEffect; -(void) viewDidLoad{ [super viewDidLoad]; self.glview.context = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES2]; [EAGLContext setCurrentContext:self.glview.context]; printf("View Loaded"); } – (void)glkView:(GLKView […]

在iOS中的项目中添加第三方框架

我想在我的iPad应用程序中使用NinevehGL框架 。 我已经将框架添加到我的Xcode项目。 但是,当我运行我的应用程序,它成功执行。 注意:在我安装NinevehGl.pkg之后,NinevehGl框架显示在项目模板本身中。 我select这个模板意味着它会自动创build链接二进制库中的一些框架。 但我的问题是:当在其他mac中运行相同的Xcode项目,它崩溃。 因为其他的Mac没有安装这个软件包。 所以我想在项目本身中添加这个框架。 如何添加这个?

我如何使用GLKit将不同的纹理应用于不同的对象?

我在GLKit的帮助下显示了3个对象。 但是,当我将纹理应用到这些对象时,所有三个纹理都只使用一个纹理。 我正在使用的代码如下所示: – (void)setUpGL{ NSLog(@"i : %d, %d, %d",i,j,k); firstPlayerScore = 0; secondPlayerScore = 0; staticBall = YES; isSecondPlayer = NO; self.boxPhysicsObjects = [NSMutableArray array]; self.spherePhysicsObjects = [NSMutableArray array]; self.immovableBoxPhysicsObjects = [NSMutableArray array]; self.cylinderPhysicsObjects = [NSMutableArray array]; self.secondPlayerCylinderPhysicsObjects = [NSMutableArray array]; self.sphereArray = [NSMutableArray array]; GLKView *view = (GLKView *)self.view; NSAssert([view isKindOfClass:[GLKView class]],@"View controller's […]

没有GLKit的OpenGL ES 2

我想制作一个使用OpenGL ES 2.0的应用程序。 我可以这样做,而不使用GLKit,因为我想部署到iOS 4.3? 我找不到任何这方面的参考。 没有GLKit,甚至可以使用着色器等? 谢谢

在iPhone4上使用OpenGL ES加载大纹理时glError 0x0501

当我尝试在设备上加载PVR图像时出现此错误。 它适用于iPhone 5s,5s,4s和iPad,但在4s不起作用。 我的PVR图像大小是: width = 4096和height = 2048 。 Cocos2d: cocos2d: TexturePVR: Error uploading compressed texture level: 0 . glError: 0x0501 Cocos2d: cocos2d: Couldn't load PVR image /var/mobile/Applications/7CF6C347-8B63-4C1E-857A-41F48C8ACBEF/Race.app/Images/BackGround/bg1.pvr.ccz Cocos2d: cocos2d: Couldn't add PVRImage:Images/BackGround/bg1.pvr.ccz in CCTextureCache 我得到这个链接的forms: 支持的尺寸为:iPhone 3gs / iPhone 4 / iPad 1 / iPod 3/4:2048×2048 iPad 2/3/4 / Mini / iPhone 4S […]