Iphone 将UIImageView作为子视图添加到OpenGL ES 2.0视图
在本iPhone教程之后,我设置了OpenGL ES 2.0视图: 现在我试着在一张图片上画画。我已经尝试了以下方法,但没有任何效果:Iphone 将UIImageView作为子视图添加到OpenGL ES 2.0视图,iphone,ios,opengl-es,Iphone,Ios,Opengl Es,在本iPhone教程之后,我设置了OpenGL ES 2.0视图: 现在我试着在一张图片上画画。我已经尝试了以下方法,但没有任何效果: 添加UIImageView作为OpenGL视图的子视图 将UIImageView作为子视图添加到OpenGL视图下的ViewController中 在同一上下文中使用OpenGL绘制图像也不起作用,主要是因为纹理大小不是2的幂 两次都只有OpenGL视图可见。如果要在OpenGL下方绘制图像,则不能将UIImageView添加为子视图,它将绘制在渲染的顶部
- 添加UIImageView作为OpenGL视图的子视图
- 将UIImageView作为子视图添加到OpenGL视图下的ViewController中
- 在同一上下文中使用OpenGL绘制图像也不起作用,主要是因为纹理大小不是2的幂
两次都只有OpenGL视图可见。如果要在OpenGL下方绘制图像,则不能将
UIImageView
添加为子视图,它将绘制在渲染的顶部。
将其绘制为矩形上的纹理将起作用(我实际上在应用程序中使用它),但您必须调整图像的大小。
将UIImageView
放在OpenGL视图下也可以,但您必须先调整几个参数:
kEAGLDrawablePropertyColorFormat
为kEAGLColorFormatRGBA8
。必须通过设置属性drawableProperties
,在CaeAglayer
中设置该属性:
CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES],
kEAGLDrawablePropertyRetainedBacking,
kEAGLColorFormatRGBA8,
kEAGLDrawablePropertyColorFormat,
nil];
我认为正确的位置是您的-(void)setupLayer
方法caeaglayer.opaque
属性设置为NO
(再次在setupLayer
中)glClearColor(0.f, 0.f, 0.f, 0.f);
glClear(GL_COLOR_BUFFER_BIT);