• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: NSOpenGLContext and window re-opening
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSOpenGLContext and window re-opening


  • Subject: Re: NSOpenGLContext and window re-opening
  • From: publiclook <email@hidden>
  • Date: Fri, 25 Apr 2003 19:15:53 -0400

One other note:
When a GL context is not the current context, some of its state and all previously downloaded textures may be corrupted by other GL contexts. When you need to make a particular context the current context, you probably also need to re-establish the state of the context and downloaded textures etc.

On Friday, April 25, 2003, at 06:58 PM, publiclook wrote:

I seem to recall answering this question before, but if you searched the archives and didn't find it, my memory must be faulty.

I use the following implementation of the -reshape method and it handles view resizing, scaling via NSView bounds manipulation, as well as window unhide:

- (void)reshape
/*" Sets the receiver's viewport and coordinate system to reflect changes to the visible portion of the view "*/
{
NSRect visibleRect = [self visibleRect];
NSRect superVisibleRect = visibleRect;

// Conversion captures any scaling in effect
superVisibleRect = [self convertRect:superVisibleRect toView:[self superview]];

[[self openGLContext] makeCurrentContext];

// Setup some basic OpenGL stuff
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glClearColor(0.0, 0.0, 0.0, 1.0);
glColor4f(1.0, 1.0, 1.0, 1.0);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_TEXTURE_RECTANGLE_EXT);
glEnable(GL_TEXTURE_2D);

// Optimization: discard texture pixels that are too transparent
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0.05);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

// reset the viewport to new dimensions
glViewport(0, 0, superVisibleRect.size.width, superVisibleRect.size.height);
glOrtho(NSMinX(visibleRect), NSMaxX(visibleRect), NSMinY(visibleRect),
NSMaxY(visibleRect), -1.0, 1.0);

[self setNeedsDisplay:YES];
}


I implement -initWithFrame:pixelFormat: to call -reshape. The -reshape method seems to be called automatically whenever necessary after that.

- (id)initWithFrame:(NSRect)frameRect pixelFormat:(NSOpenGLPixelFormat *)pixFmt
/*" Designated initializer "*/
{
self = [super initWithFrame:frameRect pixelFormat:pixFmt];

[self reshape];

return self;
}


This code enables my subclass of NSOpenGLView to work correctly inside a scroll view even if the document view of the scroll view is resized or scaled.

On Friday, April 25, 2003, at 12:36 PM, Cedric Vuillet wrote:

I have a big problem with an OpenGl context in an NSWindow.
When I open the window with the OpenGL view, it works great, but when I close and re-open the window, the OpenGL view is white and doesn't draw anything.

Do you know what is the problem?

What can I do to resolve this problem?

I tried makeCurrentContext but it does not work at all.

I think this is a known problem because I have seen the same in other forums, but there is no response...

What can I do?

--
adnX__________________________
Ingenierie / developpement Mac

Cedric Vuillet
______________________________
Standard : 04 72 13 24 14
Ligne directe : 04 76 15 33 09
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.

References: 
 >Re: NSOpenGLContext and window re-opening (From: publiclook <email@hidden>)

  • Prev by Date: Re: Excessive NSImage caching (or leaking)
  • Next by Date: Re: formatter use for whitespace
  • Previous by thread: Re: NSOpenGLContext and window re-opening
  • Next by thread: Tab-stop filled with dots?
  • Index(es):
    • Date
    • Thread