क्या कोई GLKView पारदर्शी पृष्ठभूमि बनाने का कोई तरीका है? मैंने here समाधान का प्रयास किया है लेकिन यह मेरे लिए काम नहीं कर रहा है।ओपनजीएल ईएस 2.0 जीएलकिट पारदर्शी पृष्ठभूमि के साथ
* संपादित करें: मुझे इसे पूरी तरह पारदर्शी बनाने में सहायता चाहिए। पृष्ठभूमि ज्यादातर सफेद और भूरे रंग की है, लेकिन मैंने इसे और अधिक जीवंत रंगों के साथ परीक्षण किया है, और सुनिश्चित करें कि आप पृष्ठभूमि के माध्यम से अस्पष्ट रूप से देख सकते हैं। कोई विचार यह आंशिक रूप से पारदर्शी क्यों होगा लेकिन निम्नलिखित कोड के साथ पूरी तरह से नहीं?
- (void)viewDidLoad
{
[super viewDidLoad];
self.context = [[[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2] autorelease];
CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.view.layer;
eaglLayer.opaque = NO;
if (!self.context) {
NSLog(@"Failed to create ES context");
}
GLKView *view = (GLKView *)self.view;
view.context = self.context;
view.backgroundColor = [UIColor clearColor];
view.drawableDepthFormat = GLKViewDrawableDepthFormat24;
[self setupGL];
}
- (void)setupGL
{
[EAGLContext setCurrentContext:self.context];
self.effect = [[[GLKBaseEffect alloc] init] autorelease];
self.effect.light0.enabled = GL_FALSE;
self.effect.light0.diffuseColor = GLKVector4Make(1.0f, 0.4f, 0.4f, 0.0f);
self.effect.light0.ambientColor = GLKVector4Make(1.0f, 0.4f, 0.4f, 0.0f);
glDisable(GL_DEPTH_TEST);
glGenVertexArraysOES(1, &_vertexArray);
glBindVertexArrayOES(_vertexArray);
glGenBuffers(1, &_vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertexData), vertexData, GL_DYNAMIC_DRAW);
glEnableVertexAttribArray(GLKVertexAttribPosition);
glVertexAttribPointer(GLKVertexAttribPosition, VERTEX_POS_DATA_SIZE, GL_FLOAT, GL_FALSE, VERTEX_DATA_SIZE * sizeof(GLfloat), BUFFER_OFFSET(0));
glEnableVertexAttribArray(GLKVertexAttribColor);
glVertexAttribPointer(GLKVertexAttribColor, VERTEX_COLOR_DATA_SIZE, GL_FLOAT, GL_FLOAT, VERTEX_DATA_SIZE * sizeof(GLfloat), BUFFER_OFFSET(VERTEX_POS_DATA_SIZE * sizeof(GLfloat)));
glLineWidth(10.0);
}
- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{
if (!needsRedraw) return;
needsRedraw = NO;
glClearColor(0.65f, 0.65f, 0.65f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
[self.effect prepareToDraw];
glDrawArrays(GL_LINE_STRIP, 0, vertexCount);
}
मैं [UIColor clearColor] के पृष्ठभूमि रंग की स्थापना और eaglLayer की स्थापना अपारदर्शी नहीं होने की कोशिश की है:
यहाँ मेरे विचार नियंत्रक में कोड है। बिल्ली, मैंने eaglLayer की पृष्ठभूमि को colColorRef को 0 अस्पष्टता के साथ सेट करने का भी प्रयास किया।
क्या आप वाकई दृश्य चित्रकला के समय दृश्य पृष्ठभूमि भर नहीं रहे हैं? मुझे पता है कि यह मूर्खतापूर्ण लगता है लेकिन मैंने देखा है कि उन लोगों के साथ ऐसा होता है जो एक ही काम करने की कोशिश कर रहे थे। – mprivat
मैं इसके साथ पूरी तरह से नया हूं, इसलिए यह संभव है, लेकिन मुझे 99% यकीन है कि मैं केवल एक लाइन स्ट्रिप खींच रहा हूं। स्पष्ट रंग 0.0f का अल्फा सेट करने के लिए सेट है, लेकिन मैंने यह भी देखा है कि अगर मैं उन अक्षरों को खींचने का प्रयास करता हूं जिनके रंग गुण अल्फा को 0.0f पर सेट करते हैं, तो वे अभी भी आकर्षित करते हैं। क्या इससे आपको कोई समझ/मदद मिलती है? – prplehaze
एक टिप्पणी जो मैं यहां कर सकता हूं वह यह है कि यदि आप कर सकते हैं तो मैं एक गैर-ओपेक ओपनजीएल ईएस होस्टिंग व्यू का उपयोग करने से बचूंगा। यह सामान्य ओपेक ओपनजीएल ईएस व्यू की तुलना में आपके प्रतिपादन को नाटकीय रूप से धीमा कर देगा। यदि आप कर सकते हैं, तो उस पृष्ठभूमि सामग्री को खींचें जिसे आप अपने ओपनजीएल ईएस दृश्य में प्रस्तुत करना चाहते हैं और इसे सभी को अपारदर्शी दृश्य में प्रस्तुत करना चाहते हैं। –