- if( isFullScreen )
- {
- [self exitFullScreen];
- }
- initDone = 0;
-}
-
-- (void) drawQuad
-{
- glBegin( GL_QUADS );
- /* Top left */
- glTexCoord2f( 0.0, 0.0 );
- glVertex2f( - f_x, f_y );
- /* Bottom left */
- glTexCoord2f( 0.0, (float) p_vout->output.i_height );
- glVertex2f( - f_x, - f_y );
- /* Bottom right */
- glTexCoord2f( (float) p_vout->output.i_width,
- (float) p_vout->output.i_height );
- glVertex2f( f_x, - f_y );
- /* Top right */
- glTexCoord2f( (float) p_vout->output.i_width, 0.0 );
- glVertex2f( f_x, f_y );
- glEnd();
-}
-
-- (void) drawCube
-{
- glBegin( GL_QUADS );
- /* Front */
- glTexCoord2f( 0.0, 0.0 );
- glVertex3f( - 1.0, 1.0, 1.0 );
- glTexCoord2f( 0.0, (float) p_vout->output.i_height );
- glVertex3f( - 1.0, - 1.0, 1.0 );
- glTexCoord2f( (float) p_vout->output.i_width,
- (float) p_vout->output.i_height );
- glVertex3f( 1.0, - 1.0, 1.0 );
- glTexCoord2f( (float) p_vout->output.i_width, 0.0 );
- glVertex3f( 1.0, 1.0, 1.0 );
-
- /* Left */
- glTexCoord2f( 0.0, 0.0 );
- glVertex3f( - 1.0, 1.0, - 1.0 );
- glTexCoord2f( 0.0, (float) p_vout->output.i_height );
- glVertex3f( - 1.0, - 1.0, - 1.0 );
- glTexCoord2f( (float) p_vout->output.i_width,
- (float) p_vout->output.i_height );
- glVertex3f( - 1.0, - 1.0, 1.0 );
- glTexCoord2f( (float) p_vout->output.i_width, 0.0 );
- glVertex3f( - 1.0, 1.0, 1.0 );
-
- /* Back */
- glTexCoord2f( 0.0, 0.0 );
- glVertex3f( 1.0, 1.0, - 1.0 );
- glTexCoord2f( 0.0, (float) p_vout->output.i_height );
- glVertex3f( 1.0, - 1.0, - 1.0 );
- glTexCoord2f( (float) p_vout->output.i_width,
- (float) p_vout->output.i_height );
- glVertex3f( - 1.0, - 1.0, - 1.0 );
- glTexCoord2f( (float) p_vout->output.i_width, 0.0 );
- glVertex3f( - 1.0, 1.0, - 1.0 );
-
- /* Right */
- glTexCoord2f( 0.0, 0.0 );
- glVertex3f( 1.0, 1.0, 1.0 );
- glTexCoord2f( 0.0, (float) p_vout->output.i_height );
- glVertex3f( 1.0, - 1.0, 1.0 );
- glTexCoord2f( (float) p_vout->output.i_width,
- (float) p_vout->output.i_height );
- glVertex3f( 1.0, - 1.0, - 1.0 );
- glTexCoord2f( (float) p_vout->output.i_width, 0.0 );
- glVertex3f( 1.0, 1.0, - 1.0 );
-
- /* Top */
- glTexCoord2f( 0.0, 0.0 );
- glVertex3f( - 1.0, 1.0, - 1.0 );
- glTexCoord2f( 0.0, (float) p_vout->output.i_height );
- glVertex3f( - 1.0, 1.0, 1.0 );
- glTexCoord2f( (float) p_vout->output.i_width,
- (float) p_vout->output.i_height );
- glVertex3f( 1.0, 1.0, 1.0 );
- glTexCoord2f( (float) p_vout->output.i_width, 0.0 );
- glVertex3f( 1.0, 1.0, - 1.0 );
-
- /* Bottom */
- glTexCoord2f( 0.0, 0.0 );
- glVertex3f( - 1.0, - 1.0, 1.0 );
- glTexCoord2f( 0.0, (float) p_vout->output.i_height );
- glVertex3f( - 1.0, - 1.0, - 1.0 );
- glTexCoord2f( (float) p_vout->output.i_width,
- (float) p_vout->output.i_height );
- glVertex3f( 1.0, - 1.0, - 1.0 );
- glTexCoord2f( (float) p_vout->output.i_width, 0.0 );
- glVertex3f( 1.0, - 1.0, 1.0 );
- glEnd();
-}
-
-- (void) drawRect: (NSRect) rect
-{
- [currentContext makeCurrentContext];
-
- /* Swap buffers only during the vertical retrace of the monitor.
- http://developer.apple.com/documentation/GraphicsImaging/
- Conceptual/OpenGL/chap5/chapter_5_section_44.html */
- long params[] = { 1 };
- CGLSetParameter( CGLGetCurrentContext(), kCGLCPSwapInterval,
- params );
-
- /* Black background */
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
-
- if( !initDone )
- {
- [currentContext flushBuffer];
- return;
- }
-
- /* Draw */
- glBindTexture( GL_TEXTURE_RECTANGLE_EXT,
- pi_textures[p_vout->p_sys->i_cur_pic] );
- if( i_effect & ( OPENGL_EFFECT_CUBE |
- OPENGL_EFFECT_TRANSPARENT_CUBE ) )
- {
- glRotatef( 1.0, 0.3, 0.5, 0.7 );
- [self drawCube];
- }
- else
- {
- [self drawQuad];
- }