erk*_*diz 3 iphone 3d opengl-es objective-c
我有一个显示OpenGL 3D模型的EAGLView和一个显示图像的UIImageView.
我想要的是在透明背景的UIImageView上方显示EAGLView.
有没有办法在UIImageView上显示具有透明背景的3D模型.
任何解决方案将不胜感激.
Ada*_*dam 11
作为参考,大多数接受的答案是不必要的.唯一的关键部分是这个(在UIViewController中 - 无需编辑或子类化EAGLView/GLKView):
self.view.opaque = NO; // NB: Apple DELETES THIS VALUE FROM NIB
self.view.backgroundColor = [UIColor clearColor]; // Optional: you can do this in NIB instead
Run Code Online (Sandbox Code Playgroud)
您可以在NIB中设置背景颜色 - 但是您无法设置不透明度(Apple似乎在initWithCoder上覆盖GL视图的此var :()
另外,当然,在您的OpenGL代码中,您需要清除alpha = 0.0.因此,无论您的glClear/glClearColor调用已经在哪里,请将clearColor替换为:
glClearColor( 0, 0, 0, 0.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Run Code Online (Sandbox Code Playgroud)
这是我找到的解决方案:
在EAGLView.m初始化
self.opaque = NO;
self.backgroundColor = [UIColor clearColor];
CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;
eaglLayer.opaque = NO;
CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
const CGFloat myColor[] = {0.0, 0.0, 0.0, 0.0};
eaglLayer.backgroundColor = CGColorCreate(rgb, myColor);
CGColorSpaceRelease(rgb);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5555 次 |
| 最近记录: |