You're right – the vertices are here specified in OpenGL "clip space" – a 
coordinate system stretching from -1 to 1 on all 3 axes.  If you want to 
specify points in a different coordinate space, it's your responsibility to 
make sure that they end up in clip space, by transforming them appropriately.  
In old world GL (as you have there) this is done through the fixed function 
transform:

vertex in model space -- * modelview matrix -> vertex in world space -- * 
projection matrix -> vertex in clip space -- divide x,y,z by w -> vertex in 
normalised device space -- viewport transform -> vertex in pixel space

I would however *highly* recommend not using old world GL.  It will make your 
later transition to OpenGL 3.2 core much much harder, as most of the functions 
here (glMatrixMode, glPushMatrix, glRotate, glBegin, glColor, glVertex, glEnd, 
glPopMatrix, and many others) are no longer present.

To get an idea of how to get started with modern OpenGL, take a look at 
https://github.com/beelsebob/Cocoa-GL-Tutorial and 
https://github.com/beelsebob/Cocoa-GL-Tutorial-2.  These are still written in 
OpenGL 2.1, but in a way that the port to 3.2 when you come to it is trivially 
easy.

Thanks

Tom Davie

if (*ra4 != 0xffc78948) { return false; }

On 8 Aug 2011, at 08:35, Graham Cox wrote:

> I'm looking at using CAOpenGLLayer to boost drawing performance. I'm a total 
> novice at OpenGL.
> 
> Looking at the 'CALayerEssentials' sample code as a starting point, it has 
> the following code:
> 
> -(void)drawInCGLContext:(CGLContextObj)glContext 
> pixelFormat:(CGLPixelFormatObj)pixelFormat 
> forLayerTime:(CFTimeInterval)timeInterval displayTime:(const CVTimeStamp 
> *)timeStamp
> {
>       // Set the current context to the one given to us.
>       CGLSetCurrentContext(glContext);
> 
>       // We're just going to draw a single red quad spinning around based on 
> the current time. Nothing particularly fancy.
>       GLfloat rotate = timeInterval * 60.0; // 60 degrees per second!
>       glClear(GL_COLOR_BUFFER_BIT);
>       glMatrixMode(GL_MODELVIEW);
>       glPushMatrix();
>       glRotatef(rotate, 0.0, 0.0, 1.0);
>       glBegin(GL_QUADS);
>               glColor3f(1.0, 0.0, 0.0);
>               glVertex2f(-0.5, -0.5);
>               glVertex2f(-0.5,  0.5);
>               glVertex2f( 0.5,  0.5);
>               glVertex2f( 0.5, -0.5);
>       glEnd();
>       glPopMatrix();
>       
>       // Call super to finalize the drawing. By default all it does is call 
> glFlush().
>       [super drawInCGLContext:glContext pixelFormat:pixelFormat 
> forLayerTime:timeInterval displayTime:timeStamp];
> }
> 
> 
> What I find a bit odd here is that the coordinate values for the glVertex 
> calls are not related to the layer's actual bounds, but to some notional 
> coordinate system stretching from -1 to +1 in each dimension. If the layer is 
> resized, the 'square' resulting stretches in proportion.
> 
> I didn't expect this, though perhaps it's normal for OpenGL, or at least 
> CAOpenGLLayer. There's virtually nothing in the documentation about this 
> layer or how it's set up, so I'm having a hard time understanding how I'm 
> supposed to go about calculating the coordinates I need.
> 
> Can someone point me in the direction of any documentation that could help 
> here, or at least confirm my observations about coordinates being relative to 
> a +/- 1 virtual space?
> 
> --Graham
> 
> 
> _______________________________________________
> 
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> 
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> 
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/tom.davie%40gmail.com
> 
> This email sent to tom.da...@gmail.com

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to