Tag: 纹理

SpriteKit纹理不可见

我正在开发一个游戏,其中有一些animation的angular色,当用户使用游戏控制进行移动,战斗时等等。 有一个正常的状态,即当用户没有触摸任何控件时,玩家的angular色纹理被分配到正常状态或静止状态纹理。 如果用户非常快速地执行这些控制,则当他回到正常状态时,玩家的angular色纹理消失。 如果使用了任何控件,那么animation是可见的。 任何人都可以帮我解决这个问题吗? 任何帮助将不胜感激。 我已经展示了我在下面使用的一些基本的编程结构。 //————————————————————————- *// The 'Normal or Resting' state texture.* SKAction *normalStateAction = [SKAction setTexture:normalStateTexture]; *// To Play any Character Animation like Walk, Fight, Jump, etc.* [playerCharacter.sprite runAction:[SKAction sequence:@[charAnimAction,normalStateAction]]]; *// In the 'TouchesEnded' method for any Game Control.* -(void)TouchesEnded { // Remove previous actions. [playerCharacter.sprite removeAllActions]; // Run Normal State […]

Qt iOS:如何从QVideoFilterRunnable返回types为GLTextureHandle的QVideoFrame

我试图捕捉摄像头输出帧,并在GPUpipe道中进一步处理。 出于这个原因,将纹理作为GPU纹理来回转是最好的select。 从QVideoFilterRunnable类inheritance的run方法接收QVideoFrame对象的types不等于QAbstractVideoBuffer :: GLTextureHandle 。 它等于NoHandle ,我需要做map / unmap,并通过glTexImage手动加载纹理,这不利于性能。 有没有可用于返回纹理名称的控制选项? 一些说明: 在Android上看起来不错。 返回的框架是质感,所以这就像一个魅力: QVideoFrame* input = …; GLuint texture = input->handle().toUInt(); f->glBindTexture(GL_TEXTURE_2D, texture); 一般来说,可能有iOS纹理cachingfunction: CVPixelBufferRef pixelBuffer = …; CVOpenGLESTextureCacheCreateTextureFromImage(…, pixelBuffer, …, &textureRef); texture = CVOpenGLESTextureGetName(textureRef);

如何更改CCTexture2D颜色

我有一个使用纹理和glDrawArray填充的多边形(使用本教程中描述的方法: http : //www.raywenderlich.com/32954/how-to-create-a-game-like-tiny-wings-with -cocos2d-2-x-part-1 )。 我希望能够使用在游戏中随机生成的纯色填充我的多边形。 要使用本教程中的技巧来做到这一点,我需要dynamic地创build一个纯色的纹理(例如,我可能想要生成一个1×1的红色正方形,并用它来填充我的多边形)。 有没有办法改变cocos2d纹理的颜色,类似于你将如何使用[mySprite changeColor:ccRed]来改变一个精灵的颜色? 所以,如果我有我的初始纹理,说一个1×1的白色正方形,有没有办法我可以改变这个纹理到一个1×1的红色正方形? 我已经尝试使用CCRenderTexture(如本教程中所述: http ://www.raywenderlich.com/33266/how-to-create-dynamic-textures-with-ccrendertexture-in-cocos2d-2-x),但是,作为我将填充许多多边形,这种方法certificate是相当缓慢的。 我也尝试使用下面的代码来创build我的纹理: // fill with solid red GLubyte buffer[3] = {255, 0, 0}; CCTexture2D *texture = [[CCTexture2D alloc] initWithData:buffer pixelFormat:kCCTexture2DPixelFormat_RGB888 pixelsWide:1 pixelsHigh:1 contentSize:m]; 虽然上面的工作相当不错,但它比从CCSprite抓取纹理还要慢。 基本上,我正在寻找一种尽可能高效地生成dynamic纹理的方法。 这里是我用来填充我的多边形的代码: GLubyte buffer[3] = {arc4random()%256,arc4random()%256,arc4random()%256}; CGSize size; size.width = 2; size.height = 2; CCTexture2D *texture = [[CCTexture2D […]

四边形OpenGL ES 1.1中的纹理变形问题是由三angular形带组成的

我正在使用三angular形条创build一个四边形。 问题是,当我尝试使用矩形纹理来绘制它时,我想要在形状上均匀插值。 只要形状是一个矩形或矩形的仿射变换,我就会有两个相同的三angular形来构build形状,一切都很顺利。 但是随意的形状,三angular形有不同的形状,三angular形的公共边缘自然会出现变形。 _____ ______ _____ | | / / \ / |_____| /_____/ \_/ Ok Ok Not Ok 我想在ES 2.0中使用自定义着色器解决这个问题是相当简单的,但是如何在ES 1.1中实现呢?

在iOS中创buildRGB CVOpenGLESTexture

我正在尝试在iOS中创build一个3通道的 CVOpenGLESTexture 。 通过在CVPixelBufferCreate()和kCVPixelFormatType_OneComponent8中为CVPixelBufferCreate() format和internalFormat指定kCVPixelFormatType_OneComponent8 ,我可以成功创build单通道纹理。 同样,通过在CVPixelBufferCreate()指定kCVPixelFormatType_32BGRA在CVPixelBufferCreate() GL_RGBA format和internalFormat format ,我可以成功创build4通道 RGBA纹理。 我需要创build具有可访问像素的3通道 24位RGB(或BGR)纹理。 我似乎无法find正确的参数(或其组合)到CVPixelBufferCreate()和CVOpenGLESTextureCacheCreateTextureFromImage()不会导致他们之一失败。 附加信息 在我的设备上由CVPixelFormatDescriptionArrayCreateWithAllPixelFormatTypes() 报告支持的FOURCC格式types: 2C08 , r408 , v408 , y408 , y416 , BGRA , b64a , b48r , b32a , b16g , R10k , v308 , v216 , v210 , v410 , r4fl , grb4 , rgg4 , bgg4 […]

两幅图像相乘的animation

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

我如何使用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 […]

video作为OpenGLES2.0中的纹理

我想将video作为纹理放置在OpenGLES 2.0 iOS中。 我用AVPlayerItemVideoOutput创buildAVPlayerItemVideoOutput ,设置 NSDictionary *videoOutputOptions = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:kCVPixelFormatType_32BGRA], kCVPixelBufferPixelFormatTypeKey, [NSDictionary dictionary], kCVPixelBufferIOSurfacePropertiesKey, nil]; self.videoOutput = [[AVPlayerItemVideoOutput alloc] initWithPixelBufferAttributes:videoOutputOptions]; 比我获得每个时刻的CVPixelBufferRef CMTime currentTime = [self.videoOutput itemTimeForHostTime:CACurrentMediaTime()]; CVPixelBufferRef buffer = [self.videoOutput copyPixelBufferForItemTime:currentTime itemTimeForDisplay:NULL]; 然后我把它转换成UIImage这种方法 + (UIImage *)imageWithCVPixelBufferUsingUIGraphicsContext:(CVPixelBufferRef)pixelBuffer { CVPixelBufferLockBaseAddress(pixelBuffer, 0); int w = CVPixelBufferGetWidth(pixelBuffer); int h = CVPixelBufferGetHeight(pixelBuffer); int r = CVPixelBufferGetBytesPerRow(pixelBuffer); int bytesPerPixel […]

解决方法为Texture2D.GetData方法

我使用Monogame将XNA游戏转换为iOS游戏。 在下面的代码片段中, smallDeform是一个我称之为GetData方法的Texture2D 。 smallDeform = Game.Content.Load<Texture2D>("Terrain/…"); smallDeform.GetData(smallDeformData, 0, smallDeform.Width * smallDeform.Height); 我有一些Monogame的问题,因为iOS中的function还没有实现,因为它返回这个exception。 #if IOS throw new NotImplementedException(); #elif ANDROID 我尝试从Windows的XML文件中序列化数据以从iOS加载整个文件。 序列化的文件每个重量超过100MB,这是不可接受的parsing。 基本上,我正在寻找一种解决方法,从纹理中获取数据(例如uint[]或Color[] ),而不使用GetData方法。 PS:我在Mac上,所以我不能使用Monogame SharpDX库。 提前致谢。

在iOS中加载4通道纹理数据

我想从iOS中的文件加载4通道纹理数据,所以我将纹理视为(连续)地图 [0,1]x[0,1] -> [0,1]x[0,1]x[0,1]x[0,1] 如果我使用fileformat .png ,则XCode / iOS会将该文件视为图像,并将每个组件rgb与(预乘alpha)相乘,从而损坏我的数据。 我应该如何解决这个问题? 例子可能是 使用两个纹理与组件rgb (3通道) postadvide阿尔法 使用另一种文件格式 其中,我认为最好的解决scheme是使用另一种文件格式。 GL压缩的文件格式(PVRTC?)不是苹果平台独立的,似乎是低分辨率(4位)( 参考 )。 编辑:如果我自己的答案如下,这是不可能得到在iOS的4通道数据的PNG的。 由于OpenGL是关于创build图像而不是呈现图像,因此应该可以以某种方式加载4通道数据。 PNG是图像的文件格式( 压缩取决于所有4个通道 但是一个频道的压缩与其他频道无关),所以有人可能会说我应该使用另一种文件格式。 那么,我应该使用哪些其他压缩文件格式,这很容易在iOS中读取/集成? 更新:“组合”提到了加载4通道非预乘纹理的方式,所以我不得不给他正确的答案。 但是,这个解决scheme有一些我不喜欢的限制。 我的下一个问题是“从iOS中的png文件访问原始的4通道数据”:) 我认为这是一个不好的库devise,不能读取4通道PNG数据。 我不喜欢系统比我自己更聪明。